summaryrefslogtreecommitdiff
path: root/webapps
diff options
context:
space:
mode:
authorDerrell Lipman <derrell@samba.org>2007-01-03 20:17:37 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:36:09 -0500
commit626bb8efb0c825f332c937ffaaadc9b402079539 (patch)
tree1c95f69d157b24f64edff470143f5f55a09cfca6 /webapps
parenteeddcf8cc8eb655d7c40f1fd5f7fd422529f4f98 (diff)
downloadsamba-626bb8efb0c825f332c937ffaaadc9b402079539.tar.gz
samba-626bb8efb0c825f332c937ffaaadc9b402079539.tar.bz2
samba-626bb8efb0c825f332c937ffaaadc9b402079539.zip
r20517: re-add cleaned-up webapps
(This used to be commit 5a3d6ad0b7cf0ecf8b57b4088b19f7d4291c990b)
Diffstat (limited to 'webapps')
-rw-r--r--webapps/images/core/alpha.gifbin0 -> 64 bytes
-rw-r--r--webapps/images/core/blank.gifbin0 -> 49 bytes
-rw-r--r--webapps/images/core/brightness.jpgbin0 -> 456 bytes
-rw-r--r--webapps/images/core/brightnesshandle.gifbin0 -> 80 bytes
-rw-r--r--webapps/images/core/dotted.gifbin0 -> 44 bytes
-rw-r--r--webapps/images/core/huesaturation.jpgbin0 -> 6344 bytes
-rw-r--r--webapps/images/core/huesaturationhandle.gifbin0 -> 63 bytes
-rw-r--r--webapps/images/favicon.icobin0 -> 2238 bytes
-rw-r--r--webapps/images/linkpad.gifbin0 -> 270 bytes
-rw-r--r--webapps/images/logo.pngbin0 -> 9329 bytes
-rw-r--r--webapps/images/stripes.pngbin0 -> 209 bytes
-rw-r--r--webapps/index.esp30
-rw-r--r--webapps/install/index.esp20
-rw-r--r--webapps/install/newuser.esp50
-rw-r--r--webapps/install/provision.esp79
-rw-r--r--webapps/install/samba3.esp106
-rw-r--r--webapps/install/vampire.esp120
-rw-r--r--webapps/login.esp59
-rw-r--r--webapps/logout.esp8
-rw-r--r--webapps/menu.js67
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/AUTHORS2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/LICENSE504
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/README2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/RELEASENOTES2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/TODO2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/Makefile294
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/Makefile180
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/ClassViewer.js1589
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/InfoViewer.js35
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/TreeUtil.js356
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/Viewer.js386
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/index.html27
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/css/apiviewer.css263
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class18.gifbin0 -> 590 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract18.gifbin0 -> 608 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract_warning18.gifbin0 -> 630 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static18.gifbin0 -> 609 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static_warning18.gifbin0 -> 631 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_warning18.gifbin0 -> 610 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/close.gifbin0 -> 121 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constant18.gifbin0 -> 123 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constructor18.gifbin0 -> 316 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/event18.gifbin0 -> 91 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_protected18.gifbin0 -> 169 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_public18.gifbin0 -> 279 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/nextlevel.gifbin0 -> 66 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/open.gifbin0 -> 124 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_abstract18.gifbin0 -> 60 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_constructor18.gifbin0 -> 72 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_error18.gifbin0 -> 105 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_inherited18.gifbin0 -> 72 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_overridden18.gifbin0 -> 70 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_static18.gifbin0 -> 57 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_warning18.gifbin0 -> 189 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package18.gifbin0 -> 221 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package_warning18.gifbin0 -> 372 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/property18.gifbin0 -> 106 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/Makefile159
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/AtAGlance.js1303
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/index.html21
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_1.html73
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_2.html172
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_3.html39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_1.html89
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_2.html98
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Button_1.html73
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/CheckBox_1.html104
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorPopup_1.html83
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_1.html29
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_2.html30
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBoxEx_1.html230
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBox_1.html101
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_1.html141
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_2.html186
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/DateChooser_1.html31
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Drag_1.html57
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fields_1.html107
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Flash_1.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1.html26
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/fsm.js297
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/gui.js95
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/main.js11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GalleryList_1.html129
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Gallery_1.html116
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_1.html107
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_2.html153
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_3.html160
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Iframe_1.html71
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Inline_1.html260
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_1.html67
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_2.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_3.html51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_4.html58
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/List_1.html127
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Menu_1.html193
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/NativeWindow_1.html198
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RadioButton_1.html114
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RepeatButton_1.html73
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Resizer_1.html63
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RpcTreeFullControl_1.html194
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Spinner_1.html106
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_1.html72
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_2.html75
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_1.html152
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_2.html127
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_1.html107
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_2.html50
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_1.html252
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_2.html269
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_3.html184
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_4.html196
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolTip_1.html111
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_1.html235
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_2.html270
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_3.html298
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_4.html384
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Tree_1.html191
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Window_1.html308
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file1.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file10.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file2.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file3.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file4.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file5.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file6.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file7.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file8.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file9.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.flabin0 -> 58368 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.swfbin0 -> 10210 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/index.html18
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_1.html57
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_2.html47
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_1.html43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_2.html51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_3.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_4.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_1.html43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_2.html51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_3.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_4.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_5.html50
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/NumberCreate_1.html110
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_1.html57
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_2.html77
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_1.html92
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_2.html88
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_3.html97
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectSize_1.html62
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/Qooxdoo_1.html83
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_1.html95
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_2.html98
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_3.html109
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/TypeCheck_1.html84
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/index.html18
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/Showcase_1.html128
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/index.html18
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_1.html286
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_2.html187
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_3.html322
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_4.html46
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_5.html43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_6.html43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_7.html43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_8.html43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_9.html44
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Border_1.html177
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_1.html283
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_2.html324
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_1.html73
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.html25
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.xml51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.html26
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.xml33
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_4.html42
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Button_1.html44
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CSS_1.html110
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_1.html616
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_3.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_4.html50
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_5.html45
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clipping_1.html76
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_1.html91
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_2.html108
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_1.html235
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_2.html77
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_3.html176
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_1.html102
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_2.html116
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_3.html123
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_4.html41
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_1.html415
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.html46
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.js3867
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_1.html45
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_2.html67
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Cookie_1.html45
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_1.html166
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_2.html128
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_1.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_2.html224
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_3.html140
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_4.html140
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_5.html164
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_6.html71
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_1.html131
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_2.html124
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/EnabledDisabled_1.html230
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FieldSet_1.html141
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Fields_1.html179
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_1.html319
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_2.html193
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_3.html277
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FocusManager_1.html108
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Font_1.html63
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FormUtils_1.html86
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_2.html135
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_3.html178
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Generate_1.html267
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_1.html79
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_10.html94
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_11.html124
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_2.html88
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_3.html82
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_4.html81
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_5.html85
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_6.html109
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_7.html112
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_8.html115
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_9.html120
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_1.html1261
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_2.html1233
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_3.html594
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_1.html142
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_2.html140
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/IconHtml_1.html29
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_1.html114
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_2.html150
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_3.html124
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_4.html39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Keyhandler_1.html117
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_1.html172
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_2.html40
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_3.html177
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_4.html101
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Leak_1.html71
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Link_1.html29
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_1.html57
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_10.html86
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_2.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_3.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_4.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_5.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_6.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_7.html114
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_8.html121
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_9.html119
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_1.html128
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_2.html111
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_3.html55
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_1.html129
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_2.html205
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Node_1.html39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Pollution_1.html271
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_1.html106
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_2.html102
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_1.html116
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_2.html134
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_3.html240
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_4.html470
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_5.html95
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/SplitPane_1.html91
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_1.html50
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_2.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_3.html52
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_4.html53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_5.html55
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_1.html227
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_2.html113
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_3.html39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_4.html193
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_1.html196
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_2.html190
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_3.html126
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_4.html198
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_5.html198
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_6.html222
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_1.html171
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_2.html294
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_3.html201
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_4.html40
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_5.html148
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_6.html231
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_7.html233
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Umlauts_1.html26
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_1.html1257
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_2.html1227
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_3.html552
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_1.html179
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_2.html54
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_3.html99
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_4.html104
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_5.html221
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_6.html109
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/bigFont.css3
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/boldFont.css3
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/cssQuery-p.js6
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/4000kb.xml102321
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/400kb.xml10224
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/40kb.xml1003
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.html11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.js10
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.txt8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.xml11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.html11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.js10
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.txt8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.xml11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.html11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.js10
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.txt8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.xml11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.html11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.js10
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.txt8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.xml11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file1.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file10.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file2.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file3.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file4.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file5.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file6.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file7.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file8.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file9.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.flabin0 -> 58368 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.swfbin0 -> 10210 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/grid_dialog_box.pngbin0 -> 25808 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/index.html19
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/index.html82
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout.css162
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout_ie.css11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.js.in118
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.sh50
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/Makefile167
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js749
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/Settings.js167
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Builder.js478
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Command.js288
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/History.js137
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/NativeWindow.js639
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Timer.js183
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractApplication.js28
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractComponent.js66
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/DummyApplication.js41
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/AbstractInitComponent.js65
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/BasicInitComponent.js53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/InterfaceInitComponent.js181
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Init.js327
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Object.js525
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Target.js299
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Version.js67
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/Pollution.js249
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/TimeTracker.js320
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/AlertAppender.js65
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Appender.js181
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DefaultFilter.js57
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DivAppender.js164
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Filter.js51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/FireBugAppender.js72
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/ForwardAppender.js41
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/LogEventProcessor.js141
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Logger.js374
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/RingBufferAppender.js122
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/WindowAppender.js225
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Dimension.js222
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Element.js74
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ElementFromPoint.js122
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/EventRegistration.js47
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Iframe.js87
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Location.js259
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Node.js38
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Offset.js119
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Scroll.js53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ScrollIntoView.js175
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Style.js122
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/StyleSheet.js308
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Window.js102
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/DragAndDropHandler.js846
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/EventHandler.js1172
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/FocusHandler.js342
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/KeyEventHandler.js725
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DataEvent.js48
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DomEvent.js227
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DragEvent.js155
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/Event.js88
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/FocusEvent.js46
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/KeyEvent.js152
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/MouseEvent.js309
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/Json.js385
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/Preloader.js197
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/PreloaderSystem.js187
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieApi.js139
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieTransport.js181
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/AbstractRemoteTransport.js328
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Exchange.js704
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/IframeTransport.js472
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Request.js545
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/RequestQueue.js392
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Response.js110
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Rpc.js572
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/ScriptTransport.js360
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/XmlHttpTransport.js819
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Array.js158
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Core.js238
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Generics.js142
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/MshtmlEmu.js348
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Number.js48
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Object.js121
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Prototypes.js69
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/String.js158
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/XmlEmu.js188
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AliasManager.js172
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AppearanceManager.js139
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ColorManager.js227
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/IframeManager.js75
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImageManager.js305
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImagePreloaderManager.js82
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/MenuManager.js92
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ObjectManager.js117
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/PopupManager.js77
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ToolTipManager.js191
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js158
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/DomSelectionManager.js242
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/RadioManager.js292
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/SelectionManager.js1433
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeFullControlSelectionManager.js206
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeSelectionManager.js198
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/VirtualSelectionManager.js143
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Http.js31
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Protocol.js35
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/Border.js1184
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderCache.js62
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderObject.js149
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderPresets.js71
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/Color.js542
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorCache.js83
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorObject.js154
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/Font.js218
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontCache.js70
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontObject.js93
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js297
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js488
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js426
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js300
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js863
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js442
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js183
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js100
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js866
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/AppearanceTheme.js164
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/ColorTheme.js132
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/IconTheme.js34
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/WidgetTheme.js34
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/sys/Client.js394
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/appearance/Classic.js2219
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/System.js54
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsClassic.js98
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaBlue.js96
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaGreen.js94
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaSilver.js94
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsRoyale.js95
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/CrystalSvg.js68
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/Nuvola.js66
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/widget/Windows.js68
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Range.js87
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Selection.js120
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/StringBuilder.js146
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Version.js118
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Atom.js397
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/HorizontalSpacer.js31
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Image.js611
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Inline.js37
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Label.js546
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Terminator.js187
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/VerticalSpacer.js31
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorPopup.js387
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorSelector.js1312
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/DateChooser.js518
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocument.js450
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocumentBlocker.js39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Parent.js1207
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js260
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Widget.js5703
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Flash.js468
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Gallery.js556
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/GalleryList.js400
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/HtmlEmbed.js112
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/IconHtmlEmbed.js134
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Iframe.js430
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/LinkEmbed.js88
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/NodeEmbed.js48
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/TextEmbed.js121
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Button.js200
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/CheckBox.js210
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBox.js826
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBoxEx.js1044
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/InputCheckSymbol.js93
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/List.js383
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ListItem.js115
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/PasswordField.js31
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RadioButton.js185
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RepeatButton.js127
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Spinner.js683
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextArea.js53
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextField.js538
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/CheckGroupBox.js39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/GroupBox.js156
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/RadioGroupBox.js39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/BoxLayout.js273
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/CanvasLayout.js45
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/DockLayout.js116
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/FlowLayout.js106
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/GridLayout.js864
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/HorizontalBoxLayout.js29
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/VerticalBoxLayout.js29
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellHtml.js37
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellIconHtml.js39
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellImage.js57
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellLink.js40
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellText.js40
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/Header.js294
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderCell.js255
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderSeparator.js30
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListView.js373
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListViewPane.js556
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Button.js354
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/CheckBox.js85
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Layout.js56
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Menu.js907
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/RadioButton.js118
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Separator.js76
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/Button.js28
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/MenuBar.js28
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractBar.js129
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractButton.js219
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPage.js75
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPageView.js84
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPane.js27
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Bar.js75
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Button.js120
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/ButtonView.js98
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Page.js30
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Pane.js51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Bar.js33
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Button.js189
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Page.js30
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Pane.js33
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/TabView.js86
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/Popup.js329
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/PopupAtom.js51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/ToolTip.js255
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/resizer/Resizer.js417
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/HorizontalSplitPane.js58
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/SplitPane.js759
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/VerticalSplitPane.js58
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractDataCellRenderer.js127
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractTableModel.js150
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/BooleanDataCellRenderer.js48
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CellEditorFactory.js62
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CheckBoxCellEditorFactory.js43
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataCellRenderer.js80
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataRowRenderer.js54
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataCellRenderer.js189
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataRowRenderer.js106
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultHeaderCellRenderer.js63
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/HeaderCellRenderer.js69
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconDataCellRenderer.js182
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconHeaderCellRenderer.js84
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/RemoteTableModel.js435
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionManager.js163
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionModel.js427
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js335
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/Table.js1062
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableColumnModel.js399
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableModel.js243
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePane.js486
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneHeader.js276
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneModel.js179
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneScroller.js1331
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TextFieldCellEditorFactory.js58
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Button.js47
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/CheckBox.js86
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/MenuButton.js258
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Part.js82
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/PartHandle.js35
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/RadioButton.js116
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Separator.js35
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/ToolBar.js242
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/AbstractTreeElement.js502
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/Tree.js398
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFile.js62
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFolder.js605
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/AbstractTreeElement.js529
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/Tree.js539
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFile.js81
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFolder.js651
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeRowStructure.js260
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/window/Window.js1441
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js162
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Compare.js86
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/FormUtil.js109
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Normalization.js56
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Return.js74
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Textile.js178
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Validation.js172
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/DateFormat.js614
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/Format.js51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/NumberFormat.js216
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js1189
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/State.js613
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/Transition.js383
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/example.txt210
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Core.js77
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Namespace.js51
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/README20
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/3d.pngbin0 -> 8913 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/adobe-reader.pngbin0 -> 5207 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/antivirus.pngbin0 -> 13008 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/babelfish.pngbin0 -> 14495 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/back.pngbin0 -> 9721 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/background.pngbin0 -> 10885 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bell.pngbin0 -> 7039 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bitmapgraphics.pngbin0 -> 20479 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/block-device.pngbin0 -> 12036 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bug.pngbin0 -> 18455 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cache.pngbin0 -> 9342 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/camera.pngbin0 -> 8693 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cdrom.pngbin0 -> 10747 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/char-device.pngbin0 -> 10002 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/chart.pngbin0 -> 17519 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/clock.pngbin0 -> 17753 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/colors.pngbin0 -> 13385 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/control-center.pngbin0 -> 12149 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/core.pngbin0 -> 6119 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/date.pngbin0 -> 10272 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/desktop.pngbin0 -> 14491 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/dictionary.pngbin0 -> 14431 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/display.pngbin0 -> 10408 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/down.pngbin0 -> 9606 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/email.pngbin0 -> 13836 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/encrypted.pngbin0 -> 10092 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/energy.pngbin0 -> 13998 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/error.pngbin0 -> 8865 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/exec.pngbin0 -> 14999 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/favourite.pngbin0 -> 11686 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/file-print.pngbin0 -> 5110 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/floppy.pngbin0 -> 9510 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/flowchart.pngbin0 -> 17464 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-favorite.pngbin0 -> 15505 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-important.pngbin0 -> 15149 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-locked.pngbin0 -> 16252 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-open.pngbin0 -> 12755 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder.pngbin0 -> 14447 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/fonts.pngbin0 -> 4531 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/forward.pngbin0 -> 9526 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/graphics.pngbin0 -> 13188 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/harddrive.pngbin0 -> 11286 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/hardware-info.pngbin0 -> 11501 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/help-center.pngbin0 -> 13998 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/home.pngbin0 -> 11267 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/info.pngbin0 -> 13104 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/joystick.pngbin0 -> 10127 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/keyboard-layout.pngbin0 -> 13172 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/locale.pngbin0 -> 12910 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/look-and-feel.pngbin0 -> 12473 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mac.pngbin0 -> 10470 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-archive.pngbin0 -> 10585 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-binary.pngbin0 -> 9653 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-calendar.pngbin0 -> 14529 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-card.pngbin0 -> 14498 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-document.pngbin0 -> 17351 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-html.pngbin0 -> 12844 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-image.pngbin0 -> 11314 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-manual.pngbin0 -> 10414 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-multimedia.pngbin0 -> 11121 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-pdf.pngbin0 -> 9018 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-quicktime.pngbin0 -> 13395 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-rpm.pngbin0 -> 4824 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-script.pngbin0 -> 11691 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-shellscript.pngbin0 -> 8024 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-sourcecode.pngbin0 -> 9718 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-spreadsheet.pngbin0 -> 6482 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-text.pngbin0 -> 2746 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-video.pngbin0 -> 11720 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/modem.pngbin0 -> 15252 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mouse.pngbin0 -> 9177 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/movieplayer.pngbin0 -> 9111 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/multimedia.pngbin0 -> 12789 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mycomputer.pngbin0 -> 11299 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/netscape.pngbin0 -> 11824 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/network.pngbin0 -> 16916 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/notes.pngbin0 -> 18237 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/organizer.pngbin0 -> 17233 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/paint.pngbin0 -> 16208 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/partitions.pngbin0 -> 16732 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/password.pngbin0 -> 12716 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/pda.pngbin0 -> 8240 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/penguin.pngbin0 -> 9799 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/presentation.pngbin0 -> 14055 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/printer.pngbin0 -> 5860 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/reload.pngbin0 -> 9077 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/scanner.pngbin0 -> 9044 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/services.pngbin0 -> 14570 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/settings.pngbin0 -> 14109 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tablet.pngbin0 -> 15628 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/terminal.pngbin0 -> 5284 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/toys.pngbin0 -> 1919 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-empty.pngbin0 -> 8361 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-full.pngbin0 -> 10684 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tux.pngbin0 -> 9438 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tv.pngbin0 -> 6202 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/up.pngbin0 -> 9783 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/user.pngbin0 -> 15977 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/utilities.pngbin0 -> 19941 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/vectorgraphics.pngbin0 -> 9930 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/wordprocessor.pngbin0 -> 13612 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/3d.pngbin0 -> 834 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/accessibility.pngbin0 -> 1038 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/adobe-reader.pngbin0 -> 690 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/alarm.pngbin0 -> 1036 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/antivirus.pngbin0 -> 788 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appearance.pngbin0 -> 1023 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/applications.pngbin0 -> 973 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/apply.pngbin0 -> 661 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appointment.pngbin0 -> 557 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/attach.pngbin0 -> 827 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/babelfish.pngbin0 -> 790 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/back.pngbin0 -> 868 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/background.pngbin0 -> 733 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bell.pngbin0 -> 567 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bitmapgraphics.pngbin0 -> 980 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/block-device.pngbin0 -> 794 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-add.pngbin0 -> 978 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-folder.pngbin0 -> 3334 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-toolbar.pngbin0 -> 3369 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark.pngbin0 -> 690 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bug.pngbin0 -> 1010 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-cancel.pngbin0 -> 963 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-ok.pngbin0 -> 661 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cache.pngbin0 -> 823 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/calculator.pngbin0 -> 983 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cam.pngbin0 -> 1073 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/camera.pngbin0 -> 656 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cancel.pngbin0 -> 821 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cdrom.pngbin0 -> 834 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/char-device.pngbin0 -> 778 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/chart.pngbin0 -> 1013 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clipboard.pngbin0 -> 971 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clock.pngbin0 -> 875 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-fill.pngbin0 -> 732 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-line.pngbin0 -> 642 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/colors.pngbin0 -> 857 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/comment.pngbin0 -> 468 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/configure.pngbin0 -> 1055 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-creating.pngbin0 -> 1099 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-established.pngbin0 -> 1003 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-no.pngbin0 -> 1023 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/contents.pngbin0 -> 1111 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/context-help.pngbin0 -> 948 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/control-center.pngbin0 -> 887 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cookie.pngbin0 -> 996 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/core.pngbin0 -> 807 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/database.pngbin0 -> 683 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/date.pngbin0 -> 964 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/decrypted.pngbin0 -> 923 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-cell.pngbin0 -> 560 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-col.pngbin0 -> 351 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-row.pngbin0 -> 363 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table.pngbin0 -> 427 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/desktop.pngbin0 -> 757 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/devices.pngbin0 -> 879 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/dictionary.pngbin0 -> 779 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/display.pngbin0 -> 820 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/documentinfo.pngbin0 -> 671 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/down.pngbin0 -> 876 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-copy.pngbin0 -> 777 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-cut.pngbin0 -> 1112 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-delete.pngbin0 -> 892 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-paste.pngbin0 -> 997 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit.pngbin0 -> 946 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/editor.pngbin0 -> 976 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/email.pngbin0 -> 822 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/emoticon.pngbin0 -> 869 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/encrypted.pngbin0 -> 791 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/energy.pngbin0 -> 874 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/error.pngbin0 -> 792 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exec.pngbin0 -> 1109 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exit.pngbin0 -> 882 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favorites.pngbin0 -> 916 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favourite.pngbin0 -> 723 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-find.pngbin0 -> 1070 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-manager.pngbin0 -> 995 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-new.pngbin0 -> 725 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-open.pngbin0 -> 1080 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-print.pngbin0 -> 653 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save-as.pngbin0 -> 1104 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save.pngbin0 -> 838 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fileshare.pngbin0 -> 942 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/find.pngbin0 -> 1223 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flag.pngbin0 -> 745 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/floppy.pngbin0 -> 730 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flowchart.pngbin0 -> 615 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-favorite.pngbin0 -> 652 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-important.pngbin0 -> 671 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-locked.pngbin0 -> 511 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-open.pngbin0 -> 738 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder.pngbin0 -> 646 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-down.pngbin0 -> 392 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-up.pngbin0 -> 384 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fonts.pngbin0 -> 710 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-decrease-indent.pngbin0 -> 472 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-increase-indent.pngbin0 -> 472 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/forward.pngbin0 -> 877 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/funct.pngbin0 -> 454 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/games.pngbin0 -> 1025 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/goto.pngbin0 -> 592 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/graphics.pngbin0 -> 638 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/group-event.pngbin0 -> 1059 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/harddrive.pngbin0 -> 988 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware-info.pngbin0 -> 853 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware.pngbin0 -> 661 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help-center.pngbin0 -> 865 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help.pngbin0 -> 997 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history-clear.pngbin0 -> 1084 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history.pngbin0 -> 1049 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/home.pngbin0 -> 713 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/icons.pngbin0 -> 927 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/iconthemes.pngbin0 -> 828 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/idea.pngbin0 -> 829 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/important.pngbin0 -> 813 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/inbox.pngbin0 -> 532 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/info.pngbin0 -> 891 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-col.pngbin0 -> 513 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-row.pngbin0 -> 523 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table.pngbin0 -> 263 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-available.pngbin0 -> 881 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-away.pngbin0 -> 938 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/joystick.pngbin0 -> 730 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/keyboard-layout.pngbin0 -> 871 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/launch.pngbin0 -> 828 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/locale.pngbin0 -> 811 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/look-and-feel.pngbin0 -> 842 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mac.pngbin0 -> 814 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/magnifier.pngbin0 -> 1001 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-delete.pngbin0 -> 1042 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-find.pngbin0 -> 1138 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-forward.pngbin0 -> 1052 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-get.pngbin0 -> 1058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-new.pngbin0 -> 956 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply-all.pngbin0 -> 1112 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply.pngbin0 -> 1061 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-send.pngbin0 -> 1061 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail.pngbin0 -> 1001 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/memory.pngbin0 -> 931 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-archive.pngbin0 -> 863 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-binary.pngbin0 -> 752 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-calendar.pngbin0 -> 873 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-card.pngbin0 -> 851 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-color.pngbin0 -> 929 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-document.pngbin0 -> 692 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-html.pngbin0 -> 847 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-image.pngbin0 -> 760 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-manual.pngbin0 -> 827 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-multimedia.pngbin0 -> 771 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-pdf.pngbin0 -> 747 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-quicktime.pngbin0 -> 842 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-rpm.pngbin0 -> 846 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-script.pngbin0 -> 854 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-shellscript.pngbin0 -> 731 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-sourcecode.pngbin0 -> 721 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-spreadsheet.pngbin0 -> 623 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-text.pngbin0 -> 579 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-video.pngbin0 -> 784 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/misc.pngbin0 -> 1114 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mixer.pngbin0 -> 988 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/modem.pngbin0 -> 695 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mouse.pngbin0 -> 751 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mousecursor.pngbin0 -> 481 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/movieplayer.pngbin0 -> 667 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/multimedia.pngbin0 -> 781 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mycomputer.pngbin0 -> 832 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/netscape.pngbin0 -> 936 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/network.pngbin0 -> 918 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/no.pngbin0 -> 821 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notes.pngbin0 -> 749 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notify.pngbin0 -> 657 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/ok.pngbin0 -> 661 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/opera.pngbin0 -> 904 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/organizer.pngbin0 -> 1046 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/outbox.pngbin0 -> 528 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/paint.pngbin0 -> 851 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/partitions.pngbin0 -> 882 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/password.pngbin0 -> 693 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pda.pngbin0 -> 673 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/penguin.pngbin0 -> 807 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pipe.pngbin0 -> 973 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/presentation.pngbin0 -> 1049 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/printer.pngbin0 -> 992 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/queue.pngbin0 -> 1043 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/redo.pngbin0 -> 727 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/reload.pngbin0 -> 812 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/remove-comment.pngbin0 -> 619 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/rotate.pngbin0 -> 1041 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/run.pngbin0 -> 1114 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/scanner.pngbin0 -> 809 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/search.pngbin0 -> 1023 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/server.pngbin0 -> 458 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/services.pngbin0 -> 920 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/settings.pngbin0 -> 703 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/signature.pngbin0 -> 971 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/sound.pngbin0 -> 988 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/spellcheck.pngbin0 -> 574 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/stop.pngbin0 -> 911 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/style.pngbin0 -> 907 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/system.pngbin0 -> 903 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-duplicate.pngbin0 -> 622 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new-raised.pngbin0 -> 555 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new.pngbin0 -> 478 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-remove.pngbin0 -> 596 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tablet.pngbin0 -> 831 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/terminal.pngbin0 -> 666 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-bottom.pngbin0 -> 441 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-color.pngbin0 -> 479 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-strike.pngbin0 -> 373 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-sub.pngbin0 -> 542 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-super.pngbin0 -> 588 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-top.pngbin0 -> 427 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/themes.pngbin0 -> 944 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/toys.pngbin0 -> 894 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trash.pngbin0 -> 899 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-empty.pngbin0 -> 691 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-full.pngbin0 -> 692 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tux.pngbin0 -> 687 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tv.pngbin0 -> 647 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/undo.pngbin0 -> 692 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/up.pngbin0 -> 871 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/user.pngbin0 -> 868 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/utilities.pngbin0 -> 803 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/vectorgraphics.pngbin0 -> 813 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-bottom.pngbin0 -> 914 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-choose.pngbin0 -> 907 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-detailed.pngbin0 -> 867 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-icon.pngbin0 -> 917 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-left-right.pngbin0 -> 708 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-multicolumn.pngbin0 -> 939 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-remove.pngbin0 -> 327 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-right.pngbin0 -> 924 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-sidetree.pngbin0 -> 900 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-text.pngbin0 -> 866 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-top-bottom.pngbin0 -> 735 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-tree.pngbin0 -> 894 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-fit.pngbin0 -> 1125 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-minus.pngbin0 -> 1098 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-original.pngbin0 -> 1128 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-plus.pngbin0 -> 1127 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag.pngbin0 -> 1023 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wizard.pngbin0 -> 313 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wordprocessor.pngbin0 -> 958 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/adobe-reader.pngbin0 -> 1214 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/alarm.pngbin0 -> 1554 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/antivirus.pngbin0 -> 1362 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appearance.pngbin0 -> 1859 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appointment.pngbin0 -> 837 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/attach.pngbin0 -> 871 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/babelfish.pngbin0 -> 1525 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/back.pngbin0 -> 1282 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/background.pngbin0 -> 1393 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bell.pngbin0 -> 1022 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bitmapgraphics.pngbin0 -> 1712 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/block-device.pngbin0 -> 1566 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark-add.pngbin0 -> 961 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark.pngbin0 -> 996 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-cancel.pngbin0 -> 883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-ok.pngbin0 -> 769 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cache.pngbin0 -> 1559 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/camera.pngbin0 -> 1128 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cancel.pngbin0 -> 883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cdrom.pngbin0 -> 1260 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/char-device.pngbin0 -> 1267 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/clock.pngbin0 -> 1650 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-fill.pngbin0 -> 1097 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-line.pngbin0 -> 910 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/colors.pngbin0 -> 1622 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/configure.pngbin0 -> 3797 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-creating.pngbin0 -> 1309 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-established.pngbin0 -> 1198 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-no.pngbin0 -> 1090 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/contents.pngbin0 -> 1300 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/control-center.pngbin0 -> 1707 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/core.pngbin0 -> 1018 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/date.pngbin0 -> 1499 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/decrypted.pngbin0 -> 939 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-col.pngbin0 -> 412 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-row.pngbin0 -> 412 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/desktop.pngbin0 -> 1536 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/dictionary.pngbin0 -> 1416 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/display.pngbin0 -> 1484 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/down.pngbin0 -> 1290 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-copy.pngbin0 -> 590 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-cut.pngbin0 -> 1196 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-delete.pngbin0 -> 951 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-paste.pngbin0 -> 881 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit.pngbin0 -> 1076 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/effect.pngbin0 -> 887 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/email.pngbin0 -> 1537 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/encrypted.pngbin0 -> 1246 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/energy.pngbin0 -> 1819 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/error.pngbin0 -> 1472 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exec.pngbin0 -> 2058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exit.pngbin0 -> 1398 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/favourite.pngbin0 -> 1318 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-find.pngbin0 -> 1393 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-new.pngbin0 -> 692 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-open.pngbin0 -> 1356 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-print.pngbin0 -> 900 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save-as.pngbin0 -> 1732 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save.pngbin0 -> 1531 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/find.pngbin0 -> 1382 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/floppy.pngbin0 -> 1230 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/flowchart.pngbin0 -> 1683 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-favorite.pngbin0 -> 1499 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-important.pngbin0 -> 1467 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-locked.pngbin0 -> 1552 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-open.pngbin0 -> 1109 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder.pngbin0 -> 1018 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-down.pngbin0 -> 521 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-up.pngbin0 -> 494 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/fonts.pngbin0 -> 1190 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-decrease-indent.pngbin0 -> 542 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-increase-indent.pngbin0 -> 535 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/forward.pngbin0 -> 1281 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/funct.pngbin0 -> 609 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/graphics.pngbin0 -> 1313 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/harddrive.pngbin0 -> 1522 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/hardware-info.pngbin0 -> 1712 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help-center.pngbin0 -> 1462 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help.pngbin0 -> 1136 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/history.pngbin0 -> 1515 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/home.pngbin0 -> 1381 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/idea.pngbin0 -> 893 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/inbox.pngbin0 -> 1536 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/info.pngbin0 -> 1383 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-col.pngbin0 -> 583 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-row.pngbin0 -> 583 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-available.pngbin0 -> 1303 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-away.pngbin0 -> 1364 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/joystick.pngbin0 -> 1270 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/keyboard-layout.pngbin0 -> 1703 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/launch.pngbin0 -> 1263 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/locale.pngbin0 -> 1559 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/look-and-feel.pngbin0 -> 1623 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mac.pngbin0 -> 1657 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-delete.pngbin0 -> 1374 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-find.pngbin0 -> 1570 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-forward.pngbin0 -> 1391 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-get.pngbin0 -> 1450 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-new.pngbin0 -> 1066 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply-all.pngbin0 -> 1563 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply.pngbin0 -> 1437 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-send.pngbin0 -> 1428 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail.pngbin0 -> 1270 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-archive.pngbin0 -> 1261 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-binary.pngbin0 -> 1183 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-calendar.pngbin0 -> 1355 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-card.pngbin0 -> 1304 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-document.pngbin0 -> 1085 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-html.pngbin0 -> 1336 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-image.pngbin0 -> 1140 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-manual.pngbin0 -> 1275 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-multimedia.pngbin0 -> 1166 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-pdf.pngbin0 -> 1131 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-quicktime.pngbin0 -> 1332 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-rpm.pngbin0 -> 1107 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-script.pngbin0 -> 1218 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-shellscript.pngbin0 -> 1053 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-sourcecode.pngbin0 -> 1104 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-spreadsheet.pngbin0 -> 1082 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-text.pngbin0 -> 767 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-video.pngbin0 -> 1109 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/misc.pngbin0 -> 1354 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/modem.pngbin0 -> 1728 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mouse.pngbin0 -> 1249 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/movieplayer.pngbin0 -> 1257 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/multimedia.pngbin0 -> 1375 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mycomputer.pngbin0 -> 1492 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/netscape.pngbin0 -> 1664 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/network.pngbin0 -> 1827 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/ok.pngbin0 -> 740 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/outbox.pngbin0 -> 1534 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/paint.pngbin0 -> 1601 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/partitions.pngbin0 -> 1874 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/password.pngbin0 -> 1230 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/pda.pngbin0 -> 1388 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/penguin.pngbin0 -> 1311 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/printer.pngbin0 -> 1045 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/queue.pngbin0 -> 1312 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/redo.pngbin0 -> 739 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/reload.pngbin0 -> 1157 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/run.pngbin0 -> 1354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/scanner.pngbin0 -> 1408 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/search.pngbin0 -> 1169 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/server.pngbin0 -> 1367 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/services.pngbin0 -> 1740 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/settings.pngbin0 -> 1232 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/signature.pngbin0 -> 1192 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/spellcheck.pngbin0 -> 890 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/stop.pngbin0 -> 974 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tablet.pngbin0 -> 1521 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/terminal.pngbin0 -> 961 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/text-strike.pngbin0 -> 409 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/toys.pngbin0 -> 1790 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-empty.pngbin0 -> 1383 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-full.pngbin0 -> 1348 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tux.pngbin0 -> 1201 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tv.pngbin0 -> 1318 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/undo.pngbin0 -> 681 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/up.pngbin0 -> 1273 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/user.pngbin0 -> 1644 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/utilities.pngbin0 -> 1446 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/vectorgraphics.pngbin0 -> 1244 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-bottom.pngbin0 -> 839 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-choose.pngbin0 -> 711 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-detailed.pngbin0 -> 697 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-icon.pngbin0 -> 742 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-left-right.pngbin0 -> 657 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-multicolumn.pngbin0 -> 750 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-remove.pngbin0 -> 369 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-right.pngbin0 -> 828 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-sidetree.pngbin0 -> 667 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-text.pngbin0 -> 801 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-top-bottom.pngbin0 -> 649 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-tree.pngbin0 -> 694 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-fit.pngbin0 -> 1222 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-minus.pngbin0 -> 1195 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-original.pngbin0 -> 1245 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-plus.pngbin0 -> 1257 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag.pngbin0 -> 1169 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/wizard.pngbin0 -> 397 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/3d.pngbin0 -> 1894 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/accessibility.pngbin0 -> 1860 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/adobe-reader.pngbin0 -> 1519 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/alarm.pngbin0 -> 2521 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/antivirus.pngbin0 -> 2074 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appearance.pngbin0 -> 2521 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/applications.pngbin0 -> 2358 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appointment.pngbin0 -> 1660 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/attach.pngbin0 -> 1154 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/babelfish.pngbin0 -> 2252 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/back.pngbin0 -> 2230 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/background.pngbin0 -> 1787 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bell.pngbin0 -> 1268 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bitmapgraphics.pngbin0 -> 2952 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/block-device.pngbin0 -> 2081 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark-add.pngbin0 -> 1793 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark.pngbin0 -> 1454 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bug.pngbin0 -> 2918 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-cancel.pngbin0 -> 1468 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-ok.pngbin0 -> 1393 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cache.pngbin0 -> 2063 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/calculator.pngbin0 -> 2701 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cam.pngbin0 -> 2567 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/camera.pngbin0 -> 1510 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cdrom.pngbin0 -> 2047 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/char-device.pngbin0 -> 1760 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/chart.pngbin0 -> 2872 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clipboard.pngbin0 -> 1673 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clock.pngbin0 -> 2458 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/colors.pngbin0 -> 2295 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/configure.pngbin0 -> 1839 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-creating.pngbin0 -> 1907 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-established.pngbin0 -> 1782 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-no.pngbin0 -> 1561 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/contents.pngbin0 -> 2467 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/control-center.pngbin0 -> 2375 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cookie.pngbin0 -> 2978 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/core.pngbin0 -> 1672 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/date.pngbin0 -> 2249 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/decrypted.pngbin0 -> 1624 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-col.pngbin0 -> 571 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-row.pngbin0 -> 572 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/desktop.pngbin0 -> 2061 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/devices.pngbin0 -> 1825 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/dictionary.pngbin0 -> 2101 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/display.pngbin0 -> 2006 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/down.pngbin0 -> 2248 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-copy.pngbin0 -> 3781 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-cut.pngbin0 -> 2169 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-delete.pngbin0 -> 1368 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-paste.pngbin0 -> 1458 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit.pngbin0 -> 1627 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/editor.pngbin0 -> 2693 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/email.pngbin0 -> 2211 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/encrypted.pngbin0 -> 1997 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/energy.pngbin0 -> 2464 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/error.pngbin0 -> 1890 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exec.pngbin0 -> 2349 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exit.pngbin0 -> 1610 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favorites.pngbin0 -> 1636 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favourite.pngbin0 -> 1742 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-find.pngbin0 -> 2161 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-manager.pngbin0 -> 2691 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-new.pngbin0 -> 1177 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-open.pngbin0 -> 2232 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-print.pngbin0 -> 1463 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save-as.pngbin0 -> 2069 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save.pngbin0 -> 1348 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fileshare.pngbin0 -> 2422 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/find.pngbin0 -> 2396 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/floppy.pngbin0 -> 2122 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/flowchart.pngbin0 -> 2723 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-favorite.pngbin0 -> 2235 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-important.pngbin0 -> 2251 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-locked.pngbin0 -> 2288 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-open.pngbin0 -> 2214 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder.pngbin0 -> 2445 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fonts.pngbin0 -> 1468 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/forward.pngbin0 -> 2257 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/funct.pngbin0 -> 874 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/games.pngbin0 -> 2307 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/goto.pngbin0 -> 1183 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/graphics.pngbin0 -> 1688 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/harddrive.pngbin0 -> 2452 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware-info.pngbin0 -> 2197 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware.pngbin0 -> 1619 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help-center.pngbin0 -> 2291 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help.pngbin0 -> 1683 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/home.pngbin0 -> 2088 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/icons.pngbin0 -> 2853 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/iconthemes.pngbin0 -> 2386 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/important.pngbin0 -> 1692 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/inbox.pngbin0 -> 2641 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/info.pngbin0 -> 2512 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-col.pngbin0 -> 750 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-row.pngbin0 -> 795 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-available.pngbin0 -> 1902 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-away.pngbin0 -> 1968 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/joystick.pngbin0 -> 1797 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/keyboard-layout.pngbin0 -> 2413 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/launch.pngbin0 -> 2288 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/locale.pngbin0 -> 2252 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/look-and-feel.pngbin0 -> 2135 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mac.pngbin0 -> 2040 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/magnifier.pngbin0 -> 1964 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-delete.pngbin0 -> 2351 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-find.pngbin0 -> 2804 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-get.pngbin0 -> 2433 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-new.pngbin0 -> 2028 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-send.pngbin0 -> 2447 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail.pngbin0 -> 2211 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/memory.pngbin0 -> 2205 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-archive.pngbin0 -> 2242 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-binary.pngbin0 -> 2015 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-calendar.pngbin0 -> 2520 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-card.pngbin0 -> 2561 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-document.pngbin0 -> 1956 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-html.pngbin0 -> 2444 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-image.pngbin0 -> 1892 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-manual.pngbin0 -> 2208 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-multimedia.pngbin0 -> 1950 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-pdf.pngbin0 -> 1943 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-quicktime.pngbin0 -> 2420 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-rpm.pngbin0 -> 1783 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-script.pngbin0 -> 2302 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-shellscript.pngbin0 -> 1755 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-sourcecode.pngbin0 -> 1884 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-spreadsheet.pngbin0 -> 1740 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-text.pngbin0 -> 1069 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-video.pngbin0 -> 2028 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/misc.pngbin0 -> 2349 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mixer.pngbin0 -> 2465 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/modem.pngbin0 -> 1906 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mouse.pngbin0 -> 1861 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/movieplayer.pngbin0 -> 1736 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/multimedia.pngbin0 -> 2186 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mycomputer.pngbin0 -> 2064 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/netscape.pngbin0 -> 2432 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/network.pngbin0 -> 2637 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notes.pngbin0 -> 2740 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notify.pngbin0 -> 1488 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/opera.pngbin0 -> 2218 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/organizer.pngbin0 -> 2502 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/outbox.pngbin0 -> 2671 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/paint.pngbin0 -> 2321 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/partitions.pngbin0 -> 2481 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/password.pngbin0 -> 1799 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pda.pngbin0 -> 1692 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/penguin.pngbin0 -> 1976 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pipe.pngbin0 -> 2404 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/presentation.pngbin0 -> 2585 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/printer.pngbin0 -> 1331 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/queue.pngbin0 -> 2199 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/redo.pngbin0 -> 1236 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/reload.pngbin0 -> 1969 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/run.pngbin0 -> 2349 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/scanner.pngbin0 -> 1863 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/search.pngbin0 -> 1983 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/server.pngbin0 -> 2111 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/services.pngbin0 -> 2513 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/settings.pngbin0 -> 1789 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/sound.pngbin0 -> 2465 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/stop.pngbin0 -> 4136 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/style.pngbin0 -> 1883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/system.pngbin0 -> 2381 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tablet.pngbin0 -> 2289 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/terminal.pngbin0 -> 2058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/themes.pngbin0 -> 1966 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/toys.pngbin0 -> 2604 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-empty.pngbin0 -> 1715 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-full.pngbin0 -> 1865 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tux.pngbin0 -> 1790 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tv.pngbin0 -> 1509 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/undo.pngbin0 -> 1178 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/up.pngbin0 -> 2234 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/user.pngbin0 -> 2280 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/utilities.pngbin0 -> 2259 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/vectorgraphics.pngbin0 -> 2111 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-bottom.pngbin0 -> 1204 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-choose.pngbin0 -> 1066 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-detailed.pngbin0 -> 1012 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-icon.pngbin0 -> 1093 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-left-right.pngbin0 -> 954 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-multicolumn.pngbin0 -> 1069 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-remove.pngbin0 -> 444 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-right.pngbin0 -> 1219 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-sidetree.pngbin0 -> 930 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-text.pngbin0 -> 952 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-top-bottom.pngbin0 -> 906 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-tree.pngbin0 -> 1047 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-fit.pngbin0 -> 2011 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-minus.pngbin0 -> 1998 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-original.pngbin0 -> 2037 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-plus.pngbin0 -> 2025 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag.pngbin0 -> 1983 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/wordprocessor.pngbin0 -> 2357 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/3d.pngbin0 -> 3105 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/accessibility.pngbin0 -> 2729 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/adobe-reader.pngbin0 -> 2506 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/alarm.pngbin0 -> 4300 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/antivirus.pngbin0 -> 3928 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/applications.pngbin0 -> 3839 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/babelfish.pngbin0 -> 3843 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/back.pngbin0 -> 3862 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/background.pngbin0 -> 3242 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bell.pngbin0 -> 2287 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bitmapgraphics.pngbin0 -> 5454 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/block-device.pngbin0 -> 3668 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bug.pngbin0 -> 5423 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cache.pngbin0 -> 3350 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/calculator.pngbin0 -> 4734 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/camera.pngbin0 -> 2713 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cdrom.pngbin0 -> 3376 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/char-device.pngbin0 -> 3105 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/chart.pngbin0 -> 5164 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clipboard.pngbin0 -> 2575 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clock.pngbin0 -> 4736 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/colors.pngbin0 -> 4226 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/control-center.pngbin0 -> 4134 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/core.pngbin0 -> 2861 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/date.pngbin0 -> 4083 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/desktop.pngbin0 -> 3923 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/devices.pngbin0 -> 3452 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/dictionary.pngbin0 -> 3891 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/display.pngbin0 -> 3362 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/down.pngbin0 -> 3899 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/editor.pngbin0 -> 5434 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/email.pngbin0 -> 3964 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/encrypted.pngbin0 -> 3250 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/energy.pngbin0 -> 4398 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/error.pngbin0 -> 3592 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/exec.pngbin0 -> 3900 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favorites.pngbin0 -> 2663 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favourite.pngbin0 -> 3103 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-manager.pngbin0 -> 4693 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-print.pngbin0 -> 2230 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fileshare.pngbin0 -> 4552 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/floppy.pngbin0 -> 3833 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/flowchart.pngbin0 -> 5012 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-favorite.pngbin0 -> 4004 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-important.pngbin0 -> 4295 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-locked.pngbin0 -> 4419 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-open.pngbin0 -> 3752 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder.pngbin0 -> 4113 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fonts.pngbin0 -> 2177 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/forward.pngbin0 -> 3919 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/games.pngbin0 -> 3752 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/graphics.pngbin0 -> 3136 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/harddrive.pngbin0 -> 4249 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware-info.pngbin0 -> 3953 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware.pngbin0 -> 2716 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/help-center.pngbin0 -> 4031 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/home.pngbin0 -> 3719 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/icons.pngbin0 -> 4794 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/iconthemes.pngbin0 -> 3875 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/important.pngbin0 -> 2296 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/inbox.pngbin0 -> 4212 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/info.pngbin0 -> 4090 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-available.pngbin0 -> 3107 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-away.pngbin0 -> 3588 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/joystick.pngbin0 -> 3068 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/keyboard-layout.pngbin0 -> 4266 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/locale.pngbin0 -> 4018 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/look-and-feel.pngbin0 -> 3829 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mac.pngbin0 -> 3488 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/magnifier.pngbin0 -> 3086 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/memory.pngbin0 -> 4100 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-archive.pngbin0 -> 3501 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-binary.pngbin0 -> 3178 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-calendar.pngbin0 -> 4172 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-card.pngbin0 -> 4235 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-document.pngbin0 -> 3271 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-html.pngbin0 -> 3931 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-image.pngbin0 -> 3102 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-manual.pngbin0 -> 3548 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-multimedia.pngbin0 -> 3084 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-pdf.pngbin0 -> 3069 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-quicktime.pngbin0 -> 4086 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-rpm.pngbin0 -> 2936 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-script.pngbin0 -> 3795 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-shellscript.pngbin0 -> 2658 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-sourcecode.pngbin0 -> 2888 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-spreadsheet.pngbin0 -> 2663 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-text.pngbin0 -> 1623 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-video.pngbin0 -> 3310 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mixer.pngbin0 -> 3972 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/modem.pngbin0 -> 3502 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mouse.pngbin0 -> 3054 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/movieplayer.pngbin0 -> 3378 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/multimedia.pngbin0 -> 4183 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mycomputer.pngbin0 -> 3516 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/netscape.pngbin0 -> 4220 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/network.pngbin0 -> 4737 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notes.pngbin0 -> 5229 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notify.pngbin0 -> 2357 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/opera.pngbin0 -> 4032 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/organizer.pngbin0 -> 4593 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/outbox.pngbin0 -> 4132 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/paint.pngbin0 -> 4346 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/partitions.pngbin0 -> 4689 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/password.pngbin0 -> 3316 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pda.pngbin0 -> 2843 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/penguin.pngbin0 -> 3410 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pipe.pngbin0 -> 4060 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/presentation.pngbin0 -> 4558 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/printer.pngbin0 -> 2109 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/reload.pngbin0 -> 3354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/scanner.pngbin0 -> 3090 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/server.pngbin0 -> 2618 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/services.pngbin0 -> 4715 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/settings.pngbin0 -> 3750 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/style.pngbin0 -> 3110 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/system.pngbin0 -> 4135 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tablet.pngbin0 -> 4259 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/terminal.pngbin0 -> 2009 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/themes.pngbin0 -> 3115 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/toys.pngbin0 -> 4840 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-empty.pngbin0 -> 3015 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-full.pngbin0 -> 3356 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tux.pngbin0 -> 3076 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tv.pngbin0 -> 2429 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/up.pngbin0 -> 3893 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/user.pngbin0 -> 4151 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/utilities.pngbin0 -> 4605 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/vectorgraphics.pngbin0 -> 3336 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/wordprocessor.pngbin0 -> 4072 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/3d.pngbin0 -> 4496 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/adobe-reader.pngbin0 -> 3304 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/antivirus.pngbin0 -> 5706 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/applications.pngbin0 -> 6179 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/babelfish.pngbin0 -> 5694 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/back.pngbin0 -> 5423 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/background.pngbin0 -> 4447 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bell.pngbin0 -> 3238 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bitmapgraphics.pngbin0 -> 8444 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/block-device.pngbin0 -> 5228 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bug.pngbin0 -> 8301 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cache.pngbin0 -> 4681 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/calculator.pngbin0 -> 6760 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/camera.pngbin0 -> 3825 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cdrom.pngbin0 -> 4848 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/char-device.pngbin0 -> 4394 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/chart.pngbin0 -> 7831 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clipboard.pngbin0 -> 3224 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clock.pngbin0 -> 7240 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/colors.pngbin0 -> 6160 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/control-center.pngbin0 -> 5941 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/core.pngbin0 -> 3718 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/date.pngbin0 -> 5746 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/desktop.pngbin0 -> 5834 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/devices.pngbin0 -> 4255 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/dictionary.pngbin0 -> 5901 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/display.pngbin0 -> 4691 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/down.pngbin0 -> 5487 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/editor.pngbin0 -> 8202 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/email.pngbin0 -> 5847 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/encrypted.pngbin0 -> 4126 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/energy.pngbin0 -> 6462 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/error.pngbin0 -> 4569 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/exec.pngbin0 -> 6053 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/favourite.pngbin0 -> 4483 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-manager.pngbin0 -> 6490 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-print.pngbin0 -> 3006 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fileshare.pngbin0 -> 5431 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/floppy.pngbin0 -> 4775 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/flowchart.pngbin0 -> 7700 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-favorite.pngbin0 -> 6061 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-important.pngbin0 -> 6459 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-locked.pngbin0 -> 6713 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-open.pngbin0 -> 5651 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder.pngbin0 -> 5913 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fonts.pngbin0 -> 2896 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/forward.pngbin0 -> 5382 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/games.pngbin0 -> 5444 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/graphics.pngbin0 -> 4864 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/harddrive.pngbin0 -> 5909 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware-info.pngbin0 -> 5648 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware.pngbin0 -> 3847 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/help-center.pngbin0 -> 5990 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/home.pngbin0 -> 5212 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/icons.pngbin0 -> 7051 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/important.pngbin0 -> 2854 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/info.pngbin0 -> 5141 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/joystick.pngbin0 -> 4439 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/keyboard-layout.pngbin0 -> 6211 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/locale.pngbin0 -> 5906 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/look-and-feel.pngbin0 -> 5513 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mac.pngbin0 -> 4898 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/magnifier.pngbin0 -> 5006 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/memory.pngbin0 -> 6001 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-archive.pngbin0 -> 4273 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-binary.pngbin0 -> 4338 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-calendar.pngbin0 -> 5373 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-card.pngbin0 -> 5329 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-document.pngbin0 -> 5394 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-html.pngbin0 -> 4848 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-image.pngbin0 -> 4345 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-manual.pngbin0 -> 4233 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-multimedia.pngbin0 -> 4574 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-pdf.pngbin0 -> 3753 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-quicktime.pngbin0 -> 5047 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-rpm.pngbin0 -> 3665 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-script.pngbin0 -> 4578 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-shellscript.pngbin0 -> 3461 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-sourcecode.pngbin0 -> 4126 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-spreadsheet.pngbin0 -> 3382 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-text.pngbin0 -> 1911 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-video.pngbin0 -> 4767 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mixer.pngbin0 -> 6733 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/modem.pngbin0 -> 5007 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mouse.pngbin0 -> 4227 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/movieplayer.pngbin0 -> 4451 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/multimedia.pngbin0 -> 5920 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mycomputer.pngbin0 -> 4978 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/netscape.pngbin0 -> 5824 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/network.pngbin0 -> 7129 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notes.pngbin0 -> 7417 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notify.pngbin0 -> 3285 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/organizer.pngbin0 -> 6970 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/paint.pngbin0 -> 6439 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/partitions.pngbin0 -> 6844 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/password.pngbin0 -> 5026 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pda.pngbin0 -> 3978 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/penguin.pngbin0 -> 4707 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pipe.pngbin0 -> 6762 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/presentation.pngbin0 -> 6680 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/printer.pngbin0 -> 2935 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/reload.pngbin0 -> 4900 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/scanner.pngbin0 -> 4213 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/services.pngbin0 -> 6337 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/settings.pngbin0 -> 5845 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/style.pngbin0 -> 5292 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/system.pngbin0 -> 5737 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tablet.pngbin0 -> 6484 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/terminal.pngbin0 -> 2706 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/themes.pngbin0 -> 4511 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/toys.pngbin0 -> 7265 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-empty.pngbin0 -> 4144 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-full.pngbin0 -> 4849 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tux.pngbin0 -> 4382 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tv.pngbin0 -> 3212 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/up.pngbin0 -> 5462 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/user.pngbin0 -> 6154 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/utilities.pngbin0 -> 7354 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/vectorgraphics.pngbin0 -> 4203 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/wordprocessor.pngbin0 -> 5974 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/adobe-reader.pngbin0 -> 17956 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/background.pngbin0 -> 12208 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bell.pngbin0 -> 14231 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bitmapgraphics.pngbin0 -> 22601 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bug.pngbin0 -> 13751 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cache.pngbin0 -> 7672 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/camera.pngbin0 -> 10604 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cdrom.pngbin0 -> 13250 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/char-device.pngbin0 -> 12531 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/chart.pngbin0 -> 15255 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/clock.pngbin0 -> 21387 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/colors.pngbin0 -> 17155 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/control-center.pngbin0 -> 16220 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/core.pngbin0 -> 7406 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/date.pngbin0 -> 16676 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/desktop.pngbin0 -> 19771 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/dictionary.pngbin0 -> 13322 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/display.pngbin0 -> 9379 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/email.pngbin0 -> 12326 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/encrypted.pngbin0 -> 8491 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/energy.pngbin0 -> 17007 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/error.pngbin0 -> 13245 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/exec.pngbin0 -> 11366 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/floppy.pngbin0 -> 7299 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/flowchart.pngbin0 -> 13730 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-favorite.pngbin0 -> 19930 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-important.pngbin0 -> 21008 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-locked.pngbin0 -> 19717 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-open.pngbin0 -> 14274 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder.pngbin0 -> 19233 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/fonts.pngbin0 -> 13058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/graphics.pngbin0 -> 19795 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/harddrive.pngbin0 -> 6374 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/hardware-info.pngbin0 -> 13737 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/help-center.pngbin0 -> 15934 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/info.pngbin0 -> 10246 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/joystick.pngbin0 -> 15968 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/keyboard-layout.pngbin0 -> 10518 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/locale.pngbin0 -> 8853 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/look-and-feel.pngbin0 -> 20365 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-archive.pngbin0 -> 12796 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-binary.pngbin0 -> 7538 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-calendar.pngbin0 -> 11442 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-card.pngbin0 -> 9978 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-document.pngbin0 -> 11449 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-html.pngbin0 -> 12121 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-image.pngbin0 -> 7241 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-manual.pngbin0 -> 14873 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-multimedia.pngbin0 -> 10813 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-pdf.pngbin0 -> 9534 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-quicktime.pngbin0 -> 12196 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-rpm.pngbin0 -> 15081 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-script.pngbin0 -> 9826 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-shellscript.pngbin0 -> 5934 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-sourcecode.pngbin0 -> 15439 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-spreadsheet.pngbin0 -> 10127 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-text.pngbin0 -> 3748 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-video.pngbin0 -> 7103 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/modem.pngbin0 -> 12785 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mouse.pngbin0 -> 14054 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/movieplayer.pngbin0 -> 7454 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/multimedia.pngbin0 -> 18510 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mycomputer.pngbin0 -> 19567 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/netscape.pngbin0 -> 10750 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/network.pngbin0 -> 21000 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/notes.pngbin0 -> 10333 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/organizer.pngbin0 -> 29033 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/paint.pngbin0 -> 17793 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/partitions.pngbin0 -> 15192 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/password.pngbin0 -> 12059 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/pda.pngbin0 -> 8902 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/presentation.pngbin0 -> 9477 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/printer.pngbin0 -> 11876 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/scanner.pngbin0 -> 14207 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/services.pngbin0 -> 19890 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/settings.pngbin0 -> 24347 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tablet.pngbin0 -> 17216 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/terminal.pngbin0 -> 7421 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/toys.pngbin0 -> 23185 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-empty.pngbin0 -> 11653 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-full.pngbin0 -> 19230 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tv.pngbin0 -> 6702 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/user.pngbin0 -> 22679 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/utilities.pngbin0 -> 15669 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/wordprocessor.pngbin0 -> 15454 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/accessibility.pngbin0 -> 1053 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/adobe-reader.pngbin0 -> 1139 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/alarm.pngbin0 -> 1176 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/applications.pngbin0 -> 931 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/apply.pngbin0 -> 883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/attach.pngbin0 -> 1026 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/back.pngbin0 -> 912 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/background.pngbin0 -> 1010 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bell.pngbin0 -> 1035 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bitmapgraphics.pngbin0 -> 1053 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-add.pngbin0 -> 1032 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-folder.pngbin0 -> 1125 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-toolbar.pngbin0 -> 1061 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark.pngbin0 -> 914 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bug.pngbin0 -> 991 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-cancel.pngbin0 -> 1133 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-ok.pngbin0 -> 883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cache.pngbin0 -> 778 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/calculator.pngbin0 -> 1040 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/camera.pngbin0 -> 902 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cancel.pngbin0 -> 1133 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cdrom.pngbin0 -> 1078 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/char-device.pngbin0 -> 1022 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/chart.pngbin0 -> 1166 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clipboard.pngbin0 -> 823 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clock.pngbin0 -> 1160 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-fill.pngbin0 -> 996 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-line.pngbin0 -> 857 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/colors.pngbin0 -> 1112 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/configure.pngbin0 -> 980 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-creating.pngbin0 -> 878 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-established.pngbin0 -> 1155 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-no.pngbin0 -> 1091 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/control-center.pngbin0 -> 1118 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cookie.pngbin0 -> 1122 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/core.pngbin0 -> 817 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/date.pngbin0 -> 1114 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/decrypted.pngbin0 -> 972 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/desktop.pngbin0 -> 1077 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/devices.pngbin0 -> 702 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/dictionary.pngbin0 -> 955 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/display.pngbin0 -> 888 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/down.pngbin0 -> 912 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-copy.pngbin0 -> 730 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-cut.pngbin0 -> 873 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-delete.pngbin0 -> 860 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-paste.pngbin0 -> 911 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit.pngbin0 -> 734 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/editor.pngbin0 -> 1097 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/email.pngbin0 -> 971 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/encrypted.pngbin0 -> 894 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/energy.pngbin0 -> 1082 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/error.pngbin0 -> 1150 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exec.pngbin0 -> 1022 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exit.pngbin0 -> 995 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-manager.pngbin0 -> 984 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-new.pngbin0 -> 805 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-open.pngbin0 -> 702 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-print.pngbin0 -> 1020 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save-as.pngbin0 -> 1009 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save.pngbin0 -> 898 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/find.pngbin0 -> 688 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/floppy.pngbin0 -> 893 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/flowchart.pngbin0 -> 1014 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-favorite.pngbin0 -> 779 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-important.pngbin0 -> 846 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-locked.pngbin0 -> 798 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-open.pngbin0 -> 599 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder.pngbin0 -> 558 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/fonts.pngbin0 -> 892 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/forward.pngbin0 -> 920 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/games.pngbin0 -> 1065 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/graphics.pngbin0 -> 1118 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/harddrive.pngbin0 -> 819 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/hardware-info.pngbin0 -> 1122 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help-center.pngbin0 -> 1107 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help.pngbin0 -> 1187 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history-clear.pngbin0 -> 1199 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history.pngbin0 -> 1166 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/home.pngbin0 -> 1125 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/icons.pngbin0 -> 781 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/iconthemes.pngbin0 -> 969 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/important.pngbin0 -> 921 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/info.pngbin0 -> 956 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/joystick.pngbin0 -> 1065 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/keyboard-layout.pngbin0 -> 1078 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/locale.pngbin0 -> 1058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/look-and-feel.pngbin0 -> 1075 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/magnifier.pngbin0 -> 1000 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-delete.pngbin0 -> 1167 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-find.pngbin0 -> 1141 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-forward.pngbin0 -> 1098 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-get.pngbin0 -> 1170 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-new.pngbin0 -> 769 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply-all.pngbin0 -> 1137 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply.pngbin0 -> 1093 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-send.pngbin0 -> 1114 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail.pngbin0 -> 1148 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/memory.pngbin0 -> 913 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-archive.pngbin0 -> 1050 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-binary.pngbin0 -> 839 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-calendar.pngbin0 -> 919 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-card.pngbin0 -> 888 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-color.pngbin0 -> 912 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-document.pngbin0 -> 948 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-html.pngbin0 -> 951 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-image.pngbin0 -> 824 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-manual.pngbin0 -> 955 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-multimedia.pngbin0 -> 910 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-pdf.pngbin0 -> 857 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-quicktime.pngbin0 -> 931 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-rpm.pngbin0 -> 1123 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-script.pngbin0 -> 919 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-shellscript.pngbin0 -> 823 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-sourcecode.pngbin0 -> 977 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-spreadsheet.pngbin0 -> 990 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-text.pngbin0 -> 560 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-video.pngbin0 -> 767 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/misc.pngbin0 -> 1041 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mixer.pngbin0 -> 1102 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/modem.pngbin0 -> 1043 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mouse.pngbin0 -> 954 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/movieplayer.pngbin0 -> 766 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/multimedia.pngbin0 -> 1019 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mycomputer.pngbin0 -> 1028 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/netscape.pngbin0 -> 934 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/network.pngbin0 -> 1154 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/no.pngbin0 -> 922 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notes.pngbin0 -> 954 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notify.pngbin0 -> 861 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/ok.pngbin0 -> 883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/opera.pngbin0 -> 1089 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/organizer.pngbin0 -> 1073 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/paint.pngbin0 -> 1032 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/partitions.pngbin0 -> 1108 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/password.pngbin0 -> 949 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pda.pngbin0 -> 882 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pipe.pngbin0 -> 772 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/presentation.pngbin0 -> 898 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/printer.pngbin0 -> 1057 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/queue.pngbin0 -> 710 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/redo.pngbin0 -> 708 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/reload.pngbin0 -> 1135 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/rotate.pngbin0 -> 842 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/run.pngbin0 -> 987 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/scanner.pngbin0 -> 1086 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/services.pngbin0 -> 1027 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/settings.pngbin0 -> 1139 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/signature.pngbin0 -> 790 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/spellcheck.pngbin0 -> 839 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/stop.pngbin0 -> 1032 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/style.pngbin0 -> 991 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/system.pngbin0 -> 1129 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-duplicate.pngbin0 -> 1016 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new-raised.pngbin0 -> 1011 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new.pngbin0 -> 996 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-remove.pngbin0 -> 915 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tablet.pngbin0 -> 1069 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/terminal.pngbin0 -> 829 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/themes.pngbin0 -> 1150 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/toys.pngbin0 -> 1191 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-empty.pngbin0 -> 1038 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-full.pngbin0 -> 1115 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tv.pngbin0 -> 971 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/undo.pngbin0 -> 707 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/up.pngbin0 -> 906 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/user.pngbin0 -> 1173 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/utilities.pngbin0 -> 1050 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-bottom.pngbin0 -> 946 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-choose.pngbin0 -> 994 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-detailed.pngbin0 -> 961 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-icon.pngbin0 -> 997 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-left-right.pngbin0 -> 822 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-multicolumn.pngbin0 -> 995 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-remove.pngbin0 -> 708 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-right.pngbin0 -> 986 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-sidetree.pngbin0 -> 911 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-text.pngbin0 -> 895 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-top-bottom.pngbin0 -> 767 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-tree.pngbin0 -> 907 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-fit.pngbin0 -> 975 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-minus.pngbin0 -> 574 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-original.pngbin0 -> 664 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-plus.pngbin0 -> 1103 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag.pngbin0 -> 813 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wizard.pngbin0 -> 899 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wordprocessor.pngbin0 -> 914 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/adobe-reader.pngbin0 -> 1807 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/alarm.pngbin0 -> 1778 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/attach.pngbin0 -> 1416 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/back.pngbin0 -> 1229 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/background.pngbin0 -> 1511 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bell.pngbin0 -> 1487 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bitmapgraphics.pngbin0 -> 1697 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark-add.pngbin0 -> 1547 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark.pngbin0 -> 1318 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-cancel.pngbin0 -> 1572 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-ok.pngbin0 -> 1192 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cache.pngbin0 -> 1154 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/camera.pngbin0 -> 1328 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cancel.pngbin0 -> 1572 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cdrom.pngbin0 -> 1570 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/char-device.pngbin0 -> 1410 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/clock.pngbin0 -> 1726 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-fill.pngbin0 -> 1397 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-line.pngbin0 -> 1138 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/colors.pngbin0 -> 1700 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/configure.pngbin0 -> 1276 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-creating.pngbin0 -> 1229 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-established.pngbin0 -> 1672 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-no.pngbin0 -> 1643 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/control-center.pngbin0 -> 1761 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/core.pngbin0 -> 1090 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/date.pngbin0 -> 1707 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/decrypted.pngbin0 -> 1429 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/desktop.pngbin0 -> 1649 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/dictionary.pngbin0 -> 1353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/display.pngbin0 -> 1305 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/down.pngbin0 -> 1234 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-copy.pngbin0 -> 944 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-cut.pngbin0 -> 1424 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-delete.pngbin0 -> 1205 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-paste.pngbin0 -> 1274 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit.pngbin0 -> 987 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/email.pngbin0 -> 1333 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/encrypted.pngbin0 -> 1219 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/energy.pngbin0 -> 1663 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/error.pngbin0 -> 1672 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exec.pngbin0 -> 1418 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exit.pngbin0 -> 1449 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-new.pngbin0 -> 1145 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-open.pngbin0 -> 1040 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-print.pngbin0 -> 1578 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save-as.pngbin0 -> 1469 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save.pngbin0 -> 1182 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/find.pngbin0 -> 976 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/floppy.pngbin0 -> 1172 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-favorite.pngbin0 -> 1818 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-important.pngbin0 -> 1868 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-locked.pngbin0 -> 1876 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-open.pngbin0 -> 1412 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder.pngbin0 -> 1805 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/fonts.pngbin0 -> 1244 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/forward.pngbin0 -> 1243 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/graphics.pngbin0 -> 1632 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/harddrive.pngbin0 -> 1099 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/hardware-info.pngbin0 -> 1659 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help-center.pngbin0 -> 1633 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help.pngbin0 -> 1474 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/history.pngbin0 -> 1863 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/home.pngbin0 -> 1641 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/info.pngbin0 -> 1352 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/joystick.pngbin0 -> 1631 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/keyboard-layout.pngbin0 -> 1578 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/locale.pngbin0 -> 1490 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-delete.pngbin0 -> 1705 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-find.pngbin0 -> 1697 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-forward.pngbin0 -> 1656 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-get.pngbin0 -> 1817 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-new.pngbin0 -> 1115 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply-all.pngbin0 -> 1717 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply.pngbin0 -> 1623 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-send.pngbin0 -> 1628 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail.pngbin0 -> 1671 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-archive.pngbin0 -> 1602 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-binary.pngbin0 -> 1158 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-calendar.pngbin0 -> 1333 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-card.pngbin0 -> 1223 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-document.pngbin0 -> 1314 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-html.pngbin0 -> 1324 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-image.pngbin0 -> 1146 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-manual.pngbin0 -> 1434 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-multimedia.pngbin0 -> 1254 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-pdf.pngbin0 -> 1155 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-quicktime.pngbin0 -> 1313 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-rpm.pngbin0 -> 1726 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-script.pngbin0 -> 1315 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-shellscript.pngbin0 -> 1093 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-sourcecode.pngbin0 -> 1443 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-spreadsheet.pngbin0 -> 1491 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-text.pngbin0 -> 756 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-video.pngbin0 -> 1065 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/misc.pngbin0 -> 1607 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/modem.pngbin0 -> 1546 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mouse.pngbin0 -> 1395 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/multimedia.pngbin0 -> 1501 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mycomputer.pngbin0 -> 1514 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/netscape.pngbin0 -> 1314 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/network.pngbin0 -> 1882 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/ok.pngbin0 -> 1192 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/paint.pngbin0 -> 1468 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/partitions.pngbin0 -> 1729 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/password.pngbin0 -> 1336 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/pda.pngbin0 -> 1186 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/printer.pngbin0 -> 1676 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/queue.pngbin0 -> 999 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/redo.pngbin0 -> 1035 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/reload.pngbin0 -> 1684 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/run.pngbin0 -> 1353 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/scanner.pngbin0 -> 1689 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/settings.pngbin0 -> 1904 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/signature.pngbin0 -> 981 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/spellcheck.pngbin0 -> 922 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/stop.pngbin0 -> 1473 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tablet.pngbin0 -> 1617 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/terminal.pngbin0 -> 1093 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/toys.pngbin0 -> 1918 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-empty.pngbin0 -> 1455 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-full.pngbin0 -> 1653 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tv.pngbin0 -> 1372 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/undo.pngbin0 -> 1061 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/up.pngbin0 -> 1222 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/user.pngbin0 -> 1850 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/utilities.pngbin0 -> 1556 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-bottom.pngbin0 -> 1400 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-choose.pngbin0 -> 814 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-detailed.pngbin0 -> 1316 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-icon.pngbin0 -> 930 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-left-right.pngbin0 -> 1088 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-multicolumn.pngbin0 -> 825 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-remove.pngbin0 -> 966 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-right.pngbin0 -> 1404 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-sidetree.pngbin0 -> 876 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-text.pngbin0 -> 1181 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-top-bottom.pngbin0 -> 1071 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-tree.pngbin0 -> 802 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-fit.pngbin0 -> 1157 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-minus.pngbin0 -> 794 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-original.pngbin0 -> 808 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-plus.pngbin0 -> 1352 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag.pngbin0 -> 1329 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/wizard.pngbin0 -> 1229 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/accessibility.pngbin0 -> 2295 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/adobe-reader.pngbin0 -> 2948 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/alarm.pngbin0 -> 2920 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/applications.pngbin0 -> 2080 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/attach.pngbin0 -> 2285 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/back.pngbin0 -> 1821 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/background.pngbin0 -> 2413 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bell.pngbin0 -> 2390 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bitmapgraphics.pngbin0 -> 2793 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark-add.pngbin0 -> 2509 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark.pngbin0 -> 2126 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bug.pngbin0 -> 2325 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-cancel.pngbin0 -> 2478 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-ok.pngbin0 -> 1732 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cache.pngbin0 -> 1700 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/calculator.pngbin0 -> 2461 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/camera.pngbin0 -> 1974 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cdrom.pngbin0 -> 2445 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/char-device.pngbin0 -> 2238 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/chart.pngbin0 -> 2465 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clipboard.pngbin0 -> 1947 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clock.pngbin0 -> 2905 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/colors.pngbin0 -> 2625 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/configure.pngbin0 -> 1907 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-creating.pngbin0 -> 1904 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-established.pngbin0 -> 2683 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-no.pngbin0 -> 2803 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/contents.pngbin0 -> 2226 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/control-center.pngbin0 -> 2857 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cookie.pngbin0 -> 2679 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/core.pngbin0 -> 1596 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/date.pngbin0 -> 2825 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/decrypted.pngbin0 -> 2025 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/desktop.pngbin0 -> 2742 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/devices.pngbin0 -> 1355 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/dictionary.pngbin0 -> 2159 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/display.pngbin0 -> 1965 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/down.pngbin0 -> 1748 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-copy.pngbin0 -> 1329 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-cut.pngbin0 -> 1849 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-delete.pngbin0 -> 1805 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-paste.pngbin0 -> 1799 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit.pngbin0 -> 1395 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/editor.pngbin0 -> 2805 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/email.pngbin0 -> 2079 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/encrypted.pngbin0 -> 1795 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/energy.pngbin0 -> 2753 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/error.pngbin0 -> 2622 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exec.pngbin0 -> 2168 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exit.pngbin0 -> 2446 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-manager.pngbin0 -> 1920 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-new.pngbin0 -> 1857 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-open.pngbin0 -> 1714 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-print.pngbin0 -> 2504 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save-as.pngbin0 -> 2346 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save.pngbin0 -> 1741 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/find.pngbin0 -> 1446 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/floppy.pngbin0 -> 1757 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/flowchart.pngbin0 -> 2309 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-favorite.pngbin0 -> 3112 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-important.pngbin0 -> 3214 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-locked.pngbin0 -> 3092 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-open.pngbin0 -> 2300 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder.pngbin0 -> 2972 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/fonts.pngbin0 -> 1993 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/forward.pngbin0 -> 1860 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/games.pngbin0 -> 2590 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/graphics.pngbin0 -> 2742 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/harddrive.pngbin0 -> 1551 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/hardware-info.pngbin0 -> 2653 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help-center.pngbin0 -> 2647 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help.pngbin0 -> 2671 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/home.pngbin0 -> 2585 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/icons.pngbin0 -> 1646 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/iconthemes.pngbin0 -> 2408 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/important.pngbin0 -> 2169 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/info.pngbin0 -> 2017 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/joystick.pngbin0 -> 2594 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/keyboard-layout.pngbin0 -> 2410 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/locale.pngbin0 -> 2179 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/look-and-feel.pngbin0 -> 2770 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/magnifier.pngbin0 -> 2167 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-delete.pngbin0 -> 2713 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-find.pngbin0 -> 2707 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-get.pngbin0 -> 2990 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-new.pngbin0 -> 1672 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-send.pngbin0 -> 2577 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail.pngbin0 -> 2665 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/memory.pngbin0 -> 2276 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-archive.pngbin0 -> 2566 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-binary.pngbin0 -> 1756 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-calendar.pngbin0 -> 2058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-card.pngbin0 -> 1764 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-document.pngbin0 -> 2118 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-html.pngbin0 -> 2034 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-image.pngbin0 -> 1605 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-manual.pngbin0 -> 2285 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-multimedia.pngbin0 -> 1894 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-pdf.pngbin0 -> 1752 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-quicktime.pngbin0 -> 2001 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-rpm.pngbin0 -> 2820 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-script.pngbin0 -> 1951 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-shellscript.pngbin0 -> 1546 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-sourcecode.pngbin0 -> 2201 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-spreadsheet.pngbin0 -> 2243 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-text.pngbin0 -> 1006 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-video.pngbin0 -> 1587 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/misc.pngbin0 -> 2853 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mixer.pngbin0 -> 2906 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/modem.pngbin0 -> 2493 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mouse.pngbin0 -> 2152 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/movieplayer.pngbin0 -> 1516 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/multimedia.pngbin0 -> 2641 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mycomputer.pngbin0 -> 2726 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/netscape.pngbin0 -> 2020 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/network.pngbin0 -> 3141 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notes.pngbin0 -> 2089 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notify.pngbin0 -> 3050 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/opera.pngbin0 -> 2676 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/organizer.pngbin0 -> 3172 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/paint.pngbin0 -> 2608 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/partitions.pngbin0 -> 2676 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/password.pngbin0 -> 2085 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pda.pngbin0 -> 1787 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pipe.pngbin0 -> 1624 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/presentation.pngbin0 -> 2103 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/printer.pngbin0 -> 2650 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/queue.pngbin0 -> 1562 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/redo.pngbin0 -> 1615 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/reload.pngbin0 -> 2536 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/run.pngbin0 -> 2057 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/scanner.pngbin0 -> 2600 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/services.pngbin0 -> 2853 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/settings.pngbin0 -> 3316 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/stop.pngbin0 -> 2437 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/style.pngbin0 -> 2070 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/system.pngbin0 -> 3023 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tablet.pngbin0 -> 2505 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/terminal.pngbin0 -> 1683 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/themes.pngbin0 -> 3074 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/toys.pngbin0 -> 3387 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-empty.pngbin0 -> 2236 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-full.pngbin0 -> 2844 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tv.pngbin0 -> 1928 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/undo.pngbin0 -> 1608 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/up.pngbin0 -> 1849 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/user.pngbin0 -> 3199 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/utilities.pngbin0 -> 2559 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-bottom.pngbin0 -> 2211 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-choose.pngbin0 -> 2048 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-detailed.pngbin0 -> 1979 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-icon.pngbin0 -> 2151 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-left-right.pngbin0 -> 1602 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-multicolumn.pngbin0 -> 2155 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-remove.pngbin0 -> 1406 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-right.pngbin0 -> 2226 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-sidetree.pngbin0 -> 1929 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-text.pngbin0 -> 1759 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-top-bottom.pngbin0 -> 1565 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-tree.pngbin0 -> 1889 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-fit.pngbin0 -> 3233 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-minus.pngbin0 -> 2847 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-original.pngbin0 -> 2739 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-plus.pngbin0 -> 2901 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag.pngbin0 -> 2282 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/wordprocessor.pngbin0 -> 2288 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/accessibility.pngbin0 -> 3532 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/adobe-reader.pngbin0 -> 4989 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/alarm.pngbin0 -> 4812 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/applications.pngbin0 -> 3383 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/back.pngbin0 -> 2687 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/background.pngbin0 -> 3833 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bell.pngbin0 -> 3966 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bitmapgraphics.pngbin0 -> 5146 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bug.pngbin0 -> 3900 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cache.pngbin0 -> 2484 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/calculator.pngbin0 -> 4014 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/camera.pngbin0 -> 3094 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cdrom.pngbin0 -> 4058 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/char-device.pngbin0 -> 3679 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/chart.pngbin0 -> 4220 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clipboard.pngbin0 -> 3364 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clock.pngbin0 -> 5063 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/colors.pngbin0 -> 4469 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/control-center.pngbin0 -> 4736 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/core.pngbin0 -> 2441 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/date.pngbin0 -> 4711 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/desktop.pngbin0 -> 4878 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/devices.pngbin0 -> 2207 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/dictionary.pngbin0 -> 3482 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/display.pngbin0 -> 3071 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/down.pngbin0 -> 2627 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/editor.pngbin0 -> 4979 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/email.pngbin0 -> 3393 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/encrypted.pngbin0 -> 2804 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/energy.pngbin0 -> 4619 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/error.pngbin0 -> 4477 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/exec.pngbin0 -> 3465 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-manager.pngbin0 -> 2686 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-print.pngbin0 -> 3369 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/floppy.pngbin0 -> 2705 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/flowchart.pngbin0 -> 3938 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-favorite.pngbin0 -> 5047 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-important.pngbin0 -> 5277 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-locked.pngbin0 -> 5067 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-open.pngbin0 -> 3806 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder.pngbin0 -> 4789 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/fonts.pngbin0 -> 3388 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/forward.pngbin0 -> 2892 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/games.pngbin0 -> 4173 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/graphics.pngbin0 -> 4709 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/harddrive.pngbin0 -> 2283 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/hardware-info.pngbin0 -> 4180 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/help-center.pngbin0 -> 4449 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/home.pngbin0 -> 3831 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/icons.pngbin0 -> 2461 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/iconthemes.pngbin0 -> 4045 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/important.pngbin0 -> 3519 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/info.pngbin0 -> 3188 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/joystick.pngbin0 -> 4096 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/keyboard-layout.pngbin0 -> 3548 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/locale.pngbin0 -> 3077 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/look-and-feel.pngbin0 -> 4935 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/magnifier.pngbin0 -> 3779 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/memory.pngbin0 -> 4185 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-archive.pngbin0 -> 4011 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-binary.pngbin0 -> 2728 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-calendar.pngbin0 -> 3361 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-card.pngbin0 -> 2861 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-document.pngbin0 -> 3330 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-html.pngbin0 -> 3382 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-image.pngbin0 -> 2512 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-manual.pngbin0 -> 3770 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-multimedia.pngbin0 -> 3046 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-pdf.pngbin0 -> 2748 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-quicktime.pngbin0 -> 3341 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-rpm.pngbin0 -> 4603 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-script.pngbin0 -> 3088 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-shellscript.pngbin0 -> 2275 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-sourcecode.pngbin0 -> 3988 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-spreadsheet.pngbin0 -> 3271 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-text.pngbin0 -> 1536 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-video.pngbin0 -> 2459 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mixer.pngbin0 -> 4609 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/modem.pngbin0 -> 3813 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mouse.pngbin0 -> 3657 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/movieplayer.pngbin0 -> 2427 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/multimedia.pngbin0 -> 4788 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mycomputer.pngbin0 -> 4814 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/netscape.pngbin0 -> 3265 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/network.pngbin0 -> 5597 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notes.pngbin0 -> 3267 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notify.pngbin0 -> 5027 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/opera.pngbin0 -> 4421 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/organizer.pngbin0 -> 6475 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/paint.pngbin0 -> 4379 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/partitions.pngbin0 -> 4377 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/password.pngbin0 -> 3365 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pda.pngbin0 -> 2761 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pipe.pngbin0 -> 2469 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/presentation.pngbin0 -> 3191 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/printer.pngbin0 -> 4006 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/reload.pngbin0 -> 4229 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/scanner.pngbin0 -> 4185 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/services.pngbin0 -> 5089 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/settings.pngbin0 -> 5994 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/style.pngbin0 -> 2920 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/system.pngbin0 -> 5111 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tablet.pngbin0 -> 4326 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/terminal.pngbin0 -> 2495 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/themes.pngbin0 -> 4934 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/toys.pngbin0 -> 5784 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-empty.pngbin0 -> 3550 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-full.pngbin0 -> 4997 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tv.pngbin0 -> 2696 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/up.pngbin0 -> 2802 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/user.pngbin0 -> 5470 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/utilities.pngbin0 -> 4217 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/wordprocessor.pngbin0 -> 3934 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/adobe-reader.pngbin0 -> 7294 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/applications.pngbin0 -> 4838 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/background.pngbin0 -> 5477 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bell.pngbin0 -> 5776 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bitmapgraphics.pngbin0 -> 8117 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bug.pngbin0 -> 5726 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cache.pngbin0 -> 3420 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/calculator.pngbin0 -> 5740 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/camera.pngbin0 -> 4389 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cdrom.pngbin0 -> 5957 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/char-device.pngbin0 -> 5210 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/chart.pngbin0 -> 6115 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clipboard.pngbin0 -> 4949 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clock.pngbin0 -> 7445 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/colors.pngbin0 -> 6581 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/control-center.pngbin0 -> 6794 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/core.pngbin0 -> 3322 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/date.pngbin0 -> 6813 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/desktop.pngbin0 -> 7360 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/devices.pngbin0 -> 2943 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/dictionary.pngbin0 -> 4971 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/display.pngbin0 -> 4321 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/editor.pngbin0 -> 7625 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/email.pngbin0 -> 4911 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/encrypted.pngbin0 -> 3781 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/energy.pngbin0 -> 6915 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/error.pngbin0 -> 6081 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/exec.pngbin0 -> 5180 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/file-manager.pngbin0 -> 3596 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/floppy.pngbin0 -> 3781 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/flowchart.pngbin0 -> 5627 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-favorite.pngbin0 -> 7622 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-important.pngbin0 -> 7889 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-locked.pngbin0 -> 7544 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-open.pngbin0 -> 5712 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder.pngbin0 -> 7310 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/fonts.pngbin0 -> 5080 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/games.pngbin0 -> 6251 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/graphics.pngbin0 -> 7349 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/harddrive.pngbin0 -> 3123 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/hardware-info.pngbin0 -> 5838 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/help-center.pngbin0 -> 6693 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/icons.pngbin0 -> 3428 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/important.pngbin0 -> 4994 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/info.pngbin0 -> 4434 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/joystick.pngbin0 -> 6189 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/keyboard-layout.pngbin0 -> 4883 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/locale.pngbin0 -> 4062 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/look-and-feel.pngbin0 -> 7579 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/magnifier.pngbin0 -> 5275 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/memory.pngbin0 -> 6633 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-archive.pngbin0 -> 5854 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-binary.pngbin0 -> 3703 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-calendar.pngbin0 -> 4882 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-card.pngbin0 -> 4003 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-document.pngbin0 -> 4878 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-html.pngbin0 -> 4906 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-image.pngbin0 -> 3401 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-manual.pngbin0 -> 5619 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-multimedia.pngbin0 -> 4399 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-pdf.pngbin0 -> 3922 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-quicktime.pngbin0 -> 4807 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-rpm.pngbin0 -> 6713 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-script.pngbin0 -> 4302 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-shellscript.pngbin0 -> 2976 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-sourcecode.pngbin0 -> 5909 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-spreadsheet.pngbin0 -> 4619 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-text.pngbin0 -> 1945 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-video.pngbin0 -> 3312 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mixer.pngbin0 -> 6596 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/modem.pngbin0 -> 5323 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mouse.pngbin0 -> 5419 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/movieplayer.pngbin0 -> 3279 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/multimedia.pngbin0 -> 7128 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mycomputer.pngbin0 -> 7319 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/netscape.pngbin0 -> 4575 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/network.pngbin0 -> 8319 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notes.pngbin0 -> 4344 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notify.pngbin0 -> 7690 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/organizer.pngbin0 -> 10167 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/paint.pngbin0 -> 6520 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/partitions.pngbin0 -> 6455 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/password.pngbin0 -> 4696 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pda.pngbin0 -> 3942 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pipe.pngbin0 -> 3808 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/presentation.pngbin0 -> 4307 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/printer.pngbin0 -> 5656 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/scanner.pngbin0 -> 6067 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/services.pngbin0 -> 7628 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/settings.pngbin0 -> 9067 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/style.pngbin0 -> 4291 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/system.pngbin0 -> 7822 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tablet.pngbin0 -> 6345 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/terminal.pngbin0 -> 3430 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/themes.pngbin0 -> 6788 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/toys.pngbin0 -> 8759 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-empty.pngbin0 -> 4980 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-full.pngbin0 -> 7279 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tv.pngbin0 -> 3715 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/user.pngbin0 -> 8036 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/utilities.pngbin0 -> 6367 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/wordprocessor.pngbin0 -> 5858 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/history/historyHelper.html4
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/blank.gifbin0 -> 49 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/dotted_white.gifbin0 -> 44 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down.gifbin0 -> 49 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_small.gifbin0 -> 46 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_tiny.gifbin0 -> 44 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/first.pngbin0 -> 321 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/forward.gifbin0 -> 55 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/last.pngbin0 -> 333 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/left.pngbin0 -> 299 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/minimize.gifbin0 -> 52 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/next.gifbin0 -> 49 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/previous.gifbin0 -> 49 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/rewind.gifbin0 -> 54 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/right.pngbin0 -> 313 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up.gifbin0 -> 48 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_small.gifbin0 -> 46 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_tiny.gifbin0 -> 44 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-field.jpgbin0 -> 456 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-handle.gifbin0 -> 80 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-field.jpgbin0 -> 6344 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-handle.gifbin0 -> 63 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/alias.gifbin0 -> 104 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/copy.gifbin0 -> 102 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/move.gifbin0 -> 67 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/nodrop.gifbin0 -> 120 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastMonth.pngbin0 -> 576 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastYear.pngbin0 -> 830 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextMonth.pngbin0 -> 592 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextYear.pngbin0 -> 828 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/checkbox.gifbin0 -> 838 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/menu-blank.gifbin0 -> 75 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/radiobutton.gifbin0 -> 830 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-horizontal.pngbin0 -> 706 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-vertical.pngbin0 -> 703 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/ascending.pngbin0 -> 116 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-false.pngbin0 -> 859 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-true.pngbin0 -> 121 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/descending.pngbin0 -> 115 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/selectColumnOrder.pngbin0 -> 117 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross.gifbin0 -> 67 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_minus.gifbin0 -> 154 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_plus.gifbin0 -> 158 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end.gifbin0 -> 64 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_minus.gifbin0 -> 154 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_plus.gifbin0 -> 158 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/line.gifbin0 -> 64 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/minus.gifbin0 -> 148 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_minus.gifbin0 -> 177 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_plus.gifbin0 -> 181 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/plus.gifbin0 -> 152 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_minus.gifbin0 -> 178 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_plus.gifbin0 -> 182 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/close.gifbin0 -> 58 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/maximize.gifbin0 -> 56 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/minimize.gifbin0 -> 52 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/restore.gifbin0 -> 58 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/find.sh9
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/generator.py1057
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/massreplace.sh8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.5.2/info/01-changes.dat2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/info/01-windowevents.dat6
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/01-xml.dat1
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/02-application.dat1
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/01-nativewindow.dat2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/02-functionextension.dat1
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/patches/01-parent.dat2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/01-constants.dat293
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/02-oo.dat54
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/03-widget.dat68
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/04-nativewindow.dat12
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/05-font.dat10
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/06-border.dat17
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/07-color.dat2
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/08-image.dat7
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/09-tree.dat8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/10-table.dat25
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/11-embed.dat8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/12-label.dat21
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/13-window.dat8
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/14-colorselector.dat11
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/15-datechooser.dat5
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/16-button.dat3
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/17-selection.dat3
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/40-classnames.dat74
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/01-prototypes.dat32
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/02-obsolete.dat3
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/01-classnames.dat209
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/02-domapi.dat38
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/03-const.dat55
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/04-events.dat56
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/05-util.dat47
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/06-main.dat7
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.7/patch.py381
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.py779
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.pycbin0 -> 19449 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.py906
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.pycbin0 -> 17120 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.py1473
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.pycbin0 -> 18368 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.py168
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.pycbin0 -> 4127 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.py96
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.pycbin0 -> 3119 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.py816
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.pycbin0 -> 16059 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.py19
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.pycbin0 -> 530 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.py303
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.pycbin0 -> 6140 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.py438
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.pycbin0 -> 41094 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.py16
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.pycbin0 -> 896 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.py88
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.pycbin0 -> 2360 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.py97
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.pycbin0 -> 2892 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.py173
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.pycbin0 -> 4122 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tagtool.py45
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.py2873
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.pycbin0 -> 92691 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.py143
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.pycbin0 -> 4283 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.py349
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.pycbin0 -> 9211 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.py563
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.pycbin0 -> 14591 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.py1021
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.pycbin0 -> 22626 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.py119
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.pycbin0 -> 2790 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/core.dat12
-rwxr-xr-xwebapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/packages.dat25
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample1.tar.gzbin0 -> 1980 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample2.tar.gzbin0 -> 5403 bytes
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample3.tar.gzbin0 -> 2096 bytes
-rw-r--r--webapps/scripting/client/call.js118
-rw-r--r--webapps/scripting/client/desktop.js121
-rw-r--r--webapps/scripting/client/encoder.js84
-rw-r--r--webapps/scripting/client/js_scripts.js60
-rw-r--r--webapps/scripting/client/regedit.js160
-rw-r--r--webapps/scripting/client/status.js40
-rw-r--r--webapps/scripting/common.js153
-rw-r--r--webapps/scripting/footer_columns.esp7
-rw-r--r--webapps/scripting/footer_desktop.esp6
-rw-r--r--webapps/scripting/footer_plain.esp7
-rw-r--r--webapps/scripting/forms.js112
-rw-r--r--webapps/scripting/general_calls.esp25
-rw-r--r--webapps/scripting/header_columns.esp85
-rw-r--r--webapps/scripting/header_desktop.esp25
-rw-r--r--webapps/scripting/header_plain.esp55
-rw-r--r--webapps/scripting/menus.js53
-rw-r--r--webapps/scripting/preauth.esp17
-rw-r--r--webapps/scripting/server/regedit.esp51
-rw-r--r--webapps/scripting/server/status.esp27
-rw-r--r--webapps/scripting/test.ejs10
-rw-r--r--webapps/scripting/test.esp6
-rw-r--r--webapps/style/columns.css73
-rw-r--r--webapps/style/common.css266
-rw-r--r--webapps/style/swat.css40
-rw-r--r--webapps/style/wide.css113
-rw-r--r--webapps/swat/Makefile247
-rw-r--r--webapps/swat/source/.ignore1
-rw-r--r--webapps/swat/source/class/swat/main/Gui.js205
-rw-r--r--webapps/swat/source/class/swat/main/Main.js94
-rw-r--r--webapps/swat/source/class/swat/module/AbstractModule.js172
-rw-r--r--webapps/swat/source/class/swat/module/AbstractModuleFsm.js211
-rw-r--r--webapps/swat/source/class/swat/module/Module.js74
-rw-r--r--webapps/swat/source/class/swat/module/documentation/Documentation.js59
-rw-r--r--webapps/swat/source/class/swat/module/documentation/Fsm.js70
-rw-r--r--webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js383
-rw-r--r--webapps/swat/source/class/swat/module/ldbbrowse/Gui.js632
-rw-r--r--webapps/swat/source/class/swat/module/ldbbrowse/LdbBrowse.js52
-rw-r--r--webapps/swat/source/class/swat/module/statistics/Fsm.js209
-rw-r--r--webapps/swat/source/class/swat/module/statistics/Gui.js464
-rw-r--r--webapps/swat/source/class/swat/module/statistics/Statistics.js44
-rw-r--r--webapps/swat/source/index.html14
2573 files changed, 252891 insertions, 0 deletions
diff --git a/webapps/images/core/alpha.gif b/webapps/images/core/alpha.gif
new file mode 100644
index 0000000000..ab8c332af9
--- /dev/null
+++ b/webapps/images/core/alpha.gif
Binary files differ
diff --git a/webapps/images/core/blank.gif b/webapps/images/core/blank.gif
new file mode 100644
index 0000000000..75b945d255
--- /dev/null
+++ b/webapps/images/core/blank.gif
Binary files differ
diff --git a/webapps/images/core/brightness.jpg b/webapps/images/core/brightness.jpg
new file mode 100644
index 0000000000..008984d1c7
--- /dev/null
+++ b/webapps/images/core/brightness.jpg
Binary files differ
diff --git a/webapps/images/core/brightnesshandle.gif b/webapps/images/core/brightnesshandle.gif
new file mode 100644
index 0000000000..7cf80222af
--- /dev/null
+++ b/webapps/images/core/brightnesshandle.gif
Binary files differ
diff --git a/webapps/images/core/dotted.gif b/webapps/images/core/dotted.gif
new file mode 100644
index 0000000000..467da46f25
--- /dev/null
+++ b/webapps/images/core/dotted.gif
Binary files differ
diff --git a/webapps/images/core/huesaturation.jpg b/webapps/images/core/huesaturation.jpg
new file mode 100644
index 0000000000..36d2d799d9
--- /dev/null
+++ b/webapps/images/core/huesaturation.jpg
Binary files differ
diff --git a/webapps/images/core/huesaturationhandle.gif b/webapps/images/core/huesaturationhandle.gif
new file mode 100644
index 0000000000..2fcaaece17
--- /dev/null
+++ b/webapps/images/core/huesaturationhandle.gif
Binary files differ
diff --git a/webapps/images/favicon.ico b/webapps/images/favicon.ico
new file mode 100644
index 0000000000..ef903bacfe
--- /dev/null
+++ b/webapps/images/favicon.ico
Binary files differ
diff --git a/webapps/images/linkpad.gif b/webapps/images/linkpad.gif
new file mode 100644
index 0000000000..613b4f55ef
--- /dev/null
+++ b/webapps/images/linkpad.gif
Binary files differ
diff --git a/webapps/images/logo.png b/webapps/images/logo.png
new file mode 100644
index 0000000000..6df4ace659
--- /dev/null
+++ b/webapps/images/logo.png
Binary files differ
diff --git a/webapps/images/stripes.png b/webapps/images/stripes.png
new file mode 100644
index 0000000000..5c5941ff38
--- /dev/null
+++ b/webapps/images/stripes.png
Binary files differ
diff --git a/webapps/index.esp b/webapps/index.esp
new file mode 100644
index 0000000000..1924e40210
--- /dev/null
+++ b/webapps/index.esp
@@ -0,0 +1,30 @@
+<% page_header("columns", "Server Status", "main");
+ libinclude("base.js");
+ libinclude("management.js");
+ libinclude("provision.js");
+
+ if (install_ok(session.authinfo.session_info, session.authinfo.credentials) == false) {
+ redirect("/install/");
+ }
+
+%>
+
+<h1>Server Status</h1>
+
+<%
+var servers = new Array("nbt_server", "smb_server", "ldap_server", "cldap_server", "kdc_server");
+var i;
+var info = new Object();
+
+info["NBT Server"] = server_status("nbt");
+info["WINS Server"] = server_status("wins");
+info["CLDAP Server"] = server_status("cldap");
+info["Kerberos Server"] = server_status("kdc");
+info["SMB Server"] = stream_server_status("smb");
+info["LDAP Server"] = stream_server_status("ldap");
+info["RPC Server"] = stream_server_status("rpc");
+
+simple_table(info);
+%>
+
+<% page_footer(); %>
diff --git a/webapps/install/index.esp b/webapps/install/index.esp
new file mode 100644
index 0000000000..5a73b7751f
--- /dev/null
+++ b/webapps/install/index.esp
@@ -0,0 +1,20 @@
+<% page_header("columns", "Server Installation", "install");
+%>
+
+<h1>Installation</h1>
+
+Welcome to Samba4 installation. Before proceeding, you will need to
+know:
+
+<ul>
+<li>The domain name you will use
+<li>The realm name you will use
+</ul>
+
+After you have decided on those, choose the 'Provisioning' menu item
+on the left, and fill in the form.<p>
+
+<b>Warning!</b> When you provision, your existing user database is
+wiped and replaced with a new one.
+
+<% page_footer(); %>
diff --git a/webapps/install/newuser.esp b/webapps/install/newuser.esp
new file mode 100644
index 0000000000..1b341ff665
--- /dev/null
+++ b/webapps/install/newuser.esp
@@ -0,0 +1,50 @@
+<% page_header("columns", "Add a user", "install");
+
+ include("/scripting/forms.js");
+ libinclude("base.js");
+ libinclude("provision.js");
+%>
+
+<h1>Add a user</h1>
+
+<%
+var f = FormObj("newuser", 0, 2);
+var i;
+var rand = random_init();
+
+f.add("USERNAME", "User Name");
+f.add("UNIXNAME", "Unix Name");
+f.add("PASSWORD", "Password", "password");
+f.add("CONFIRM", "Confirm Password", "password");
+f.submit[0] = "Add";
+f.submit[1] = "Cancel";
+
+if (form['submit'] == "Cancel") {
+ redirect("/");
+}
+
+
+if (form['submit'] == "Add" &&
+ form.USERNAME != undefined) {
+ var goodpass = (form.CONFIRM == form.PASSWORD);
+
+ if (!goodpass) {
+ write("<h3>Passwords don't match. Please try again.</h3>");
+ f.display();
+ } else {
+ if (form.UNIXNAME == undefined) {
+ form.UNIXNAME = form.USERNAME;
+ }
+ if (form.PASSWORD == undefined) {
+ form.PASSWORD = rand.randpass();
+ }
+ newuser(form.USERNAME, form.UNIXNAME, form.PASSWORD, writefln,
+ session.authinfo.session_info, session.authinfo.credentials);
+ }
+} else {
+ f.display();
+}
+%>
+
+
+<% page_footer(); %>
diff --git a/webapps/install/provision.esp b/webapps/install/provision.esp
new file mode 100644
index 0000000000..ee9673d507
--- /dev/null
+++ b/webapps/install/provision.esp
@@ -0,0 +1,79 @@
+<% page_header("columns", "Provisioning", "install");
+
+ include("/scripting/forms.js");
+ libinclude("base.js");
+ libinclude("provision.js");
+%>
+
+<h1>Samba4 provisioning</h1>
+
+<%
+var f = FormObj("Provisioning", 0, 2);
+var i;
+var lp = loadparm_init();
+
+if (lp.get("realm") == "") {
+ lp.set("realm", lp.get("workgroup") + ".example.com");
+}
+
+
+var subobj = provision_guess();
+/* Don't supply default password for web interface */
+subobj.ADMINPASS = "";
+
+f.add("REALM", "DNS Domain Name");
+f.add("DOMAIN", "NetBIOS Domain Name");
+f.add("HOSTNAME", "Hostname");
+f.add("ADMINPASS", "Administrator Password", "password");
+f.add("CONFIRM", "Confirm Password", "password");
+f.add("DOMAINSID", "Domain SID");
+f.add("HOSTIP", "Host IP");
+f.add("DEFAULTSITE", "Default Site");
+f.submit[0] = "Provision";
+f.submit[1] = "Cancel";
+
+if (form['submit'] == "Cancel") {
+ redirect("/");
+}
+
+if (form['submit'] == "Provision") {
+ for (r in form) {
+ subobj[r] = form[r];
+ }
+}
+
+for (i=0;i<f.element.length;i++) {
+ f.element[i].value = subobj[f.element[i].name];
+}
+
+if (form['submit'] == "Provision") {
+ lp.set("realm", subobj.REALM);
+ var goodpass = (subobj.CONFIRM == subobj.ADMINPASS);
+
+ if (!goodpass) {
+ write("<h3>Passwords don't match. Please try again.</h3>");
+ f.display();
+ } else if (subobj.ADMINPASS == "") {
+ write("<h3>You must choose an administrator password. Please try again.</h3>");
+ f.display();
+ } else if (!provision_validate(subobj, writefln)) {
+ f.display();
+ } else {
+ var paths = provision_default_paths(subobj);
+ if (!provision(subobj, writefln, false, paths,
+ session.authinfo.session_info, session.authinfo.credentials)) {
+ writefln("Provision failed!");
+ } else if (!provision_dns(subobj, writefln, paths,
+ session.authinfo.session_info, session.authinfo.credentials)) {
+ writefln("DNS Provision failed!");
+ } else {
+ writefln("Provision Complete!");
+ }
+ }
+} else {
+ f.display();
+}
+%>
+
+
+<% page_footer(); %>
diff --git a/webapps/install/samba3.esp b/webapps/install/samba3.esp
new file mode 100644
index 0000000000..31857c01e9
--- /dev/null
+++ b/webapps/install/samba3.esp
@@ -0,0 +1,106 @@
+<% page_header("columns", "Upgrade", "install");
+
+ /* frontend to Samba3 upgrade.
+ Based on provision.esp
+ (C) Jelmer Vernooij 2005
+ Published under the GNU GPL
+ */
+
+ include("/scripting/forms.js");
+ libinclude("base.js");
+ libinclude("provision.js");
+ libinclude("upgrade.js");
+%>
+
+<h1>Import from Samba3</h1>
+
+<%
+if (form['submit'] == "Cancel") {
+ redirect("/");
+}
+
+function confirm_form()
+{
+ var samba3 = samba3_read(form['LIBDIR'], form['SMBCONF']);
+
+ var subobj = upgrade_provision(samba3);
+ var f = FormObj("Import from Samba3", 0, 2);
+ subobj.ADMINPASS = "";
+
+ f.add("REALM", "Realm");
+ f.add("DOMAIN", "Domain Name");
+ f.add("HOSTNAME", "Hostname");
+ f.add("ADMINPASS", "Administrator Password", "password");
+ f.add("CONFIRM", "Confirm Password", "password");
+ f.add("DOMAINSID", "Domain SID");
+ f.add("HOSTGUID", "Host GUID");
+ f.add("HOSTIP", "Host IP");
+ f.add("DEFAULTSITE", "Default Site");
+
+ for (i=0;i<f.element.length;i++) {
+ f.element[i].value = subobj[f.element[i].name];
+ }
+
+ f.add("SMBCONF", "", "hidden", form['SMBCONF']);
+ f.add("LIBDIR", "", "hidden", form['LIBDIR']);
+
+ f.submit[0] = "Continue";
+ f.submit[1] = "Cancel";
+ f.display();
+}
+
+if (form['submit'] == "Import") {
+ confirm_form();
+} else if (form['submit'] == "Continue") {
+ var samba3 = samba3_read(form['LIBDIR'], form['SMBCONF']);
+ assert(samba3 != undefined);
+ var subobj = upgrade_provision(samba3);
+ for (r in form) {
+ subobj[r] = form[r];
+ }
+
+ var goodpass = (subobj.CONFIRM == subobj.ADMINPASS);
+
+ if (!goodpass) {
+ write("<h3>Passwords don't match. Please try again.</h3>");
+ confirm_form();
+ } else if (subobj.ADMINPASS == "") {
+ write("<h3>You must choose an administrator password. Please try again.</h3>");
+ confirm_form();
+ } else {
+ var paths = provision_default_paths(subobj);
+ if (!provision(subobj, writefln, true, paths,
+ session.authinfo.session_info, session.authinfo.credentials)) {
+ writefln("Provision failed!");
+ } else {
+ var ret = upgrade(subobj,samba3,message,paths,
+ session.authinfo.session_info, session.authinfo.credentials);
+ if (ret > 0) {
+ writefln("Failed to import %d entries\n", ret);
+ } else {
+ if (!provision_dns(subobj, writefln, paths,
+ session.authinfo.session_info, session.authinfo.credentials)) {
+ writefln("DNS Provision failed!");
+ } else {
+ writefln("Reloading smb.conf\n");
+ var lp = loadparm_init();
+ lp.reload();
+ writefln("Upgrade Complete!");
+ }
+ }
+ }
+ }
+} else {
+ var f = FormObj("Import from Samba3", 0, 2);
+
+ f.add("SMBCONF", "smb.conf file", "text", "/etc/samba/smb.conf");
+ f.add("LIBDIR", "Lib directory", "text", "/var/lib/samba");
+ f.submit[0] = "Import";
+ f.submit[1] = "Cancel";
+
+ write('<p>Warning: This will erase your current configuration!</p>');
+ f.display();
+}
+%>
+
+<% page_footer(); %>
diff --git a/webapps/install/vampire.esp b/webapps/install/vampire.esp
new file mode 100644
index 0000000000..9ce874cd18
--- /dev/null
+++ b/webapps/install/vampire.esp
@@ -0,0 +1,120 @@
+<% page_header("columns", "Windows to Samba Migration", "install");
+
+ include("/scripting/forms.js");
+ libinclude("base.js");
+ libinclude("provision.js");
+
+ var misc = misc_init();
+%>
+
+<h1>Windows to Samba4 domain migration</h1>
+
+<%
+var f = FormObj("Provisioning", 0, 2);
+var i;
+var lp = loadparm_init();
+
+if (lp.get("realm") == "") {
+ lp.set("realm", lp.get("workgroup") + ".example.com");
+}
+
+
+var subobj = provision_guess();
+/* Don't supply default password for web interface */
+subobj.ADMINPASS = "";
+
+f.add("REALM", "DNS Domain Name");
+f.add("DOMAIN", "NetBIOS Domain Name");
+f.add("ADMIN", "Administrator Username");
+f.add("ADMINPASS", "Administrator Password", "password");
+f.add("HOSTNAME", "My Hostname");
+f.add("HOSTIP", "My Host's IP");
+f.add("DEFAULTSITE", "Default Site");
+f.submit[0] = "Migrate";
+f.submit[1] = "Cancel";
+
+if (form['submit'] == "Cancel") {
+ redirect("/");
+}
+
+if (form['submit'] == "Migrate") {
+ for (r in form) {
+ subobj[r] = form[r];
+ }
+}
+
+for (i=0;i<f.element.length;i++) {
+ f.element[i].value = subobj[f.element[i].name];
+}
+
+if (form['submit'] == "Migrate") {
+ lp.set("realm", subobj.REALM);
+ if (subobj.ADMINPASS == "") {
+ write("<h3>We need the administrator password for the " + subobj.DOMAIN + " domain to proceed. Please try again.</h3>");
+ f.display();
+ } else if (!provision_validate(subobj, writefln)) {
+ f.display();
+ } else if (strupper(lp.get("server role")) == "PDC") {
+ writefln("You need to set 'server role' to 'member server' before starting the migration process");
+ } else {
+ var creds = credentials_init();
+ var samdb;
+ creds.set_username(form.ADMIN);
+ creds.set_password(form.ADMINPASS);
+ creds.set_domain(form.DOMAIN);
+ creds.set_realm(form.REALM);
+
+ var info = new Object();
+ var paths = provision_default_paths(subobj);
+ var session_info = session.authinfo.session_info;
+ var credentials = session.authinfo.credentials;
+
+ info.credentials = credentials;
+ info.session_info = session_info;
+ info.message = writefln;
+ info.subobj = subobj;
+
+ /* Setup a basic database structure, but don't setup any users */
+ if (!provision(subobj, writefln, true, paths,
+ session_info, credentials)) {
+ writefln("Provision failed!");
+
+ /* Join domain */
+ } else if (!join_domain(form.DOMAIN, form.HOSTNAME, misc.SEC_CHAN_BDC, creds, writefln)) {
+ writefln("Domain Join failed!");
+
+ /* Vampire */
+ } else if (!vampire(form.DOMAIN, session.authinfo.session_info,
+ session.authinfo.credentials, writefln)) {
+ writefln("Failed to syncronsise remote domain into local database!");
+ } else if (!provision_dns(subobj, writefln, paths,
+ session.authinfo.session_info, session.authinfo.credentials)) {
+ writefln("DNS Provision failed!");
+ } else if (!(samdb = open_ldb(info, paths.samdb, false))) {
+ writefln("Opening " + paths.samdb + " failed!");
+ info.samdb = samdb;
+ } else if (!setup_name_mappings(info, samdb)) {
+ writefln("Setup of name mappings failed!");
+ } else {
+ var zonepath = paths.dns;
+ %>
+<h3>Database migrated!</h3>
+
+You need to do the following to complete the process:
+
+<ul>
+<li>Install the <b>@@zonepath</b> zone file into your bind install, and restart bind
+<li>Change your smb.conf to set "server role = pdc"
+<li>Shutdown your existing PDC and any other DCs
+<li>Restart smbd
+</ul>
+ <%
+ }
+ }
+} else {
+ f.display();
+}
+%>
+
+
+<% page_footer(); %>
diff --git a/webapps/login.esp b/webapps/login.esp
new file mode 100644
index 0000000000..8d6c049d02
--- /dev/null
+++ b/webapps/login.esp
@@ -0,0 +1,59 @@
+<% page_header("plain", "SWAT Login", "");
+ libinclude("auth.js");
+ include("/scripting/forms.js");
+
+if (request['SESSION_EXPIRED'] == "True") {
+ write("<b>Your session has expired - please authenticate again<br /></b>\n");
+}
+
+var f = FormObj("login", 3, 1);
+f.element[0].label = "Username";
+f.element[0].value = form['Username'];
+f.element[1].label = "Password";
+f.element[1].value = form['Password'];
+f.element[1].type = "password";
+f.element[2].label = "Domain";
+f.element[2].type = "select";
+f.element[2].list = getDomainList();
+f.submit[0] = "Login";
+
+f.display();
+%>
+
+<%
+ if (request.REQUEST_METHOD == "POST") {
+ var creds = credentials_init();
+ creds.set_username(form.Username);
+ creds.set_password(form.Password);
+ creds.set_domain(form.Domain);
+ creds.set_workstation(request['REMOTE_HOST']);
+
+ auth = userAuth(creds, request['REMOTE_SOCKET_ADDRESS']);
+ if (auth == undefined) {
+ write("<b>Invalid login - please try again<br /></b>\n");
+ } else if (auth.result) {
+ session.AUTHENTICATED = true;
+ session.authinfo = new Object();
+
+ session.authinfo.username = auth.username;
+ session.authinfo.domain = auth.domain;
+ session.authinfo.credentials = creds;
+ session.authinfo.session_info = auth.session_info;
+
+ /* if the user was asking for the login page, then now
+ redirect them to the main page. Otherwise just
+ redirect them to the current page, which will now
+ show its true content */
+ if (request.REQUEST_URI == "/login.esp") {
+ redirect(session_uri("/"));
+ } else {
+ redirect(session_uri(request.REQUEST_URI));
+ }
+ } else if (auth.report == undefined) {
+ write("<b>Login failed - please try again<br /></b>\n");
+ } else {
+ write("<b>Login failed: " + auth.report + " - please try again<br /></b>\n");
+ }
+ }
+%>
+<% page_footer(); %>
diff --git a/webapps/logout.esp b/webapps/logout.esp
new file mode 100644
index 0000000000..d0d971d962
--- /dev/null
+++ b/webapps/logout.esp
@@ -0,0 +1,8 @@
+<%
+page_header("plain", "Logging out", "");
+
+session.AUTHENTICATED = false;
+redirect("/login.esp");
+
+page_footer();
+%>
diff --git a/webapps/menu.js b/webapps/menu.js
new file mode 100644
index 0000000000..f752c1febc
--- /dev/null
+++ b/webapps/menu.js
@@ -0,0 +1,67 @@
+/*
+ the menu hierarchy for SWAT
+*/
+
+include("/scripting/menus.js");
+
+swat_menus = new Object();
+
+swat_menus.main = simple_menu(
+ "Main Menu",
+ "Servers", session_uri("/?menu=servers"),
+ "Installation", session_uri("/install/"),
+ "ESP Tests", session_uri("/esptest/"),
+ "Preview of new SWAT",session_uri("/index.html"));
+
+swat_menus.servers = simple_menu(
+ "Servers",
+ "LDAP Server", session_uri("/ldap_server/"),
+ "CLDAP Server", session_uri("/cldap_server/"),
+ "RPC Server", session_uri("/rpc_server/"),
+ "NBT Server", session_uri("/nbt_server/"),
+ "WINS Server", session_uri("/wins_server/"),
+ "Kerberos Server", session_uri("/kdc_server/"));
+
+swat_menus.esptest = simple_menu(
+ "ESP Tests",
+ "ldb database", session_uri("/esptest/ldb.esp"),
+ "samr calls", session_uri("/esptest/samr.esp"),
+ "html forms", session_uri("/esptest/formtest.esp"),
+ "esp includes", session_uri("/esptest/include.esp"),
+ "session variables", session_uri("/esptest/session.esp"),
+ "loadparm access", session_uri("/esptest/loadparm.esp"),
+ "exception handling", session_uri("/esptest/exception.esp"),
+ "environment variables", session_uri("/esptest/showvars.esp"),
+ "registry", session_uri("/esptest/registry.esp"));
+
+swat_menus.json = simple_menu(
+ "JSON Tests",
+ "ldb browser", session_uri("/apps/samba/utils/ldbbrowse.html"),
+ "admin console", session_uri("/apps/samba/utils/admin_console.html"));
+
+
+swat_menus.install = simple_menu(
+ "Installation",
+ "Provisioning", session_uri("/install/provision.esp"),
+ "New User", session_uri("/install/newuser.esp"),
+ "Import from Samba3", session_uri("/install/samba3.esp"),
+ "Import from Windows", session_uri("/install/vampire.esp"));
+
+
+swat_menus.nbt_server = simple_menu(
+ "NBT Server",
+ "Statistics", session_uri("/nbt_server/index.esp"));
+
+
+swat_menus.docs = simple_menu(
+ "Links",
+ "Samba4 development", "http://devel.samba.org/",
+ "Recent Checkins", "http://build.samba.org/?tree=samba4;function=Recent+Checkins",
+ "Recent Builds", "http://build.samba.org/?tree=samba4;function=Recent+Builds",
+ "EJS Information", "http://www.appwebserver.org/products/ejs/ejs.html",
+ "ESP Information", "http://www.appwebserver.org/products/esp/esp.html",
+ "XHTML Spec", "http://www.w3.org/TR/xhtml1/",
+ "JavaScript Spec", "http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf",
+ "CSS Specs", "http://www.w3.org/Style/CSS/#specs",
+ "CSS1/2 Reference", "http://www.w3schools.com/css/css_reference.asp");
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/AUTHORS b/webapps/qooxdoo-0.6.3-sdk/AUTHORS
new file mode 100644
index 0000000000..da3a56b974
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/AUTHORS
@@ -0,0 +1,2 @@
+Please point your browser to:
+http://qooxdoo.org/about/developers
diff --git a/webapps/qooxdoo-0.6.3-sdk/LICENSE b/webapps/qooxdoo-0.6.3-sdk/LICENSE
new file mode 100644
index 0000000000..b1e3f5a263
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/LICENSE
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/README b/webapps/qooxdoo-0.6.3-sdk/README
new file mode 100644
index 0000000000..5da218aad3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/README
@@ -0,0 +1,2 @@
+Please point your browser to:
+http://qooxdoo.org/documentation/user_manual
diff --git a/webapps/qooxdoo-0.6.3-sdk/RELEASENOTES b/webapps/qooxdoo-0.6.3-sdk/RELEASENOTES
new file mode 100644
index 0000000000..232d4e0cca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/RELEASENOTES
@@ -0,0 +1,2 @@
+Please point your browser to:
+http://qooxdoo.org/about/release_notes
diff --git a/webapps/qooxdoo-0.6.3-sdk/TODO b/webapps/qooxdoo-0.6.3-sdk/TODO
new file mode 100644
index 0000000000..7884daaa09
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/TODO
@@ -0,0 +1,2 @@
+Please point your browser to:
+http://qooxdoo.org/community/bugs
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/Makefile b/webapps/qooxdoo-0.6.3-sdk/frontend/Makefile
new file mode 100644
index 0000000000..4b40fedbb8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/Makefile
@@ -0,0 +1,294 @@
+###################################################################################
+# VARIABLES
+###################################################################################
+
+VERSION = 0.6.3
+
+NICE=10
+NICE_CALL = nice -n $(NICE)
+
+RELEASE_BUILD_UNIX = release/temp/build/unix/qooxdoo-$(VERSION)-build
+RELEASE_BUILD_DOS = release/temp/build/dos/qooxdoo-$(VERSION)-build
+
+RELEASE_SDK_UNIX = release/temp/sdk/unix/qooxdoo-$(VERSION)-sdk
+RELEASE_SDK_DOS = release/temp/sdk/dos/qooxdoo-$(VERSION)-sdk
+
+FIX_FILES = -name "*.py" -o -name "*.sh" -o -name "*.js" -o -name "*.html" -o -name "*.css" -o -name "*.xml" -o -name Makefile -o -name AUTHORS -o -name LICENSE -o -name README -o -name RELEASENOTES -o -name TODO
+
+RSYNC_BUILD_OPT = --recursive --archive --delete
+RSYNC_SDK_OPT = $(RSYNC_BUILD_OPT) --exclude script --exclude .svn
+
+RSYNC_BUILD_EXEC = @$(NICE_CALL) rsync $(RSYNC_BUILD_OPT)
+RSYNC_SDK_EXEC = @$(NICE_CALL) rsync $(RSYNC_SDK_OPT)
+
+ANY2DOS = | xargs framework/tool/modules/textutil.py --command any2Dos
+ANY2UNIX = | xargs framework/tool/modules/textutil.py --command any2Unix
+
+
+
+###################################################################################
+# DEFAULT TARGET
+###################################################################################
+
+all: build
+
+
+
+###################################################################################
+# COMMON TARGETS
+###################################################################################
+
+build:
+ @$(MAKE) -C api build
+ @$(MAKE) -C demo build
+ @$(MAKE) -C framework build
+
+source:
+ @$(MAKE) -C api source
+ @$(MAKE) -C demo source
+ @$(MAKE) -C framework source
+
+api-build:
+ @$(MAKE) -C api build
+
+demo-build:
+ @$(MAKE) -C demo build
+
+framework-build:
+ @$(MAKE) -C framework build
+
+api-source:
+ @$(MAKE) -C api source
+
+demo-source:
+ @$(MAKE) -C demo source
+
+framework-source:
+ @$(MAKE) -C framework source
+
+skeleton-archives:
+ @$(MAKE) -C skeleton archives
+
+demo-sync:
+ @$(MAKE) -C demo sync
+
+api-sync:
+ @$(MAKE) -C api sync
+
+framework-debug:
+ @$(MAKE) -C framework debug
+
+
+
+###################################################################################
+# CLEANUP TARGETS
+###################################################################################
+
+clean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES"
+ @echo "----------------------------------------------------------------------------"
+ @$(MAKE) -C api clean
+ @$(MAKE) -C demo clean
+ @$(MAKE) -C framework clean
+ @$(MAKE) -C skeleton clean
+
+realclean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (REAL)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @$(MAKE) -C api realclean
+ @$(MAKE) -C demo realclean
+ @$(MAKE) -C framework realclean
+ @$(MAKE) -C skeleton realclean
+
+ @echo " * Deleting release temp data..."
+ @$(NICE_CALL) rm -rf release/temp
+
+distclean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (DIST)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @$(MAKE) -C api distclean
+ @$(MAKE) -C demo distclean
+ @$(MAKE) -C framework distclean
+ @$(MAKE) -C skeleton distclean
+
+ @echo " * Deleting cache..."
+ @$(NICE_CALL) rm -rf .cache
+
+ @echo " * Deleting release archives..."
+ @$(NICE_CALL) rm -rf release
+
+
+
+
+
+
+###################################################################################
+# RELEASE TARGETS
+###################################################################################
+
+release: release-build release-sdk
+release-fast: release-build-fast release-sdk-fast
+
+
+
+
+release-build: build release-build-fast
+release-build-fast: release-build-sync release-build-compress
+
+release-build-sync:
+ @echo
+ @echo " SYNCHRONISATION OF UNIX BUILD RELEASE"
+ @echo "----------------------------------------------------------------------------"
+
+ @echo " * Copying info files..."
+ @mkdir -p $(RELEASE_BUILD_UNIX)
+ @find ../ -maxdepth 1 -type f -name "[A-Z]*" -exec cp -f {} $(RELEASE_BUILD_UNIX) \;
+
+ @echo " * Synchronizing Unix build folders..."
+ @mkdir -p $(RELEASE_BUILD_UNIX)/frontend/api
+ $(RSYNC_BUILD_EXEC) api/build/* $(RELEASE_BUILD_UNIX)/frontend/api
+ @mkdir -p $(RELEASE_BUILD_UNIX)/frontend/demo
+ $(RSYNC_BUILD_EXEC) demo/build/* $(RELEASE_BUILD_UNIX)/frontend/demo
+ @mkdir -p $(RELEASE_BUILD_UNIX)/frontend/framework
+ $(RSYNC_BUILD_EXEC) framework/build/* $(RELEASE_BUILD_UNIX)/frontend/framework
+
+ @echo " * Fixing line-breaks..."
+ @$(NICE_CALL) find $(RELEASE_BUILD_UNIX) $(FIX_FILES) $(ANY2UNIX)
+
+ @echo
+ @echo " SYNCHRONISATION OF DOS BUILD RELEASE"
+ @echo "----------------------------------------------------------------------------"
+
+ @echo " * Copying info files..."
+ @mkdir -p $(RELEASE_BUILD_DOS)
+ @find ../ -maxdepth 1 -type f -name "[A-Z]*" -exec cp -f {} $(RELEASE_BUILD_DOS) \;
+
+ @echo " * Synchronizing DOS build folders..."
+ @mkdir -p $(RELEASE_BUILD_DOS)/frontend/api
+ $(RSYNC_BUILD_EXEC) api/build/* $(RELEASE_BUILD_DOS)/frontend/api
+ @mkdir -p $(RELEASE_BUILD_DOS)/frontend/demo
+ $(RSYNC_BUILD_EXEC) demo/build/* $(RELEASE_BUILD_DOS)/frontend/demo
+ @mkdir -p $(RELEASE_BUILD_DOS)/frontend/framework
+ $(RSYNC_BUILD_EXEC) framework/build/* $(RELEASE_BUILD_DOS)/frontend/framework
+
+ @echo " * Fixing line-breaks..."
+ @$(NICE_CALL) find $(RELEASE_BUILD_DOS) $(FIX_FILES) $(ANY2DOS)
+
+release-build-compress:
+ @echo
+ @echo " COMPRESSION OF BUILD RELEASE"
+ @echo "----------------------------------------------------------------------------"
+
+ @echo " * Generating gzip (Unix) archive..."
+ @cd release/temp/build/unix; rm -f qooxdoo-$(VERSION)-build.tar.gz; $(NICE_CALL) tar cfzp ../../../qooxdoo-$(VERSION)-build.tar.gz qooxdoo-$(VERSION)-build
+
+ @echo " * Generating zip (DOS) archive..."
+ @cd release/temp/build/dos; rm -f qooxdoo-$(VERSION)-build.zip; $(NICE_CALL) zip -rq ../../../qooxdoo-$(VERSION)-build.zip qooxdoo-$(VERSION)-build
+
+
+
+
+
+
+
+release-sdk: source skeleton-archives release-sdk-fast
+release-sdk-fast: release-sdk-sync release-sdk-compress
+
+release-sdk-sync:
+ @echo
+ @echo " SYNCHRONISATION OF UNIX SDK RELEASE"
+ @echo "----------------------------------------------------------------------------"
+
+ @echo " * Copying info files..."
+ @mkdir -p $(RELEASE_SDK_UNIX)
+ @find ../ -maxdepth 1 -type f -name "[A-Z]*" -exec cp -f {} $(RELEASE_SDK_UNIX) \;
+
+ @echo " * Copying Makefiles..."
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend
+ @cp -f Makefile $(RELEASE_SDK_UNIX)/frontend
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/api
+ @cp -f api/Makefile $(RELEASE_SDK_UNIX)/frontend/api
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/demo
+ @cp -f demo/Makefile $(RELEASE_SDK_UNIX)/frontend/demo
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/framework
+ @cp -f framework/Makefile $(RELEASE_SDK_UNIX)/frontend/framework
+
+ @echo " * Synchronizing source folders..."
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/api/source
+ $(RSYNC_SDK_EXEC) api/source/* $(RELEASE_SDK_UNIX)/frontend/api/source
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/demo/source
+ $(RSYNC_SDK_EXEC) demo/source/* $(RELEASE_SDK_UNIX)/frontend/demo/source
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/framework/source
+ $(RSYNC_SDK_EXEC) framework/source/* $(RELEASE_SDK_UNIX)/frontend/framework/source
+
+ @echo " * Synchronizing skeleton folder..."
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/skeleton
+ $(RSYNC_BUILD_EXEC) skeleton/build/*.tar.gz $(RELEASE_SDK_UNIX)/frontend/skeleton
+
+ @echo " * Synchronizing tool folders..."
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/demo/tool
+ $(RSYNC_SDK_EXEC) demo/tool/* $(RELEASE_SDK_UNIX)/frontend/demo/tool
+ @$(NICE_CALL) find $(RELEASE_SDK_UNIX)/frontend/demo/tool -name "*.sh" -o -name "*.py" | xargs chmod a+rx
+ @mkdir -p $(RELEASE_SDK_UNIX)/frontend/framework/tool
+ $(RSYNC_SDK_EXEC) framework/tool/* $(RELEASE_SDK_UNIX)/frontend/framework/tool
+ @$(NICE_CALL) find $(RELEASE_SDK_UNIX)/frontend/framework/tool -name "*.sh" -o -name "*.py" | xargs chmod a+rx
+
+ @echo " * Fixing line-breaks..."
+ @$(NICE_CALL) find $(RELEASE_SDK_UNIX) $(FIX_FILES) $(ANY2UNIX)
+
+ @echo
+ @echo " SYNCHRONISATION OF DOS SDK RELEASE"
+ @echo "----------------------------------------------------------------------------"
+
+ @echo " * Copying info files..."
+ @mkdir -p $(RELEASE_SDK_DOS)
+ @find ../ -maxdepth 1 -type f -name "[A-Z]*" -exec cp -f {} $(RELEASE_SDK_DOS) \;
+
+ @echo " * Copying Makefiles..."
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend
+ @cp -f Makefile $(RELEASE_SDK_DOS)/frontend
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/api
+ @cp -f api/Makefile $(RELEASE_SDK_DOS)/frontend/api
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/demo
+ @cp -f demo/Makefile $(RELEASE_SDK_DOS)/frontend/demo
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/framework
+ @cp -f framework/Makefile $(RELEASE_SDK_DOS)/frontend/framework
+
+ @echo " * Synchronizing source folders..."
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/api/source
+ $(RSYNC_SDK_EXEC) api/source/* $(RELEASE_SDK_DOS)/frontend/api/source
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/demo/source
+ $(RSYNC_SDK_EXEC) demo/source/* $(RELEASE_SDK_DOS)/frontend/demo/source
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/framework/source
+ $(RSYNC_SDK_EXEC) framework/source/* $(RELEASE_SDK_DOS)/frontend/framework/source
+
+ @echo " * Synchronizing skeleton folder..."
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/skeleton
+ $(RSYNC_BUILD_EXEC) skeleton/build/*.zip $(RELEASE_SDK_DOS)/frontend/skeleton
+
+ @echo " * Synchronizing tool folders..."
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/demo/tool
+ $(RSYNC_SDK_EXEC) demo/tool/* $(RELEASE_SDK_DOS)/frontend/demo/tool
+ @$(NICE_CALL) find $(RELEASE_SDK_DOS)/frontend/demo/tool -name "*.sh" -o -name "*.py" | xargs chmod a+rx
+ @mkdir -p $(RELEASE_SDK_DOS)/frontend/framework/tool
+ $(RSYNC_SDK_EXEC) framework/tool/* $(RELEASE_SDK_DOS)/frontend/framework/tool
+ @$(NICE_CALL) find $(RELEASE_SDK_DOS)/frontend/framework/tool -name "*.sh" -o -name "*.py" | xargs chmod a+rx
+
+ @echo " * Fixing line-breaks..."
+ @$(NICE_CALL) find $(RELEASE_SDK_DOS) $(FIX_FILES) $(ANY2DOS)
+
+release-sdk-compress:
+ @echo
+ @echo " COMPRESSION OF SDK RELEASE"
+ @echo "----------------------------------------------------------------------------"
+
+ @echo " * Generating gzip (Unix) archive..."
+ @cd release/temp/sdk/unix; rm -f qooxdoo-$(VERSION)-sdk.tar.gz; $(NICE_CALL) tar cfzp ../../../qooxdoo-$(VERSION)-sdk.tar.gz qooxdoo-$(VERSION)-sdk
+
+ @echo " * Generating zip (DOS) archive..."
+ @cd release/temp/sdk/dos; rm -f qooxdoo-$(VERSION)-sdk.zip; $(NICE_CALL) zip -rq ../../../qooxdoo-$(VERSION)-sdk.zip qooxdoo-$(VERSION)-sdk
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/Makefile b/webapps/qooxdoo-0.6.3-sdk/frontend/api/Makefile
new file mode 100755
index 0000000000..299447511f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/Makefile
@@ -0,0 +1,180 @@
+###################################################################################
+# VARIABLES
+###################################################################################
+
+FRAMEWORK=../framework
+GENERATOR=$(FRAMEWORK)/tool/generator.py
+CACHE=$(FRAMEWORK)/.cache
+SOURCELOADER=
+NICE=10
+
+ifneq ($(SOURCELOADER),)
+ SOURCELDR = --source-loader-type $(SOURCELOADER)
+else
+ SOURCELDR =
+endif
+
+
+###################################################################################
+# DEFAULT TARGET
+###################################################################################
+
+all: build
+
+
+
+###################################################################################
+# COMMON TARGETS
+###################################################################################
+
+source: generate-script-source generate-data-source
+build: generate-script-build generate-data-build copy-index-file fix-build-rights
+sync: build sync-qooxdoo-org
+pretty: generate-pretty
+fix: generate-fix
+
+
+
+###################################################################################
+# CLEANUP TARGETS
+###################################################################################
+
+clean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @rm -f source/script/api.js source/script/data.js
+ @rm -f build/script/api.js build/script/data.js
+ @rm -rf build/xml source/xml
+
+realclean: clean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (REAL)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) rm -rf build source/script
+
+distclean: realclean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (DIST)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) find . -name "*~" -o -name "*.bak" -o -name "*.old" | xargs rm -rf
+ @nice -n $(NICE) rm -rf $(CACHE)
+
+
+
+###################################################################################
+# GENERATOR TARGETS
+###################################################################################
+
+generate-script-source:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --source-script-path ../$(FRAMEWORK)/source/class \
+ --script-input source/class \
+ --source-script-path class \
+ --include api \
+ --generate-source-script $(SOURCELDR) \
+ --source-script-file source/script/api.js \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:../$(FRAMEWORK)/source/resource \
+ --cache-directory $(CACHE)
+
+generate-script-build:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --resource-input $(FRAMEWORK)/source/resource \
+ --resource-output build/resource/qooxdoo \
+ --script-input source/class \
+ --resource-input source/resource \
+ --resource-output build/resource \
+ --include api \
+ --generate-compiled-script \
+ --compiled-script-file build/script/api.js \
+ --optimize-strings \
+ --optimize-variables \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:resource/qooxdoo \
+ --copy-resources \
+ --cache-directory $(CACHE)
+
+generate-data-source:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --generate-api-documentation \
+ --api-documentation-json-file source/script/data.js \
+ --cache-directory $(CACHE)
+
+generate-data-build:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --generate-api-documentation \
+ --api-documentation-json-file build/script/data.js \
+ --cache-directory $(CACHE)
+
+generate-data-source-xml:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --generate-api-documentation \
+ --api-documentation-xml-file source/xml/data.xml \
+ --cache-directory $(CACHE)
+
+generate-data-build-xml:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --generate-api-documentation \
+ --api-documentation-xml-file build/xml/data.xml \
+ --cache-directory $(CACHE)
+
+generate-pretty:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --script-input $(FRAMEWORK)/source/class \
+ --include-without-dependencies api.* \
+ --pretty-print \
+ --cache-directory $(CACHE)
+
+generate-fix:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --script-input $(FRAMEWORK)/source/class \
+ --include-without-dependencies api.* \
+ --fix-source \
+ --cache-directory $(CACHE)
+
+
+
+###################################################################################
+# FILE RELATED TARGETS
+###################################################################################
+
+copy-index-file:
+ @echo
+ @echo " CREATE COPY OF HTML FILE"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Copying file..."
+ @cp -f source/index.html build/index.html
+
+fix-build-rights:
+ @echo
+ @echo " FIX RIGHTS ON BUILD FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Fixing file rights..."
+ @nice -n $(NICE) find build -type d | xargs chmod a+rx
+ @nice -n $(NICE) find build -type f | xargs chmod a+r
+
+
+
+
+
+
+###################################################################################
+# ONLINE TARGETS
+###################################################################################
+
+sync-qooxdoo-org:
+ @echo
+ @echo " SYNC FILES TO HOMEPAGE"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Syncing..."
+ @nice -n $(NICE) rsync --checksum --recursive --archive --delete --verbose build/* root@qooxdoo.org:/var/www/qooxdoo/api
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/ClassViewer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/ClassViewer.js
new file mode 100755
index 0000000000..20e110b117
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/ClassViewer.js
@@ -0,0 +1,1589 @@
+/*
+#module(api)
+*/
+
+/**
+ * Shows the class details.
+ */
+qx.OO.defineClass("api.ClassViewer", qx.ui.embed.HtmlEmbed,
+function() {
+ qx.ui.embed.HtmlEmbed.call(this);
+
+ this.setOverflow("auto");
+ this.setPadding(20);
+ this.setEdge(0);
+ this.setHtmlProperty("id", "ClassViewer");
+ this.setVisibility(false);
+
+ api.ClassViewer.instance = this;
+});
+
+
+qx.Proto._fixLinks = function(el)
+{
+ var a = el.getElementsByTagName("a");
+ for (var i=0; i<a.length; i++)
+ {
+ if (typeof a[i].href == "string" && a[i].href.indexOf("http://") == 0) {
+ a[i].target = "_blank";
+ }
+ }
+}
+
+/**
+ * Initializes the content of the embedding DIV. Will be called by the
+ * HtmlEmbed element initialization routine.
+ */
+qx.Proto._syncHtml = function() {
+ var ClassViewer = api.ClassViewer;
+
+ document._detailViewer = this;
+
+ this._infoPanelHash = {};
+
+ var html = "";
+
+ // Add title
+ html += '<h1></h1>';
+
+ // Add description
+ html += ClassViewer.DIV_START + ClassViewer.DIV_END;
+
+ // Add constructor info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_CONSTRUCTOR,
+ "constructor", "constructor", this._createMethodInfo,
+ this._methodHasDetails, false, true);
+
+ // Add properties info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_PROPERTY,
+ "properties", "properties", this._createPropertyInfo,
+ qx.util.Return.returnTrue, true, true);
+
+ // Add event info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_EVENT,
+ "events", "events", this._createEventInfo,
+ this._eventHasDetails, true, true);
+
+ // Add public methods info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_METHOD_PUBLIC,
+ "methods-pub", "public methods", this._createMethodInfo,
+ this._methodHasDetails, true, true);
+
+ // Add protected methods info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_METHOD_PROTECTED,
+ "methods-prot", "protected methods", this._createMethodInfo,
+ this._methodHasDetails, true, false);
+
+ // Add static public methods info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_METHOD_STATIC_PUBLIC,
+ "methods-static-pub", "static public methods", this._createMethodInfo,
+ this._methodHasDetails, false, true);
+
+ // Add static protected methods info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_METHOD_STATIC_PROTECTED,
+ "methods-static-prot", "static protected methods", this._createMethodInfo,
+ this._methodHasDetails, false, false);
+
+ // Add constants info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_CONSTANT,
+ "constants", "constants", this._createConstantInfo,
+ this._constantHasDetails, false, true);
+
+
+ // Set the html
+ // doc.body.innerHTML = html;
+ this.getElement().innerHTML = html;
+ this._fixLinks(this.getElement());
+
+ // Extract the main elements
+ var divArr = this.getElement().childNodes;
+ this._titleElem = divArr[0];
+ this._classDescElem = divArr[1];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_CONSTRUCTOR].infoElem = divArr[2];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_PROPERTY].infoElem = divArr[3];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_EVENT].infoElem = divArr[4];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_METHOD_PUBLIC].infoElem = divArr[5];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_METHOD_PROTECTED].infoElem = divArr[6];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_METHOD_STATIC_PUBLIC].infoElem = divArr[7];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_METHOD_STATIC_PROTECTED].infoElem = divArr[8];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_CONSTANT].infoElem = divArr[9];
+
+ // Get the child elements
+ for (var nodeType in this._infoPanelHash) {
+ var typeInfo = this._infoPanelHash[nodeType];
+ typeInfo.infoTitleElem = typeInfo.infoElem.firstChild;
+ typeInfo.infoBodyElem = typeInfo.infoElem.lastChild;
+ }
+
+ // Update the view
+ if (this._currentClassDocNode) {
+ // NOTE: We have to set this._currentClassDocNode to null beore, because
+ // otherwise showClass thinks, there's nothing to do
+ var classDocNode = this._currentClassDocNode;
+ this._currentClassDocNode = null;
+ this.showClass(classDocNode);
+ }
+}
+
+
+/**
+ * Creates an info panel. An info panel shows the information about one item
+ * type (e.g. for public methods).
+ *
+ * @param nodeType {int} the node type to create the info panel for.
+ * @param listName {string} the name of the node list in the class doc node where
+ * the items shown by this info panel are stored.
+ * @param labelText {string} the label text describing the node type.
+ * @param infoFactory {function} the factory method creating the HTML for one
+ * item.
+ * @param hasDetailDecider {function} a function returning <code>true</code>
+ * when a item has details.
+ * @param addInheritedCheckBox {boolean} whether to add a "show inherited ..."
+ * checkbox.
+ * @param isOpen {boolean} whether the info panel is open by default.
+ * @return {string} the HTML for the info panel.
+ */
+qx.Proto._createInfoPanel = function(nodeType, listName, labelText, infoFactory,
+ hasDetailDecider, addInheritedCheckBox, isOpen)
+{
+ var uppercaseLabelText = labelText.charAt(0).toUpperCase() + labelText.substring(1);
+
+ typeInfo = { listName:listName, labelText:labelText, infoFactory:infoFactory,
+ hasDetailDecider:hasDetailDecider, isOpen:isOpen,
+ hasInheritedCheckBox:addInheritedCheckBox }
+ this._infoPanelHash[nodeType] = typeInfo;
+
+ var html = '<div class="infoPanel"><h2>';
+
+ if (addInheritedCheckBox) {
+ html += '<span class="inheritCheck"><input type="checkbox" id="chk_' + nodeType + '" '
+ + 'onclick="document._detailViewer._onInheritedCheckBoxClick(' + nodeType + ')"></input>'
+ + '<label for="chk_' + nodeType + '">Show inherited</label></span>';
+ }
+
+ html += '<img class="openclose" src="'
+ + qx.manager.object.AliasManager.getInstance().resolvePath('api/' + (isOpen ? 'close.gif' : 'open.gif')) + '"'
+ + " onclick=\"document._detailViewer._onShowInfoPanelBodyClicked(" + nodeType + ")\"/> "
+ + '<span '
+ + " onclick=\"document._detailViewer._onShowInfoPanelBodyClicked(" + nodeType + ")\">"
+ + uppercaseLabelText
+ + '</span>';
+
+ html += '</h2><div></div></div>';
+
+ return html;
+}
+
+
+/**
+ * Shows the information about a class.
+ *
+ * @param classNode {Map} the doc node of the class to show.
+ */
+qx.Proto.showClass = function(classNode) {
+ if (this._currentClassDocNode == classNode) {
+ // Nothing to do
+ return;
+ }
+
+ this._currentClassDocNode = classNode;
+
+ if (!this._titleElem) {
+ // _initContentDocument was not called yet
+ // -> Do nothing, the class will be shown in _initContentDocument.
+ return;
+ }
+
+ var ClassViewer = api.ClassViewer;
+
+ var titleHtml = "";
+
+ titleHtml += '<div class="packageName">' + classNode.attributes.packageName + '</div>';
+
+ titleHtml += '<span class="typeInfo">';
+
+ if (classNode.attributes.isAbstract) {
+ titleHtml += "Abstract ";
+ } else if (classNode.attributes.isStatic) {
+ titleHtml += "Static ";
+ }
+
+ titleHtml += "Class ";
+ titleHtml += '</span>';
+ titleHtml += classNode.attributes.name;
+
+ this._titleElem.innerHTML = titleHtml;
+
+ var classHtml = "";
+
+ // Add the class description
+ var ctorList = api.TreeUtil.getChild(classNode, "constructor");
+ if (ctorList) {
+ var desc = this._createDescHtml(ctorList.children[0], classNode, true);
+
+ if (desc != "")
+ {
+ classHtml += '<div class="classDescription">' + desc + '</div>';
+ classHtml += "<br/>";
+ }
+ }
+
+ // Create the class hierarchy
+ classHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inheritance hierarchy:" + ClassViewer.DIV_END;
+
+ var classHierarchy = [];
+ var currClass = classNode;
+ while (currClass != null) {
+ classHierarchy.push(currClass);
+ currClass = this._getClassDocNode(currClass.attributes.superClass);
+ }
+ this._currentClassHierarchy = classHierarchy;
+
+ // Add the class hierarchy
+ classHtml += ClassViewer.createImageHtml("api/class18.gif") + "Object<br/>";
+ var indent = 0;
+ for (var i = classHierarchy.length - 1; i >= 0; i--) {
+ classHtml += ClassViewer.createImageHtml("api/nextlevel.gif", null, "margin-left:" + indent + "px")
+ + ClassViewer.createImageHtml(api.TreeUtil.getIconUrl(classHierarchy[i]));
+ if (i != 0) {
+ classHtml += this._createItemLinkHtml(classHierarchy[i].attributes.fullName, null, false);
+ } else {
+ classHtml += classHierarchy[i].attributes.fullName;
+ }
+ classHtml += "<br/>";
+ indent += 18;
+ }
+
+ classHtml += '<br/>';
+
+ // Add child classes
+ if (classNode.attributes.childClasses) {
+ classHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Direct subclasses:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT;
+
+ var classNameArr = classNode.attributes.childClasses.split(",");
+ for (var i = 0; i < classNameArr.length; i++) {
+ if (i != 0) {
+ classHtml += ", ";
+ }
+ classHtml += this._createItemLinkHtml(classNameArr[i], null, true, false);
+ }
+
+ classHtml += ClassViewer.DIV_END;
+ classHtml += '<br/>';
+ }
+
+ // Add @see attributes
+ if (ctorList) {
+ classHtml += this._createSeeAlsoHtml(ctorList.children[0], classNode);
+ classHtml += '<br/>';
+ }
+
+ this._classDescElem.innerHTML = classHtml;
+ this._fixLinks(this._classDescElem);
+
+ // Refresh the info viewers
+ for (var nodeType in this._infoPanelHash) {
+ this._updateInfoPanel(parseInt(nodeType));
+ }
+
+ // Scroll to top
+ this.getElement().scrollTop = 0;
+}
+
+qx.Proto.showInfo = function(classNode) {
+ if (this._currentClassDocNode == classNode) {
+ // Nothing to do
+ return;
+ }
+
+ this._currentClassDocNode = classNode;
+
+ if (!this._titleElem) {
+ // _initContentDocument was not called yet
+ // -> Do nothing, the class will be shown in _initContentDocument.
+ return;
+ }
+
+ var ClassViewer = api.ClassViewer;
+
+ this._titleElem.innerHTML = "Info View";
+ this._classDescElem.innerHTML = "";
+
+ // Scroll to top
+ this.getElement().scrollTop = 0;
+}
+
+/**
+ * Highlights an item (property, method or constant) and scrolls it visible.
+ *
+ * @param itemName {string} the name of the item to highlight.
+ */
+qx.Proto.showItem = function(itemName) {
+ var itemNode = api.TreeUtil.getItemDocNode(this._currentClassDocNode, itemName);
+ if (! itemNode) {
+ alert("Item '" + itemName + "' not found");
+ }
+
+ var nodeType = this._getTypeForItemNode(itemNode);
+ var elem = this._getItemElement(nodeType, itemNode.attributes.name).parentNode.parentNode;
+
+ // Handle mark
+ if (this._markedElement) {
+ this._markedElement.className = "";
+ }
+
+ elem.className = "marked";
+ this._markedElement = elem;
+
+ // Scroll the element visible
+ var top = qx.dom.Location.getPageBoxTop(elem);
+ var height = elem.offsetHeight;
+
+ var doc = this.getElement();
+ var scrollTop = doc.scrollTop;
+ var clientHeight = doc.offsetHeight;
+
+ if (scrollTop > top) {
+ doc.scrollTop = top;
+ } else if (scrollTop < top + height - clientHeight) {
+ doc.scrollTop = top + height - clientHeight;
+ }
+}
+
+
+/**
+ * Updates an info panel.
+ *
+ * @param nodeType {int} the node type of which to update the info panel.
+ */
+qx.Proto._updateInfoPanel = function(nodeType) {
+ var ClassViewer = api.ClassViewer;
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the nodes to show
+ var nodeArr = null;
+ var fromClassHash = null;
+ if (typeInfo.isOpen && this._currentClassDocNode) {
+ if (typeInfo.showInherited) {
+ nodeArr = [];
+ fromClassArr = [];
+ fromClassHash = {};
+ var currClassNode = this._currentClassDocNode;
+ while (currClassNode != null) {
+ var currParentNode = api.TreeUtil.getChild(currClassNode, typeInfo.listName);
+ var currNodeArr = currParentNode ? currParentNode.children : null;
+ if (currNodeArr) {
+ // Add the nodes from this class
+ for (var i = 0; i < currNodeArr.length; i++) {
+ var name = currNodeArr[i].attributes.name;
+ if (fromClassHash[name] == null) {
+ fromClassHash[name] = currClassNode;
+ nodeArr.push(currNodeArr[i]);
+ }
+ }
+ }
+
+ var superClassName = currClassNode.attributes.superClass;
+ currClassNode = superClassName ? this._getClassDocNode(superClassName) : null;
+ }
+
+ // Sort the nodeArr by name
+ nodeArr.sort(function(obj1, obj2) {
+ return (obj1.attributes.name.toLowerCase() < obj2.attributes.name.toLowerCase()) ? -1 : 1;
+ });
+ } else {
+ var parentNode = api.TreeUtil.getChild(this._currentClassDocNode, typeInfo.listName);
+ nodeArr = parentNode ? parentNode.children : null;
+ }
+ }
+
+ // Show the nodes
+ if (nodeArr && nodeArr.length != 0)
+ {
+ var html = '<table cellspacing="0" cellpadding="0" class="info" width="100%">';
+
+ for (var i = 0; i < nodeArr.length; i++)
+ {
+ var node = nodeArr[i];
+ var fromClassNode = fromClassHash ? fromClassHash[node.attributes.name] : null;
+ if (fromClassNode == null) {
+ fromClassNode = this._currentClassDocNode;
+ }
+
+ var info = typeInfo.infoFactory.call(this, node, nodeType, fromClassNode, false);
+ var inherited = fromClassNode && (fromClassNode != this._currentClassDocNode);
+ var iconUrl = api.TreeUtil.getIconUrl(node, inherited);
+
+ // Create the title row
+ html += '<tr>';
+
+ html += '<td class="icon">' + ClassViewer.createImageHtml(iconUrl) + '</td>';
+ html += '<td class="type">' + ((info.typeHtml.length != 0) ? (info.typeHtml + "&nbsp;") : "") + '</td>';
+
+ html += '<td class="toggle">';
+ if (typeInfo.hasDetailDecider.call(this, node, nodeType, fromClassNode))
+ {
+ // This node has details -> Show the detail button
+ html += '<img src="' + qx.manager.object.AliasManager.getInstance().resolvePath("api/open.gif") + '"'
+ + " onclick=\"document._detailViewer._onShowItemDetailClicked(" + nodeType + ",'"
+ + node.attributes.name + "'"
+ + ((fromClassNode != this._currentClassDocNode) ? ",'" + fromClassNode.attributes.fullName + "'" : "")
+ + ")\"/>";
+ }
+ else
+ {
+ html += "&#160;";
+ }
+ html += '</td>';
+
+ html += '<td class="text">';
+
+ // Create headline
+ html += '<h3';
+
+ if (typeInfo.hasDetailDecider.call(this, node, nodeType, fromClassNode))
+ {
+ html += " onclick=\"document._detailViewer._onShowItemDetailClicked(" + nodeType + ",'"
+ + node.attributes.name + "'"
+ + ((fromClassNode != this._currentClassDocNode) ? ",'" + fromClassNode.attributes.fullName + "'" : "")
+ + ")\">";
+ }
+ else
+ {
+ html += '>';
+ }
+
+ html += info.titleHtml;
+ html += '</h3>';
+
+ // Create content area
+ html += '<div _itemName="' + nodeArr[i].attributes.name + '">';
+ html += info.textHtml;
+ html += '</div>';
+
+ html += '</td>';
+ html += '</tr>';
+ }
+
+ html += '</table>';
+
+ typeInfo.infoBodyElem.innerHTML = html;
+ this._fixLinks(typeInfo.infoBodyElem);
+ typeInfo.infoBodyElem.style.display = "";
+ }
+ else
+ {
+ if (typeInfo.isOpen)
+ {
+ typeInfo.infoBodyElem.innerHTML = '<div class="empty-info-body">This class has no ' + typeInfo.labelText + '</div>';
+ typeInfo.infoBodyElem.style.display = "";
+ }
+ else
+ {
+ typeInfo.infoBodyElem.style.display = "none";
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the user clicked a button for showing/hiding the
+ * details of an item.
+ *
+ * @param nodeType {int} the node type of the item to show/hide the details.
+ * @param name {string} the name of the item.
+ * @param fromClassName {string} the name of the class the item the item was
+ * defined in.
+ */
+qx.Proto._onShowItemDetailClicked = function(nodeType, name, fromClassName) {
+ try {
+ var typeInfo = this._infoPanelHash[nodeType];
+ var textDiv = this._getItemElement(nodeType, name);
+
+ if (!textDiv) {
+ throw Error("Element for name '" + name + "' not found!");
+ }
+
+ var showDetails = textDiv._showDetails ? !textDiv._showDetails : true;
+ textDiv._showDetails = showDetails;
+
+ var fromClassNode = this._currentClassDocNode;
+ if (fromClassName) {
+ fromClassNode = this._getClassDocNode(fromClassName);
+ }
+
+ var listNode = api.TreeUtil.getChild(fromClassNode, typeInfo.listName);
+ var node;
+ if (nodeType == api.ClassViewer.NODE_TYPE_CONSTRUCTOR) {
+ node = listNode.children[0];
+ } else {
+ node = api.TreeUtil.getChildByAttribute(listNode, "name", name);
+ }
+
+ // Update the close/open image
+ var opencloseImgElem = textDiv.parentNode.previousSibling.firstChild;
+ opencloseImgElem.src = qx.manager.object.AliasManager.getInstance().resolvePath(showDetails ? 'api/close.gif' : 'api/open.gif');
+
+ // Update content
+ var info = typeInfo.infoFactory.call(this, node, nodeType, fromClassNode, showDetails);
+ textDiv.innerHTML = info.textHtml;
+ this._fixLinks(textDiv);
+ } catch (exc) {
+ this.error("Toggling item details failed", exc);
+ }
+}
+
+
+/**
+ * Event handler. Called when the user clicked on a "show inherited ..."
+ * checkbox.
+ *
+ * @param nodeType {int} the node type of which the inherited-checkbox was
+ * clicked.
+ */
+qx.Proto._onInheritedCheckBoxClick = function(nodeType) {
+ try {
+ var typeInfo = this._infoPanelHash[nodeType];
+ var checkboxElem = typeInfo.infoTitleElem.getElementsByTagName("input")[0];
+
+ typeInfo.showInherited = checkboxElem.checked;
+
+ this._updateInfoPanel(nodeType);
+ } catch (exc) {
+ this.error("Handling inherited checkbox click failed", exc);
+ }
+}
+
+
+/**
+ * Event handler. Called when the user clicked a button for showing/hiding the
+ * body of an info panel.
+ *
+ * @param nodeType {int} the node type of which the show/hide-body-button was
+ * clicked.
+ */
+qx.Proto._onShowInfoPanelBodyClicked = function(nodeType) {
+ try {
+ var typeInfo = this._infoPanelHash[nodeType];
+ typeInfo.isOpen = !typeInfo.isOpen;
+
+ var imgElem = typeInfo.infoTitleElem.getElementsByTagName("img")[0];
+ imgElem.src = qx.manager.object.AliasManager.getInstance().resolvePath(typeInfo.isOpen ? 'api/close.gif' : 'api/open.gif');
+
+ this._updateInfoPanel(nodeType);
+ } catch (exc) {
+ this.error("Toggling info body failed", exc);
+ }
+}
+
+
+/**
+ * Gets the HTML element showing the details of an item.
+ *
+ * @param nodeType {int} the node type of the item.
+ * @param name {string} the item's name.
+ * @return {Element} the HTML element showing the details of the item.
+ */
+qx.Proto._getItemElement = function(nodeType, name) {
+ var typeInfo = this._infoPanelHash[nodeType];
+ var elemArr = typeInfo.infoBodyElem.getElementsByTagName("TBODY")[0].childNodes;
+
+ for (var i = 0; i < elemArr.length; i++) {
+ // ARRG, should be implemented in a more fault-tolerant way
+ // iterate over tr's, look inside the third "td" and there the second element
+ if (elemArr[i].childNodes[3].childNodes[1].getAttribute("_itemName") == name) {
+ return elemArr[i].childNodes[3].childNodes[1];
+ }
+ }
+}
+
+
+/**
+ * Selects an item.
+ *
+ * @param itemName {string} the name of the item.
+ * @see ApiViewer#selectItem
+ */
+qx.Proto._selectItem = function(itemName) {
+ try {
+ api.Viewer.instance.selectItem(itemName);
+ qx.ui.core.Widget.flushGlobalQueues();
+ } catch (exc) {
+ this.error("Selecting item '" + itemName + "' failed", exc);
+ }
+}
+
+
+/**
+ * Gets the doc node of a class.
+ *
+ * @param className {string} the name of the class.
+ * @return {Map} the doc node of the class.
+ */
+qx.Proto._getClassDocNode = function(className) {
+ if (className) {
+ return api.TreeUtil.getClassDocNode(api.Viewer.instance.getDocTree(), className);
+ } else {
+ return null;
+ }
+}
+
+
+/**
+ * Creates the HTML showing the information about a property.
+ *
+ * @param node {Map} the doc node of the property.
+ * @param nodeType {int} the node type of the property.
+ * @param fromClassNode {Map} the doc node of the class the property was defined.
+ * @param showDetails {boolean} whether to show the details.
+ * @return {string} the HTML showing the information about the property.
+ */
+qx.Proto._createPropertyInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var ClassViewer = api.ClassViewer;
+
+ var info = {}
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the property node that holds the documentation
+ var docClassNode = fromClassNode;
+ var docNode = node;
+ if (node.attributes.docFrom) {
+ docClassNode = this._getClassDocNode(node.attributes.docFrom);
+ var listNode = api.TreeUtil.getChild(docClassNode, typeInfo.listName);
+ docNode = api.TreeUtil.getChildByAttribute(listNode, "name", node.attributes.name);
+ }
+
+ // Add the title
+ info.typeHtml = this._createTypeHtml(node, fromClassNode, "var");
+ info.titleHtml = node.attributes.name;
+
+ // Add the description
+ info.textHtml = this._createDescHtml(docNode, fromClassNode, showDetails);
+
+ if (showDetails) {
+ // Add allowed values
+ var allowedValue = null;
+ if (node.attributes.possibleValues) {
+ allowedValue = node.attributes.possibleValues;
+ } else if (node.attributes.classname) {
+ allowedValue = "instances of " + node.attributes.classname;
+ } else if (node.attributes.instance) {
+ allowedValue = "instances of " + node.attributes.instance + " or sub classes";
+ } else if (node.attributes.unitDetection) {
+ allowedValue = "units: " + node.attributes.unitDetection;
+ } else if (node.attributes.type) {
+ allowedValue = "any " + node.attributes.type;
+ }
+
+ if (allowedValue) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Allowed values:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT;
+
+ if (node.attributes.allowNull != "false") {
+ info.textHtml += "null, ";
+ }
+ info.textHtml += allowedValue + ClassViewer.DIV_END;
+ }
+
+ // Add default value
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Default value:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + (node.attributes.defaultValue ? node.attributes.defaultValue : "null")
+ + ClassViewer.DIV_END;
+
+ // Add get alias
+ if (node.attributes.getAlias) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Get alias:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT + node.attributes.getAlias + ClassViewer.DIV_END;
+ }
+
+ // Add set alias
+ if (node.attributes.setAlias) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Set alias:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT + node.attributes.setAlias + ClassViewer.DIV_END;
+ }
+
+ // Add inherited from or overridden from
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inherited from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(fromClassNode.attributes.fullName)
+ + ClassViewer.DIV_END;
+ } else if (node.attributes.overriddenFrom) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Overridden from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(node.attributes.overriddenFrom)
+ + ClassViewer.DIV_END;
+ }
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(docNode, docClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(docNode, docClassNode);
+ }
+
+ return info;
+}
+
+
+/**
+ * Checks whether an event has details.
+ *
+ * @param node {Map} the doc node of the event.
+ * @param nodeType {int} the node type of the event.
+ * @param fromClassNode {Map} the doc node of the class the event was defined.
+ * @return {boolean} whether the event has details.
+ */
+qx.Proto._eventHasDetails = function(node, nodeType, fromClassNode) {
+ return (fromClassNode != this._currentClassDocNode) // event is inherited
+ || this._hasSeeAlsoHtml(node)
+ || this._hasErrorHtml(node)
+ || this._descHasDetails(node);
+};
+
+
+/**
+ * Creates the HTML showing the information about an event.
+ *
+ * @param node {Map} the doc node of the event.
+ * @param nodeType {int} the node type of the event.
+ * @param fromClassNode {Map} the doc node of the class the event was defined.
+ * @param showDetails {boolean} whether to show the details.
+ * @return {string} the HTML showing the information about the event.
+ */
+qx.Proto._createEventInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var ClassViewer = api.ClassViewer;
+
+ var info = {}
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Add the title
+ info.typeHtml = this._createTypeHtml(node, fromClassNode, "var");
+ info.titleHtml = node.attributes.name;
+
+ // Add the description
+ info.textHtml = this._createDescHtml(node, fromClassNode, showDetails);
+
+ if (showDetails) {
+ // Add inherited from or overridden from
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inherited from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(fromClassNode.attributes.fullName)
+ + ClassViewer.DIV_END;
+ }
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(node, fromClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(node, fromClassNode);
+ }
+
+ return info;
+};
+
+
+/**
+ * Checks whether a method has details.
+ *
+ * @param node {Map} the doc node of the method.
+ * @param nodeType {int} the node type of the method.
+ * @param fromClassNode {Map} the doc node of the class the method was defined.
+ * @return {boolean} whether the method has details.
+ */
+qx.Proto._methodHasDetails = function(node, nodeType, fromClassNode) {
+ var TreeUtil = api.TreeUtil;
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the method node that holds the documentation
+ var docClassNode = fromClassNode;
+ var docNode = node;
+ if (node.attributes.docFrom) {
+ docClassNode = this._getClassDocNode(node.attributes.docFrom);
+ var listNode = TreeUtil.getChild(docClassNode, typeInfo.listName);
+ docNode = TreeUtil.getChildByAttribute(listNode, "name", node.attributes.name);
+ }
+
+ // Check whether there are details
+ var hasParams = TreeUtil.getChild(docNode, "params") != null;
+ var hasReturn = TreeUtil.getChild(docNode, "return") != null;
+ var isOverridden = fromClassNode != this._currentClassDocNode;
+
+ return (fromClassNode != this._currentClassDocNode) // method is inherited
+ || (node.attributes.overriddenFrom != null) // method is overridden
+ || (TreeUtil.getChild(docNode, "params") != null) // method has params
+ || (TreeUtil.getChild(docNode, "return") != null) // method has return value
+ || this._hasSeeAlsoHtml(docNode)
+ || this._hasErrorHtml(docNode)
+ || this._descHasDetails(docNode);
+}
+
+
+/**
+ * Creates the HTML showing the information about a method.
+ *
+ * @param node {Map} the doc node of the method.
+ * @param nodeType {int} the node type of the method.
+ * @param fromClassNode {Map} the doc node of the class the method was defined.
+ * @param showDetails {boolean} whether to show the details.
+ * @return {string} the HTML showing the information about the method.
+ */
+qx.Proto._createMethodInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var ClassViewer = api.ClassViewer;
+ var TreeUtil = api.TreeUtil;
+
+ var info = {}
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the method node that holds the documentation
+ var docClassNode = fromClassNode;
+ var docNode = node;
+ if (node.attributes.docFrom) {
+ docClassNode = this._getClassDocNode(node.attributes.docFrom);
+ var listNode = TreeUtil.getChild(docClassNode, typeInfo.listName);
+ docNode = TreeUtil.getChildByAttribute(listNode, "name", node.attributes.name);
+ }
+
+ if (node.attributes.isAbstract) {
+ info.typeHtml = "abstract ";
+ } else {
+ info.typeHtml = "";
+ }
+
+ // Get name, icon and return type
+ var returnNode = TreeUtil.getChild(docNode, "return");
+ if (node.attributes.isCtor) {
+ info.titleHtml = fromClassNode.attributes.name;
+ } else {
+ info.titleHtml = node.attributes.name;
+ info.typeHtml += this._createTypeHtml(returnNode, fromClassNode, "void");
+ }
+
+ // Add the title (the method signature)
+ info.titleHtml += '<span class="methodSignature"> <span class="parenthesis">(</span>';
+ var paramsNode = TreeUtil.getChild(docNode, "params");
+ if (paramsNode) {
+ for (var i = 0; i < paramsNode.children.length; i++) {
+ var param = paramsNode.children[i];
+ if (i != 0) {
+ info.titleHtml += '<span class="separator">,</span> ';
+ }
+ info.titleHtml += '<span class="parameterType">' + this._createTypeHtml(param, fromClassNode, "var") + "</span> "
+ + param.attributes.name;
+ if (param.attributes.defaultValue) {
+ info.titleHtml += "?";
+ }
+ }
+ }
+ info.titleHtml += '<span class="parenthesis">)</span></span>';
+
+ // Add the description
+ if (node.attributes.isCtor) {
+ info.textHtml = "Creates a new instance of " + fromClassNode.attributes.name + ".";
+ } else {
+ info.textHtml = this._createDescHtml(docNode, docClassNode, showDetails);
+ }
+
+
+ if (showDetails) {
+ // Add Parameters
+ var paramsNode = TreeUtil.getChild(docNode, "params");
+ if (paramsNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Parameters:" + ClassViewer.DIV_END;
+ for (var i = 0; i < paramsNode.children.length; i++) {
+ var param = paramsNode.children[i];
+ var paramType = param.attributes.type ? param.attributes.type : "var";
+ var dims = param.attributes.arrayDimensions;
+ if (dims) {
+ for (var i = 0; i < dims; i++) {
+ paramType += "[]";
+ }
+ }
+ var defaultValue = param.attributes.defaultValue;
+
+ info.textHtml += ClassViewer.DIV_START_DETAIL_TEXT;
+ if (defaultValue) {
+ info.textHtml += ClassViewer.SPAN_START_OPTIONAL;
+ }
+ info.textHtml += ClassViewer.SPAN_START_PARAM_NAME + param.attributes.name + ClassViewer.SPAN_END;
+ if (defaultValue) {
+ info.textHtml += " (default: " + defaultValue + ") " + ClassViewer.SPAN_END;
+ }
+
+ var paramDescNode = TreeUtil.getChild(param, "desc");
+ if (paramDescNode) {
+ info.textHtml += " " + this._createDescriptionHtml(paramDescNode.attributes.text, docClassNode);
+ }
+ info.textHtml += ClassViewer.DIV_END;
+ }
+ }
+
+ // Add return value
+ if (returnNode) {
+ var returnDescNode = TreeUtil.getChild(returnNode, "desc");
+ if (returnDescNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Returns:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createDescriptionHtml(returnDescNode.attributes.text, docClassNode)
+ + ClassViewer.DIV_END;
+ }
+ }
+
+ // Add inherited from or overridden from
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inherited from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(fromClassNode.attributes.fullName)
+ + ClassViewer.DIV_END;
+ } else if (node.attributes.overriddenFrom) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Overridden from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(node.attributes.overriddenFrom)
+ + ClassViewer.DIV_END;
+ }
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(docNode, docClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(docNode, docClassNode);
+ }
+
+ return info;
+}
+
+
+/**
+ * Checks whether a constant has details.
+ *
+ * @param node {Map} the doc node of the constant.
+ * @param nodeType {int} the node type of the constant.
+ * @param fromClassNode {Map} the doc node of the class the constant was defined.
+ * @return {boolean} whether the constant has details.
+ */
+qx.Proto._constantHasDetails = function(node, nodeType, fromClassNode) {
+ return this._hasSeeAlsoHtml(node) || this._hasErrorHtml(node) || this._descHasDetails(node);
+}
+
+
+/**
+ * Creates the HTML showing the information about a constant.
+ *
+ * @param node {Map} the doc node of the constant.
+ * @param nodeType {int} the node type of the constant.
+ * @param fromClassNode {Map} the doc node of the class the constant was defined.
+ * @param showDetails {boolean} whether to show the details.
+ * @return {string} the HTML showing the information about the constant.
+ */
+qx.Proto._createConstantInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var info = {}
+
+ // Add the title
+ info.typeHtml = this._createTypeHtml(node, fromClassNode, "var");
+ info.titleHtml = node.attributes.name;
+
+ // Add the description
+ info.textHtml = this._createDescHtml(node, fromClassNode, showDetails);
+
+ if (showDetails) {
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(node, fromClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(node, fromClassNode);
+ }
+
+ return info;
+}
+
+
+/**
+ * Returns whether the description of an item has details (has more than one
+ * sentence).
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {boolean} whether the description of an item has details.
+ */
+qx.Proto._descHasDetails = function(node) {
+ var descNode = api.TreeUtil.getChild(node, "desc");
+ if (descNode) {
+ var desc = descNode.attributes.text;
+ return this._extractFirstSentence(desc) != desc;
+ } else {
+ return false;
+ }
+}
+
+
+/**
+ * Creates the HTML showing the description of an item.
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @param showDetails {boolean} whether to show details. If <code>false</code>
+ * only the first sentence of the description will be shown.
+ * @return {string} the HTML showing the description.
+ */
+qx.Proto._createDescHtml = function(node, fromClassNode, showDetails) {
+ var descNode = api.TreeUtil.getChild(node, "desc");
+ if (descNode) {
+ var desc = descNode.attributes.text;
+ if (!showDetails) {
+ desc = this._extractFirstSentence(desc);
+ }
+ return api.ClassViewer.DIV_START_DESC
+ + this._createDescriptionHtml(desc, fromClassNode)
+ + api.ClassViewer.DIV_END;
+ } else {
+ return "";
+ }
+}
+
+
+/**
+ * Extracts the first sentence from a text.
+ *
+ * @param text {string} the text.
+ * @return {string} the first sentence from the text.
+ */
+qx.Proto._extractFirstSentence = function(text)
+{
+ var ret = text;
+
+ // Extract first block
+ var pos = ret.indexOf("</p>");
+ if (pos != -1)
+ {
+ ret = ret.substr(0, pos+4);
+
+ var hit = api.ClassViewer.SENTENCE_END_REGEX.exec(ret);
+ if (hit != null) {
+ ret = text.substring(0, hit.index + hit[0].length - 1) + "</p>";
+ }
+ }
+
+ return ret;
+}
+
+
+/**
+ * Checks whether a item has &#64;see attributes.
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {boolean} whether the item has &#64;see attributes.
+ */
+qx.Proto._hasSeeAlsoHtml = function(node) {
+ var TreeUtil = api.TreeUtil;
+
+ var descNode = TreeUtil.getChild(node, "desc");
+ if (descNode) {
+ var attributesNode = TreeUtil.getChild(descNode, "attributes");
+ if (attributesNode) {
+ var seeAttribNode = TreeUtil.getChildByAttribute(attributesNode, "name", "see");
+ if (seeAttribNode) {
+ return true;
+ }
+ }
+ }
+
+ // There is no @see attribute
+ return false;
+}
+
+
+/**
+ * Creates the HTML showing the &#64;see attributes of an item.
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @return {string} the HTML showing the &#64;see attributes.
+ */
+qx.Proto._createSeeAlsoHtml = function(node, fromClassNode) {
+ var ClassViewer = api.ClassViewer;
+
+ var descNode = api.TreeUtil.getChild(node, "desc");
+ if (descNode) {
+ var attributesNode = api.TreeUtil.getChild(descNode, "attributes");
+ if (attributesNode) {
+ var seeAlsoHtml = "";
+ for (var i = 0; i < attributesNode.children.length; i++) {
+ var attribNode = attributesNode.children[i];
+ if (attribNode.attributes.name == "see") {
+ // This is a @see attribute
+ if (seeAlsoHtml.length != 0) {
+ seeAlsoHtml += ", ";
+ }
+ seeAlsoHtml += this._createItemLinkHtml(attribNode.attributes.text, fromClassNode);
+ }
+ }
+
+ if (seeAlsoHtml.length != 0) {
+ // We had @see attributes
+ return ClassViewer.DIV_START_DETAIL_HEADLINE + "See also:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT + seeAlsoHtml + ClassViewer.DIV_END;
+ }
+ }
+ }
+
+ // Nothing found
+ return "";
+}
+
+
+/**
+ * Checks whether a item has documentation errors.
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {boolean} whether the item has documentation errors.
+ */
+qx.Proto._hasErrorHtml = function(node) {
+ var errorNode = api.TreeUtil.getChild(node, "errors");
+ return (errorNode != null);
+}
+
+
+/**
+ * Creates the HTML showing the documentation errors of an item.
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @return {string} the HTML showing the documentation errors.
+ */
+qx.Proto._createErrorHtml = function(node, fromClassNode) {
+ var ClassViewer = api.ClassViewer;
+
+ var errorNode = api.TreeUtil.getChild(node, "errors");
+ if (errorNode) {
+ var html = ClassViewer.DIV_START_ERROR_HEADLINE + "Documentation errors:" + ClassViewer.DIV_END;
+ var errArr = errorNode.children;
+ for (var i = 0; i < errArr.length; i++) {
+ html += ClassViewer.DIV_START_DETAIL_TEXT + errArr[i].attributes.msg + " <br/>";
+ html += "("
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ html += fromClassNode.attributes.fullName + "; ";
+ }
+ html += "Line: " + errArr[i].attributes.line + ", Column:" + errArr[i].attributes.column + ")" + ClassViewer.DIV_END;
+ }
+ return html;
+ } else {
+ return "";
+ }
+}
+
+
+/**
+ * Creates the HTML showing the type of a doc node.
+ *
+ * @param typeNode {Map} the doc node to show the type for.
+ * @param packageBaseClass {Map} the doc node of the class <code>typeNode</code>
+ * belongs to.
+ * @param defaultType {string} the type name to use if <code>typeNode</code> is
+ * <code>null</code> or defines no type.
+ * @param useShortName {boolean,true} whether to use short class names
+ * (without package).
+ * @return {string} the HTML showing the type.
+ */
+qx.Proto._createTypeHtml = function(typeNode, packageBaseClass, defaultType, useShortName) {
+ if (useShortName == null) {
+ useShortName = true;
+ }
+
+ var types = [];
+ var typeHtml, typeDimensions, typeName, linkText, dims;
+
+ if (typeNode)
+ {
+ // read in children
+ if (typeNode.children && api.TreeUtil.getChild(typeNode, "types"))
+ {
+ for (var i=0, a=api.TreeUtil.getChild(typeNode, "types").children, l=a.length; i<l; i++)
+ {
+ if (a[i].type == "entry")
+ {
+ types.push(a[i].attributes);
+ }
+ }
+ }
+
+ // read from attributes (alternative)
+ if (types.length == 0 && typeNode.attributes)
+ {
+ typeName = typeNode.attributes.instance ? typeNode.attributes.instance : typeNode.attributes.type;
+
+ if (typeName != undefined)
+ {
+ dims = typeNode.attributes.dimensions;
+
+ if (typeof dims == "number" && dims > 0) {
+ types.push({ "type" : typeName, "dimensions" : dims });
+ } else {
+ types.push({ "type" : typeName });
+ }
+ }
+ }
+ }
+
+ if (types.length == 0)
+ {
+ typeHtml = defaultType;
+ }
+ else
+ {
+ typeHtml = "";
+
+ if (types.length > 1) {
+ typeHtml += "("
+ }
+
+ for (var j=0; j<types.length; j++)
+ {
+ if (j>0) {
+ typeHtml += " | ";
+ }
+
+ typeName = types[j].type;
+ typeDimensions = types[j].dimensions;
+
+ if (api.ClassViewer.PRIMITIVES[typeName])
+ {
+ typeHtml += typeName;
+ }
+ else
+ {
+ linkText = typeName;
+ if (useShortName)
+ {
+ var lastDot = typeName.lastIndexOf(".");
+ if (lastDot != -1) {
+ linkText += " " + typeName.substring(lastDot + 1);
+ }
+ }
+ typeHtml += this._createItemLinkHtml(linkText, packageBaseClass, false, true);
+ }
+
+ if (typeDimensions)
+ {
+ for (var i = 0; i < parseInt(typeDimensions); i++) {
+ typeHtml += "[]";
+ }
+ }
+ }
+
+ if (types.length > 1) {
+ typeHtml += ")"
+ }
+ }
+
+ return typeHtml;
+}
+
+
+/**
+ * Creates HTML that replaces all &#64;link-attributes with links.
+ *
+ * @param description {string} the description.
+ * @param packageBaseClass {Map,null} the doc node of the class to use for
+ * auto-adding packages.
+ */
+qx.Proto._createDescriptionHtml = function(description, packageBaseClass) {
+ var linkRegex = /\{@link([^\}]*)\}/mg;
+
+ var html = "";
+ var hit;
+ var lastPos = 0;
+ while ((hit = linkRegex.exec(description)) != null) {
+ // Add the text before the link
+ html += description.substring(lastPos, hit.index)
+ + this._createItemLinkHtml(hit[1], packageBaseClass);
+
+ lastPos = hit.index + hit[0].length;
+ }
+
+ // Add the text after the last hit
+ html += description.substring(lastPos, description.length);
+
+ return html;
+}
+
+
+/**
+ * Creates the HTML for a link to an item.
+ *
+ * @param linkText {string} the link text
+ * (e.g. "mypackage.MyClass#myMethod alt text")
+ * @param packageBaseClass {Map,null} the doc node of the class to use when
+ * auto-adding the package to a class name having no package specified.
+ * If null, no automatic package addition is done.
+ * @param useIcon {boolean,true} whether to add an icon to the link.
+ * @param useShortName {boolean,false} whether to use the short name.
+ */
+qx.Proto._createItemLinkHtml = function(linkText, packageBaseClass, useIcon,
+ useShortName)
+{
+ if (useIcon == null) {
+ useIcon = true;
+ }
+
+ linkText = qx.lang.String.trim(linkText);
+
+ if (linkText.charAt(0) == '"' || linkText.charAt(0) == '<') {
+ // This is a String or a link to a URL -> Just use it as it is
+ return linkText;
+ } else {
+ // This is a link to another class or method -> Create an item link
+
+ // Separate item name from label
+ var hit = api.ClassViewer.ITEM_SPEC_REGEX.exec(linkText);
+ if (hit == null) {
+ // Malformed item name
+ return linkText;
+ } else {
+ var className = hit[2];
+ var itemName = hit[3];
+ var label = hit[6];
+
+ // Make the item name absolute
+ if (className == null || className.length == 0) {
+ // This is a relative link to a method -> Add the current class
+ className = packageBaseClass.attributes.fullName;
+ } else if (packageBaseClass && className.indexOf(".") == -1) {
+ // The class name has no package -> Use the same package as the current class
+ var name = packageBaseClass.attributes.name;
+ var fullName = packageBaseClass.attributes.fullName;
+ var packageName = fullName.substring(0, fullName.length - name.length);
+ className = packageName + className;
+ }
+
+ // Get the node info
+ if (label == null || label.length == 0) {
+ // We have no label -> Use the item name as label
+ label = hit[1];
+ }
+
+ // Add the right icon
+ if (useIcon) {
+ var classNode = this._getClassDocNode(className);
+ if (classNode) {
+ var itemNode;
+ if (itemName) {
+ // The links points to a item of the class
+ var cleanItemName = itemName.substring(1);
+ var parenPos = cleanItemName.indexOf("(");
+ if (parenPos != -1) {
+ cleanItemName = qx.lang.String.trim(cleanItemName.substring(0, parenPos));
+ }
+ itemNode = api.TreeUtil.getItemDocNode(classNode, cleanItemName);
+ } else {
+ // The links points to the class
+ itemNode = classNode;
+ }
+ if (itemNode) {
+ var iconUrl = api.TreeUtil.getIconUrl(itemNode);
+ var iconCode = api.ClassViewer.createImageHtml(iconUrl);
+ }
+ }
+ }
+
+ // Create a real bookmarkable link
+ // NOTE: The onclick-handler must be added by HTML code. If it
+ // is added using the DOM element then the href is followed.
+ var fullItemName = className + (itemName ? itemName : "");
+ return (typeof iconCode != "undefined" ? iconCode : "")
+ + '<a href="' + window.location.protocol + '//' + window.location.pathname
+ + '#' + fullItemName + '" onclick="'
+ + 'document._detailViewer._selectItem(\'' + fullItemName + '\'); return false;"'
+ + ' title="' + fullItemName + '">' + label + '</a>';
+ }
+ }
+}
+
+
+/**
+ * Gets the node type for a doc node.
+ *
+ * @param itemNode {Map} the doc node of the item.
+ * @return {int} the item's node type.
+ */
+qx.Proto._getTypeForItemNode = function(itemNode) {
+ var ClassViewer = api.ClassViewer;
+
+ if (itemNode.type == "constant") {
+ return ClassViewer.NODE_TYPE_CONSTANT;
+ } else if (itemNode.type == "property") {
+ return ClassViewer.NODE_TYPE_PROPERTY;
+ } else if (itemNode.type == "event") {
+ return ClassViewer.NODE_TYPE_EVENT;
+ } else if (itemNode.type == "method") {
+ var name = itemNode.attributes.name;
+ if (name == null) {
+ return ClassViewer.NODE_TYPE_CONSTRUCTOR;
+ } else if (name.charAt(0) == "_") {
+ if (itemNode.attributes.isStatic) {
+ return ClassViewer.NODE_TYPE_METHOD_STATIC_PROTECTED;
+ } else {
+ return ClassViewer.NODE_TYPE_METHOD_PROTECTED;
+ }
+ } else {
+ if (itemNode.attributes.isStatic) {
+ return ClassViewer.NODE_TYPE_METHOD_STATIC_PUBLIC;
+ } else {
+ return ClassViewer.NODE_TYPE_METHOD_PUBLIC;
+ }
+ }
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._titleElem = null;
+ this._classDescElem = null;
+ this._markedElement = null;
+
+ for (var nodeType in this._infoPanelHash) {
+ this._infoPanelHash[nodeType].infoElem = null;
+ this._infoPanelHash[nodeType].infoTitleElem = null;
+ this._infoPanelHash[nodeType].infoBodyElem = null;
+ }
+
+ document._detailViewer = null;
+
+ return qx.ui.embed.HtmlEmbed.prototype.dispose.call(this);
+}
+
+
+/** {Map} The primitive types. These types will not be shown with links. */
+qx.Class.PRIMITIVES = { "boolean":true, "string":true, "float":true,
+ "number":true, "int":true, "double":true, "var":true, "void":true,
+ "RegExp":true, "Array":true, "Map":true, "Date":true, "Element":true,
+ "Node":true, "Function":true, "Object":true, "Event":true };
+
+/**
+ * {regexp} The regexp for parsing a item name
+ * (e.g. "mypackage.MyClass#MY_CONSTANT alternative text").
+ */
+qx.Class.ITEM_SPEC_REGEX = /^(([\w\.]+)?(#\w+(\([^\)]*\))?)?)(\s+(.*))?$/;
+
+/** {regexp} The regexp that finds the end of a sentence. */
+qx.Class.SENTENCE_END_REGEX = /[^\.].\.(\s|<)/;
+
+
+/** {int} The node type of a constructor. */
+qx.Class.NODE_TYPE_CONSTRUCTOR = 1;
+/** {int} The node type of a property. */
+qx.Class.NODE_TYPE_PROPERTY = 2;
+/** {int} The node type of an event. */
+qx.Class.NODE_TYPE_EVENT = 3;
+/** {int} The node type of a public method. */
+qx.Class.NODE_TYPE_METHOD_PUBLIC = 4;
+/** {int} The node type of a protected method. */
+qx.Class.NODE_TYPE_METHOD_PROTECTED = 5;
+/** {int} The node type of a static public method. */
+qx.Class.NODE_TYPE_METHOD_STATIC_PUBLIC = 6;
+/** {int} The node type of a static protected method. */
+qx.Class.NODE_TYPE_METHOD_STATIC_PROTECTED = 7;
+/** {int} The node type of a constant. */
+qx.Class.NODE_TYPE_CONSTANT = 8;
+
+/** {string} The start tag of a div. */
+qx.Class.DIV_START = '<div>';
+/** {string} The start tag of a div containing an item description. */
+qx.Class.DIV_START_DESC = '<div class="item-desc">';
+/** {string} The start tag of a div containing the headline of an item detail. */
+qx.Class.DIV_START_DETAIL_HEADLINE = '<div class="item-detail-headline">';
+/** {string} The start tag of a div containing the text of an item detail. */
+qx.Class.DIV_START_DETAIL_TEXT = '<div class="item-detail-text">';
+/** {string} The start tag of a div containing the headline of an item error. */
+qx.Class.DIV_START_ERROR_HEADLINE = '<div class="item-detail-error">';
+/** {string} The end tag of a div. */
+qx.Class.DIV_END = '</div>';
+
+/** {string} The start tag of a span containing an optional detail. */
+qx.Class.SPAN_START_OPTIONAL = '<span class="item-detail-optional">';
+/** {string} The start tag of a span containing a parameter name. */
+qx.Class.SPAN_START_PARAM_NAME = '<span class="item-detail-param-name">';
+/** {string} The end tag of a span. */
+qx.Class.SPAN_END = '</span>';
+
+
+/**
+ * Creates the HTML showing an image.
+ *
+ * @param imgUrl {var} the URL of the image. May be a string or an array of
+ * strings (for overlay images).
+ * @param tooltip {string} the tooltip to show.
+ * @param styleAttributes {string} the style attributes to add to the image.
+ */
+qx.Class.createImageHtml = function(imgUrl, tooltip, styleAttributes) {
+ if (typeof imgUrl == "string") {
+ return '<img src="' + qx.manager.object.AliasManager.getInstance().resolvePath(imgUrl) + '" class="img"'
+ + (styleAttributes ? ' style="' + styleAttributes + '"' : "") + '/>';
+ } else {
+ if (styleAttributes) {
+ styleAttributes += ";vertical-align:top";
+ } else {
+ styleAttributes = "vertical-align:top";
+ }
+ return api.ClassViewer.createOverlayImageHtml(18, 18, imgUrl, tooltip, styleAttributes);
+ }
+}
+
+
+/**
+ * Creates HTML that shows an overlay image (several images on top of each other).
+ * The resulting HTML will behave inline.
+ *
+ * @param width {int} the width of the images.
+ * @param height {int} the height of the images.
+ * @param imgUrlArr {string[]} the URLs of the images. The last image will be
+ * painted on top.
+ * @param toolTip {string,null} the tooltip of the icon.
+ * @param styleAttributes {string,null} custom CSS style attributes.
+ * @return {string} the HTML with the overlay image.
+ */
+qx.Class.createOverlayImageHtml
+ = function(width, height, imgUrlArr, toolTip, styleAttributes)
+{
+ var html = '<div style="position:relative;top:0;left:0;width:' + width + 'px;height:' + height + 'px'
+ + ((styleAttributes == null) ? '' : (';' + styleAttributes)) + '">';
+
+ for (var i = 0; i < imgUrlArr.length; i++) {
+ html += '<img';
+ if (toolTip != null) {
+ html += ' title="' + toolTip + '"';
+ }
+ html += ' style="position:absolute;top:0px;left:0px" src="' + qx.manager.object.AliasManager.getInstance().resolvePath(imgUrlArr[i]) + '"/>';
+ }
+
+ html += '</div>';
+
+ /*
+ // NOTE: See testOverlay.html
+ var html = '<table cellpadding="0" cellspacing="0" '
+ + 'style="display:inline;position:relative;border:1px solid blue'
+ + ((styleAttributes == null) ? '' : (';' + styleAttributes)) + '"><tr>'
+ + '<td style="width:' + width + 'px;height:' + height + 'px">';
+ for (var i = 0; i < imgUrlArr.length; i++) {
+ html += '<img';
+ if (toolTip != null) {
+ html += ' title="' + toolTip + '"';
+ }
+ html += ' style="position:absolute;top:0px;left:0px" src="' + imgUrlArr[i] + '"></img>';
+ }
+ html += '</td></tr></table>';
+ */
+
+ return html;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/InfoViewer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/InfoViewer.js
new file mode 100644
index 0000000000..f65d1e82b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/InfoViewer.js
@@ -0,0 +1,35 @@
+/*
+#module(api)
+*/
+
+/**
+ * Shows the class details.
+ */
+qx.OO.defineClass("api.InfoViewer", qx.ui.embed.HtmlEmbed,
+function() {
+ qx.ui.embed.HtmlEmbed.call(this);
+
+ this.setOverflow("auto");
+ this.setPadding(20);
+ this.setEdge(0);
+ this.setHtmlProperty("id", "InfoViewer");
+ this.setVisibility(false);
+
+ api.InfoViewer.instance = this;
+});
+
+qx.Proto.showInfo = function(classNode)
+{
+ var vHtml = "";
+
+ // Title
+ vHtml += '<h1>';
+ vHtml += '<div class="pkgtitle">package</div>';
+ vHtml += classNode.attributes.fullName;
+ vHtml += '</h1>';
+
+ // TODO: Overview of classes in this package
+
+ // Apply HTML
+ this.setHtml(vHtml);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/TreeUtil.js b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/TreeUtil.js
new file mode 100755
index 0000000000..bb90bfd6ef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/TreeUtil.js
@@ -0,0 +1,356 @@
+/*
+#module(api)
+*/
+
+/**
+ * A util class for handling the documentation tree.
+ */
+qx.OO.defineClass("api.TreeUtil", qx.core.Object,
+function () {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Gets the child of a doc node having a certain type.
+ *
+ * @param docNode {Map} the doc node to get the child of.
+ * @param childType {string} the type of the child to get.
+ * @return {Map} the wanted child or <code>null</code> if <code>docNode</code>
+ * is <code>null</code> or has no such child.
+ */
+qx.Class.getChild = function(docNode, childType) {
+ if (docNode != null && docNode.children != null) {
+ for (var i = 0; i < docNode.children.length; i++) {
+ if (docNode.children[i].type == childType) {
+ return docNode.children[i];
+ }
+ }
+ }
+
+ return null;
+}
+
+
+/**
+ * Gets the child of a doc node having a certain attribute value.
+ *
+ * @param docNode {Map} the doc node to get the child of.
+ * @param attributeName {string} the name of the attribute the wanted child must have.
+ * @param attributeValue {string} the value of the attribute the wanted child must have.
+ * @return {Map} the wanted child or <code>code</code> if there is no such child.
+ */
+qx.Class.getChildByAttribute = function(docNode, attributeName, attributeValue) {
+ if (docNode.children != null) {
+ for (var i = 0; i < docNode.children.length; i++) {
+ var node = docNode.children[i];
+ if (node.attributes && node.attributes[attributeName] == attributeValue) {
+ return node;
+ }
+ }
+ }
+
+ return null;
+}
+
+
+/**
+ * Searches the doc node of a item. Only use this method if you don't know the
+ * type of the item.
+ *
+ * @param classNode {Map} the class node the item belongs to.
+ * @param itemName {string} the name of the item to search.
+ * @return {Map} the doc node of the item or <code>null</code> if the class has
+ * no such item.
+ */
+qx.Class.getItemDocNode = function(classNode, itemName) {
+ var TreeUtil = api.TreeUtil;
+
+ // Go through the item lists and check whether one contains the wanted item
+ for (var i = 0; i < TreeUtil.ITEM_LIST_ARR.length; i++) {
+ var listNode = TreeUtil.getChild(classNode, TreeUtil.ITEM_LIST_ARR[i]);
+ if (listNode) {
+ var itemNode = TreeUtil.getChildByAttribute(listNode, "name", itemName);
+ if (itemNode) {
+ return itemNode;
+ }
+ }
+ }
+
+ // Nothing found
+ return null;
+}
+
+
+/**
+ * Gets the doc node of a class.
+ *
+ * @param docTree {Map} the documentation tree.
+ * @param className {string} the name of the class.
+ * @return {Map} the doc node of the class.
+ */
+qx.Class.getClassDocNode = function(docTree, className) {
+ var splits = className.split(".");
+ var currNode = docTree;
+ for (var i = 0; i < splits.length && currNode != null; i++) {
+ if (i < splits.length - 1) {
+ // The current name is a package name
+ var packages = this.getChild(currNode, "packages");
+ currNode = packages ? this.getChildByAttribute(packages, "name", splits[i]) : null;
+ } else {
+ // The current name is a class name
+ var classes = this.getChild(currNode, "classes");
+ currNode = classes ? this.getChildByAttribute(classes, "name", splits[i]) : null;
+ }
+ }
+
+ return currNode;
+}
+
+
+/**
+ * Gets the icon URL of a doc node.
+ *
+ * @param node {Map} the node to get the icon for.
+ * @param inherited {boolean,false} whether the node was inherited.
+ * @return {var} the URL of the icon. May be a string or an array of string
+ * (in case of an overlay icon).
+ */
+qx.Class.getIconUrl = function(node, inherited) {
+ var constName;
+ switch (node.type) {
+ case "package":
+ constName = "ICON_PACKAGE";
+ break;
+ case "class":
+ constName = "ICON_CLASS";
+
+ if (node.attributes.isStatic) {
+ constName += "_STATIC";
+ } else if (node.attributes.isAbstract) {
+ constName += "_ABSTRACT";
+ }
+
+ break;
+ case "property":
+ constName = "ICON_PROPERTY";
+ break;
+ case "event":
+ constName = "ICON_EVENT";
+ break;
+ case "method":
+ var isCtor = node.attributes.name == null;
+ var isPublic = isCtor || (node.attributes.name.charAt(0) != "_");
+
+ constName = "ICON_METHOD" + (isPublic ? "_PUB" : "_PROT");
+
+ if (isCtor) {
+ constName += "_CTOR";
+ } else if (node.attributes.isStatic) {
+ constName += "_STATIC";
+ } else if (node.attributes.isAbstract) {
+ constName += "_ABSTRACT";
+ }
+
+ break;
+ case "constant":
+ constName = "ICON_CONSTANT";
+ break;
+ default: throw new Error("Unknown node type: " + node.type);
+ }
+
+ if (inherited) {
+ constName += "_INHERITED";
+ } else if (node.attributes.overriddenFrom) {
+ constName += "_OVERRIDDEN";
+ }
+
+ if (node.attributes.hasError) {
+ constName += "_ERROR";
+ } else if (node.attributes.hasWarning) {
+ constName += "_WARN";
+ }
+
+ var iconUrl = api.TreeUtil[constName];
+ if (iconUrl == null) {
+ throw new Error("Unknown img constant: " + constName);
+ }
+ return iconUrl;
+}
+
+
+/** {string[]} The names of lists containing items. */
+qx.Class.ITEM_LIST_ARR = [ "constants", "properties", "methods-pub", "methods-pub",
+ "methods-static-prot", "methods-static-prot" ];
+
+
+/** {string} The URL of the overlay "abstract". */
+qx.Class.OVERLAY_ABSTRACT = "api/overlay_abstract18.gif";
+/** {string} The URL of the overlay "error". */
+qx.Class.OVERLAY_ERROR = "api/overlay_error18.gif";
+/** {string} The URL of the overlay "inherited". */
+qx.Class.OVERLAY_INHERITED = "api/overlay_inherited18.gif";
+/** {string} The URL of the overlay "overridden". */
+qx.Class.OVERLAY_OVERRIDDEN = "api/overlay_overridden18.gif";
+/** {string} The URL of the overlay "static". */
+qx.Class.OVERLAY_STATIC = "api/overlay_static18.gif";
+/** {string} The URL of the overlay "warning". */
+qx.Class.OVERLAY_WARN = "api/overlay_warning18.gif";
+
+
+/** {string} The icon URL of a package. */
+qx.Class.ICON_PACKAGE = "api/package18.gif";
+/** {string} The icon URL of a package with warning. */
+qx.Class.ICON_PACKAGE_WARN = "api/package_warning18.gif";
+
+
+/** {string} The icon URL of a class. */
+qx.Class.ICON_CLASS = "api/class18.gif";
+/** {string} The icon URL of a class with warning. */
+qx.Class.ICON_CLASS_WARN = "api/class_warning18.gif";
+/** {string} The icon URL of a class with error. */
+qx.Class.ICON_CLASS_ERROR = "api/class_warning18.gif";
+
+/** {string} The icon URL of a static class. */
+qx.Class.ICON_CLASS_STATIC = "api/class_static18.gif";
+/** {string} The icon URL of a static class with warning. */
+qx.Class.ICON_CLASS_STATIC_WARN = "api/class_static_warning18.gif";
+/** {string} The icon URL of a static class with error. */
+qx.Class.ICON_CLASS_STATIC_ERROR = "api/class_static_warning18.gif";
+
+/** {string} The icon URL of an abstract class. */
+qx.Class.ICON_CLASS_ABSTRACT = "api/class_abstract18.gif";
+/** {string} The icon URL of an abstract class with warning. */
+qx.Class.ICON_CLASS_ABSTRACT_WARN = "api/class_abstract_warning18.gif";
+/** {string} The icon URL of an abstract class with error. */
+qx.Class.ICON_CLASS_ABSTRACT_ERROR = "api/class_abstract_warning18.gif";
+
+
+/** {string} The icon URL of a property. */
+qx.Class.ICON_PROPERTY = "api/property18.gif";
+/** {string[]} The icon URL of a property with warning. */
+qx.Class.ICON_PROPERTY_WARN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of a property with error. */
+qx.Class.ICON_PROPERTY_ERROR = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited property. */
+qx.Class.ICON_PROPERTY_INHERITED = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited property with warning. */
+qx.Class.ICON_PROPERTY_INHERITED_WARN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited property with error. */
+qx.Class.ICON_PROPERTY_INHERITED_ERROR = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden property. */
+qx.Class.ICON_PROPERTY_OVERRIDDEN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden property with warning. */
+qx.Class.ICON_PROPERTY_OVERRIDDEN_WARN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden property with error. */
+qx.Class.ICON_PROPERTY_OVERRIDDEN_ERROR = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of an event. */
+qx.Class.ICON_EVENT = "api/event18.gif";
+
+/** {string[]} The icon URL of an inherited event. */
+qx.Class.ICON_EVENT_INHERITED = [ qx.Class.ICON_EVENT, qx.Class.OVERLAY_INHERITED ];
+
+
+/** {string} The icon URL of a public method. */
+qx.Class.ICON_METHOD_PUB = "api/method_public18.gif";
+/** {string[]} The icon URL of a public method with warning. */
+qx.Class.ICON_METHOD_PUB_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ERROR ];
+/** {string[]} The icon URL of a public method with error. */
+qx.Class.ICON_METHOD_PUB_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited public method. */
+qx.Class.ICON_METHOD_PUB_INHERITED = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited public method with warning. */
+qx.Class.ICON_METHOD_PUB_INHERITED_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited public method with error. */
+qx.Class.ICON_METHOD_PUB_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden public method. */
+qx.Class.ICON_METHOD_PUB_OVERRIDDEN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden public method with warning. */
+qx.Class.ICON_METHOD_PUB_OVERRIDDEN_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden public method with error. */
+qx.Class.ICON_METHOD_PUB_OVERRIDDEN_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of a public static method. */
+qx.Class.ICON_METHOD_PUB_STATIC = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_STATIC ];
+/** {string[]} The icon URL of a public static method with error. */
+qx.Class.ICON_METHOD_PUB_STATIC_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_STATIC, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of a public abstract method. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT ];
+/** {string[]} The icon URL of a public abstract method with warning. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of a public abstract method with error. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden public abstract method. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_OVERRIDDEN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden public abstract method with warning. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_OVERRIDDEN_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden public abstract method with error. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_OVERRIDDEN_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited public abstract method. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_INHERITED = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited public abstract method with warning. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_INHERITED_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited public abstract method with error. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of a constructor. */
+qx.Class.ICON_METHOD_PUB_CTOR = "api/constructor18.gif";
+/** {string[]} The icon URL of a constructor with error. */
+qx.Class.ICON_METHOD_PUB_CTOR_ERROR = [ qx.Class.ICON_METHOD_PUB_CTOR, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of a protected method. */
+qx.Class.ICON_METHOD_PROT = "api/method_protected18.gif";
+/** {string[]} The icon URL of a protected method with warning. */
+qx.Class.ICON_METHOD_PROT_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ERROR ];
+/** {string[]} The icon URL of a protected method with error. */
+qx.Class.ICON_METHOD_PROT_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited protected method. */
+qx.Class.ICON_METHOD_PROT_INHERITED = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited protected method with warning. */
+qx.Class.ICON_METHOD_PROT_INHERITED_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited protected method with error. */
+qx.Class.ICON_METHOD_PROT_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden protected method. */
+qx.Class.ICON_METHOD_PROT_OVERRIDDEN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden protected method with warning. */
+qx.Class.ICON_METHOD_PROT_OVERRIDDEN_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden protected method with error. */
+qx.Class.ICON_METHOD_PROT_OVERRIDDEN_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of a protected static method. */
+qx.Class.ICON_METHOD_PROT_STATIC = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_STATIC ];
+/** {string[]} The icon URL of a protected static method with error. */
+qx.Class.ICON_METHOD_PROT_STATIC_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_STATIC, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an abstract protected method. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT ];
+/** {string[]} The icon URL of an abstract protected method with warning. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an abstract protected method with error. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited abstract protected method. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_INHERITED = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited abstract protected method with warning. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_INHERITED_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited abstract protected method with error. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of a constant. */
+qx.Class.ICON_CONSTANT = "api/constant18.gif";
+/** {string[]} The icon URL of a constant with error. */
+qx.Class.ICON_CONSTANT_ERROR = [ qx.Class.ICON_CONSTANT, qx.Class.OVERLAY_ERROR ];
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/Viewer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/Viewer.js
new file mode 100755
index 0000000000..f633c0d50e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/class/api/Viewer.js
@@ -0,0 +1,386 @@
+/*
+#module(api)
+#resource(css:css)
+#resource(images:image)
+*/
+
+/**
+ * The API viewer. Shows the API documentation.
+ */
+qx.OO.defineClass("api.Viewer", qx.ui.layout.HorizontalBoxLayout,
+function () {
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ this.setEdge(0);
+
+ this._titlePrefix = this.getSetting("title") + " API Documentation";
+ document.title = this._titlePrefix;
+
+ this._tree = new qx.ui.tree.Tree("API Documentation");
+ this._tree.set({
+ backgroundColor: "white",
+ overflow: "scroll",
+ width: "22%",
+ minWidth : 150,
+ maxWidth : 300
+ });
+ this._tree.getManager().addEventListener("changeSelection", this._onTreeSelectionChange, this);
+ this.add(this._tree);
+
+ this._detailFrame = new qx.ui.layout.CanvasLayout;
+ this._detailFrame.setWidth("1*");
+ this._detailFrame.setBorder(qx.renderer.border.BorderPresets.horizontalDivider);
+ this._detailFrame.setBackgroundColor("white");
+ this._detailFrame.setHtmlProperty("id", "DetailFrame");
+ this.add(this._detailFrame);
+
+ this._detailLoader = new qx.ui.embed.HtmlEmbed('<h1><div class="please">please wait</div>Loading data...</h1>');
+ this._detailLoader.setHtmlProperty("id", "DetailLoader");
+ this._detailLoader.setMarginLeft(20);
+ this._detailLoader.setMarginTop(20);
+ this._detailFrame.add(this._detailLoader);
+
+ this._classViewer = new api.ClassViewer;
+ this._detailFrame.add(this._classViewer);
+
+ this._infoViewer = new api.InfoViewer;
+ this._detailFrame.add(this._infoViewer);
+
+ this._currentTreeType = api.Viewer.PACKAGE_TREE;
+
+ // Workaround: Since navigating in qx.ui.tree.Tree doesn't work, we've to
+ // maintain a hash that keeps the tree nodes for class names
+ this._classTreeNodeHash = {};
+ this._classTreeNodeHash[api.Viewer.PACKAGE_TREE] = {};
+ this._classTreeNodeHash[api.Viewer.INHERITENCE_TREE] = {};
+
+ api.Viewer.instance = this;
+
+ qx.client.History.getInstance().init();
+ qx.client.History.getInstance().addEventListener("request", this._onHistoryRequest, this);
+});
+
+
+/** The documentation tree to show. */
+qx.OO.addProperty({ name:"docTree", type:"object" });
+
+
+qx.Settings.setDefault("title", "qooxdoo");
+qx.Settings.setDefault("initialTreeDepth", 1);
+
+
+// property checker
+qx.Proto._modifyDocTree = function(propValue, propOldValue, propData) {
+ this._updateTree(propValue);
+ return true;
+}
+
+
+/**
+ * Loads the API doc tree from a URL. The URL must point to a JSON encoded
+ * doc tree.
+ *
+ * @param url {string} the URL.
+ */
+qx.Proto.load = function(url)
+{
+ var req = new qx.io.remote.Request(url);
+
+ req.setTimeout(180000);
+
+ req.addEventListener("completed", function(evt)
+ {
+ var content = evt.getData().getContent();
+ this.setDocTree(eval("(" + content + ")"));
+
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ // Handle bookmarks
+ if (window.location.hash) {
+ var self = this;
+ window.setTimeout(function() {
+ self.selectItem(window.location.hash.substring(1));
+ }, 0);
+ }
+
+ this._detailLoader.setHtml('<h1><div class="please">' + this.getSetting("title") +
+ '</div>API Documentation</h1>');
+
+ }, this);
+
+ req.addEventListener("failed", function(evt)
+ {
+ this.error("Couldn't load file: " + url);
+ }, this);
+
+ req.send();
+}
+
+
+/**
+ * Updates the tree on the left.
+ *
+ * @param docTree {Map} the documentation tree to use for updating.
+ */
+qx.Proto._updateTree = function(docTree) {
+ var inheritenceNode = new qx.ui.tree.TreeFolder("Inheritence hierarchy");
+ var packagesNode = new qx.ui.tree.TreeFolder("Packages");
+
+ this._tree.removeAll();
+ this._tree.add(inheritenceNode, packagesNode);
+
+ // Fille the packages tree (and fill the _topLevelClassNodeArr)
+ this._topLevelClassNodeArr = [];
+ this._fillPackageNode(packagesNode, docTree, 0);
+
+ // Sort the _topLevelClassNodeArr
+ this._topLevelClassNodeArr.sort(function (node1, node2) {
+ return (node1.attributes.fullName < node2.attributes.fullName) ? -1 : 1;
+ });
+
+ // Fill the inheritence tree
+ for (var i = 0; i < this._topLevelClassNodeArr.length; i++) {
+ this._createInheritanceNode(inheritenceNode, this._topLevelClassNodeArr[i], docTree);
+ }
+
+ packagesNode.open();
+
+ if (this._wantedClassName) {
+ this.showClassByName(this._wantedClassName);
+ this._wantedClassName = null;
+ }
+}
+
+
+/**
+ * Fills a package tree node with tree nodes for the sub packages and classes.
+ *
+ * @param treeNode {qx.ui.tree.TreeFolder} the package tree node.
+ * @param docNode {Map} the documentation node of the package.
+ */
+qx.Proto._fillPackageNode = function(treeNode, docNode, depth) {
+ var ApiViewer = api.Viewer;
+ var TreeUtil = api.TreeUtil;
+
+ var packagesDocNode = TreeUtil.getChild(docNode, "packages");
+ if (packagesDocNode && packagesDocNode.children) {
+ for (var i = 0; i < packagesDocNode.children.length; i++) {
+ var packageDocNode = packagesDocNode.children[i];
+ var iconUrl = TreeUtil.getIconUrl(packageDocNode);
+ var packageTreeNode = new qx.ui.tree.TreeFolder(packageDocNode.attributes.name, iconUrl);
+ packageTreeNode.docNode = packageDocNode;
+ treeNode.add(packageTreeNode);
+
+ this._fillPackageNode(packageTreeNode, packageDocNode, depth+1);
+
+ // Open the package node if it has child packages
+ if (depth < this.getSetting("initialTreeDepth") && TreeUtil.getChild(packageDocNode, "packages")) {
+ packageTreeNode.open();
+ }
+
+ // Register the tree node
+ this._classTreeNodeHash[ApiViewer.PACKAGE_TREE][packageDocNode.attributes.fullName] = packageTreeNode;
+ }
+ }
+
+ var classesDocNode = TreeUtil.getChild(docNode, "classes");
+ if (classesDocNode && classesDocNode.children) {
+ for (var i = 0; i < classesDocNode.children.length; i++) {
+ var classDocNode = classesDocNode.children[i];
+ var iconUrl = TreeUtil.getIconUrl(classDocNode);
+ var classTreeNode = new qx.ui.tree.TreeFolder(classDocNode.attributes.name, iconUrl);
+ classTreeNode.docNode = classDocNode;
+ classTreeNode.treeType = ApiViewer.PACKAGE_TREE;
+ treeNode.add(classTreeNode);
+
+ // Register the tree node
+ this._classTreeNodeHash[ApiViewer.PACKAGE_TREE][classDocNode.attributes.fullName] = classTreeNode;
+
+ // Check whether this is a top-level-class
+ if (classDocNode.attributes.superClass == null) {
+ this._topLevelClassNodeArr.push(classDocNode);
+ }
+ }
+ }
+}
+
+
+/**
+ * Creates the tree node for a class containing class nodes for all its child
+ * classes.
+ *
+ * @param classDocNode {Map} the documentation node of the class.
+ * @param docTree {Map} the documentation tree.
+ */
+qx.Proto._createInheritanceNode = function(parentTreeNode, classDocNode, docTree) {
+ var ApiViewer = api.Viewer;
+ var TreeUtil = api.TreeUtil;
+
+ // Create the tree node
+ var iconUrl = TreeUtil.getIconUrl(classDocNode);
+ var classTreeNode = new qx.ui.tree.TreeFolder(classDocNode.attributes.fullName, iconUrl);
+ classTreeNode.docNode = classDocNode;
+ classTreeNode.treeType = ApiViewer.INHERITENCE_TREE;
+ parentTreeNode.add(classTreeNode);
+
+ // Register the tree node
+ this._classTreeNodeHash[ApiViewer.INHERITENCE_TREE][classDocNode.attributes.fullName] = classTreeNode;
+
+ // Add all child classes
+ var childClassNameCsv = classDocNode.attributes.childClasses;
+ if (childClassNameCsv) {
+ var childClassNameArr = childClassNameCsv.split(",");
+ for (var i = 0; i < childClassNameArr.length; i++) {
+ var childClassDocNode = TreeUtil.getClassDocNode(docTree, childClassNameArr[i]);
+ this._createInheritanceNode(classTreeNode, childClassDocNode, docTree);
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the tree selection has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTreeSelectionChange = function(evt)
+{
+ var treeNode = evt.getData()[0];
+
+ if (treeNode && treeNode.docNode)
+ {
+ var newTitle = this._titlePrefix + " - class " + treeNode.docNode.attributes.fullName;
+
+ qx.client.History.getInstance().addToHistory(treeNode.docNode.attributes.fullName, newTitle);
+
+ this._currentTreeType = treeNode.treeType;
+
+ this._selectTreeNode(treeNode);
+
+ window.location.hash = "#" + treeNode.docNode.attributes.fullName;
+ }
+}
+
+
+qx.Proto._onHistoryRequest = function(evt)
+{
+ this.showClassByName(evt.getData());
+}
+
+qx.Proto._selectTreeNode = function(vTreeNode)
+{
+ if (!(vTreeNode && vTreeNode.docNode)) {
+ this.error("Invalid tree node: " + vTreeNode);
+ }
+
+ var vDoc = vTreeNode.docNode;
+
+ this._detailLoader.setVisibility(false);
+
+ if (vDoc.type == "class")
+ {
+ this._infoViewer.setVisibility(false);
+ this._classViewer.showClass(vDoc);
+ this._classViewer.setVisibility(true);
+ }
+ else
+ {
+ this._classViewer.setVisibility(false);
+ this._infoViewer.showInfo(vDoc);
+ this._infoViewer.setVisibility(true);
+ }
+}
+
+
+/**
+ * Selects an item (class, property, method or constant).
+ *
+ * @param fullItemName {string} the full name of the item to select.
+ * (e.g. "qx.mypackage.MyClass" or "qx.mypackage.MyClass#myProperty")
+ */
+qx.Proto.selectItem = function(fullItemName) {
+ var className = fullItemName;
+ var itemName = null;
+ var hashPos = fullItemName.indexOf("#");
+ if (hashPos != -1) {
+ className = fullItemName.substring(0, hashPos);
+ itemName = fullItemName.substring(hashPos + 1);
+
+ var parenPos = itemName.indexOf("(");
+ if (parenPos != -1) {
+ itemName = qx.lang.String.trim(itemName.substring(0, parenPos));
+ }
+ }
+
+ this.showClassByName(className);
+ if (itemName) {
+ this._classViewer.showItem(itemName);
+ }
+}
+
+
+/**
+ * Shows a certain class.
+ *
+ * @param className {string} the name of the class to show.
+ */
+qx.Proto.showClassByName = function(className) {
+ var treeNode = this._classTreeNodeHash[this._currentTreeType][className];
+
+ if (treeNode) {
+ treeNode.setSelected(true);
+ } else if (this.getDocTree() == null) {
+ // The doc tree has not been loaded yet
+ // -> Remeber the wanted class and show when loading is done
+ this._wantedClassName = className;
+ } else {
+ this.error("Unknown class: " + className);
+ }
+}
+
+
+qx.Class.PACKAGE_TREE = 1;
+qx.Class.INHERITENCE_TREE = 2;
+
+
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._tree)
+ {
+ this._tree.dispose();
+ this._tree = null;
+ }
+
+ if (this._detailFrame)
+ {
+ this._detailFrame.dispose();
+ this._detailFrame = null;
+ }
+
+ if (this._detailLoader)
+ {
+ this._detailLoader.dispose();
+ this._detailLoader = null;
+ }
+
+ if (this._classViewer)
+ {
+ this._classViewer.dispose();
+ this._classViewer = null;
+ }
+
+ if (this._infoViewer)
+ {
+ this._infoViewer.dispose();
+ this._infoViewer = null;
+ }
+
+ this._classTreeNodeHash = null;
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/index.html
new file mode 100755
index 0000000000..bfd1e22c48
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/index.html
@@ -0,0 +1,27 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <link type="text/css" rel="stylesheet" href="resource/css/apiviewer.css"/>
+ <script type="text/javascript" src="script/api.js"></script>
+
+ <script type="text/javascript">
+ qx.dev.log.Logger.ROOT_LOGGER.setMinLevel(qx.dev.log.Logger.LEVEL_WARN);
+
+ var viewer;
+
+ qx.core.Init.getInstance().defineInitialize(function() {
+ qx.manager.object.AliasManager.getInstance().add("api", "resource/image");
+ });
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ viewer = new api.Viewer;
+ viewer.addToDocument();
+ });
+
+ qx.core.Init.getInstance().defineFinalize(function() {
+ viewer.load("script/data.js");
+ });
+ </script>
+ </head>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/css/apiviewer.css b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/css/apiviewer.css
new file mode 100755
index 0000000000..3458c8aab3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/css/apiviewer.css
@@ -0,0 +1,263 @@
+#DetailFrame,
+#DetailFrame td,
+#DetailFrame th{
+ font-family: Verdana, "Lucida Grande", "Bitstream Vera Sans", Tahoma, "Lucida Sans Unicode", Arial, sans-serif;
+ font-size: 11px;
+ line-height: 150%;
+}
+
+#DetailFrame h1,
+#DetailFrame h2,
+#DetailFrame h3,
+#DetailFrame h4,
+#DetailFrame h5,
+#DetailFrame h6{
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+ color: #134275;
+}
+
+#DetailFrame *{
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+#DetailFrame h1 {
+ font-size: 24px;
+ margin-bottom: 20px;
+}
+
+#DetailFrame h2 {
+ font-size: 18px;
+ margin-bottom: 4px;
+}
+
+#DetailFrame h3 {
+ font-size: 14px;
+}
+
+#DetailFrame img {
+ border: 0 none;
+ vertical-align: middle;
+}
+
+#DetailFrame a:link,
+#DetailFrame a:visited{
+ color: #134275;
+}
+
+#DetailFrame a:hover,
+#DetailFrame a:active{
+ color: #134275;
+ text-decoration: underline;
+}
+
+#DetailFrame td{
+ vertical-align: top;
+ padding: 2px;
+}
+
+
+
+
+
+#DetailLoader div.please{
+ font-size: 14px;
+ font-weight: normal;
+ margin-bottom: 4px;
+}
+
+
+
+
+
+
+#InfoViewer div.pkgtitle{
+ font-size: 14px;
+ font-weight: normal;
+ margin-bottom: 4px;
+}
+
+
+
+
+
+
+
+
+#ClassViewer div.classDescription{
+ font-size: 12px;
+
+ background: #E9F2FB;
+ border: 1px solid #E9F2FB;
+
+ -moz-border-radius: 5px;
+ padding: 12px;
+ padding-top: 4px;
+
+ width: 450px;
+}
+
+#ClassViewer div.classDescription p{
+ margin-top: 10px;
+}
+
+#ClassViewer div.packageName{
+ font-size: 14px;
+ font-weight: normal;
+ margin-bottom: 4px;
+}
+
+#ClassViewer span.typeInfo{
+ color: #83B300;
+ font-weight: normal;
+}
+
+
+
+
+
+
+#ClassViewer div.infoPanel {
+ margin-top: 30px;
+}
+
+#ClassViewer div.infoPanel h2{
+ cursor: default;
+}
+
+#ClassViewer div.infoPanel span.inheritCheck {
+ font-weight: normal;
+ float: right;
+ font-size: 11px;
+ vertical-align: bottom;
+}
+
+#ClassViewer div.infoPanel span.inheritCheck input,
+#ClassViewer div.infoPanel span.inheritCheck label{
+ vertical-align: middle;
+}
+
+#ClassViewer div.infoPanel span.inheritCheck label{
+ margin-left: 3px;
+}
+
+
+
+
+
+
+
+#ClassViewer table.info {
+ table-layout: fixed;
+}
+
+#ClassViewer table.info tr {
+ background: #FBFFEF;
+}
+
+#ClassViewer table.info tr.marked {
+ background: #DEFF83;
+}
+
+#ClassViewer table.info tr td,
+#ClassViewer div.empty-info-body {
+ border-top: 1px solid #ECECEC;
+}
+
+#ClassViewer table.info tr td{
+ overflow: hidden;
+}
+
+#ClassViewer table.info tr td td{
+ border-top: 0 none;
+ padding: 0;
+}
+
+#ClassViewer table.info td.icon{
+ text-align: center;
+ width: 20px;
+}
+
+#ClassViewer table.info td.type{
+ width: 100px;
+ font-size: 12px;
+ color: #83B300;
+ font-weight: bold;
+}
+
+#ClassViewer table.info td.toggle{
+ text-align: center;
+ width: 16px;
+ padding: 1px;
+}
+
+#ClassViewer table.info td.toggle img{
+ cursor: default;
+}
+
+#ClassViewer table.info td.text h3{
+ cursor: default;
+}
+
+#ClassViewer span.methodSignature{
+ font-size: 12px;
+ color: #83B300;
+}
+
+#ClassViewer table.info td.type a,
+#ClassViewer span.methodSignature a{
+ color: #83B300 !important;
+}
+
+#ClassViewer span.methodSignature span.parameterType{
+ font-style: italic;
+}
+
+#ClassViewer span.methodSignature span.separator{
+ color: #134275;
+ font-weight: bold;
+}
+
+#ClassViewer span.methodSignature span.parenthesis{
+ color: #134275;
+ font-weight: bold;
+}
+
+
+
+
+
+#ClassViewer div.item-detail-headline {
+ font-weight: bold;
+ color: #1D65B3;
+}
+
+#ClassViewer div.item-detail-text {
+ padding-left: 12px;
+}
+
+#ClassViewer div.item-detail-text p{
+ display: inline;
+}
+
+#ClassViewer div.item-detail-error {
+ font-weight: bold;
+ color: #D61F1C;
+}
+
+#ClassViewer span.item-detail-optional {
+ font-style: italic;
+}
+
+#ClassViewer code,
+#ClassViewer span.item-detail-param-name {
+ font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", monospace;
+ background: #E9F2FB;
+ padding: 1px;
+}
+
+#ClassViewer span.caps{
+ color: #134275;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class18.gif
new file mode 100755
index 0000000000..df8c9291c7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract18.gif
new file mode 100755
index 0000000000..788abd7094
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract_warning18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract_warning18.gif
new file mode 100755
index 0000000000..135f68cffd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_abstract_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static18.gif
new file mode 100755
index 0000000000..5eb75aea09
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static_warning18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static_warning18.gif
new file mode 100755
index 0000000000..75a6c72035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_static_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_warning18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_warning18.gif
new file mode 100755
index 0000000000..95e7a327f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/class_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/close.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/close.gif
new file mode 100755
index 0000000000..3377fb65de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/close.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constant18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constant18.gif
new file mode 100755
index 0000000000..c3a5d0cedf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constant18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constructor18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constructor18.gif
new file mode 100644
index 0000000000..b3645ac80a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/constructor18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/event18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/event18.gif
new file mode 100644
index 0000000000..d3555ff96d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/event18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_protected18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_protected18.gif
new file mode 100755
index 0000000000..be71bae519
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_protected18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_public18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_public18.gif
new file mode 100755
index 0000000000..67b1785dba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/method_public18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/nextlevel.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/nextlevel.gif
new file mode 100755
index 0000000000..48b81c80a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/nextlevel.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/open.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/open.gif
new file mode 100755
index 0000000000..30f815aa30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/open.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_abstract18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_abstract18.gif
new file mode 100755
index 0000000000..16122bf4d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_abstract18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_constructor18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_constructor18.gif
new file mode 100755
index 0000000000..d408fe8e57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_constructor18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_error18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_error18.gif
new file mode 100755
index 0000000000..ffde061d69
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_error18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_inherited18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_inherited18.gif
new file mode 100755
index 0000000000..81e4906fe7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_inherited18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_overridden18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_overridden18.gif
new file mode 100755
index 0000000000..bca3e80c48
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_overridden18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_static18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_static18.gif
new file mode 100755
index 0000000000..4b1afa1a35
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_static18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_warning18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_warning18.gif
new file mode 100755
index 0000000000..ce74a2a0f2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/overlay_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package18.gif
new file mode 100755
index 0000000000..907110110d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package_warning18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package_warning18.gif
new file mode 100755
index 0000000000..2cb875be2b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/package_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/property18.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/property18.gif
new file mode 100755
index 0000000000..ab4153d6d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/api/source/resource/image/property18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/Makefile b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/Makefile
new file mode 100644
index 0000000000..95a60c59cd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/Makefile
@@ -0,0 +1,159 @@
+###################################################################################
+# VARIABLES
+###################################################################################
+
+FRAMEWORK=../framework
+GENERATOR=$(FRAMEWORK)/tool/generator.py
+CACHE=$(FRAMEWORK)/.cache
+SOURCELOADER=
+NICE=10
+
+ifneq ($(SOURCELOADER),)
+ SOURCELDR = --source-loader-type $(SOURCELOADER)
+else
+ SOURCELDR =
+endif
+
+
+###################################################################################
+# DEFAULT TARGET
+###################################################################################
+
+all: build
+
+
+
+###################################################################################
+# COMMON TARGETS
+###################################################################################
+
+source: generate-script-source update-layout-source
+build: generate-script-build update-layout-build fix-build-rights
+sync: revision-bump build sync-qooxdoo-org
+
+
+
+###################################################################################
+# CLEANUP TARGETS
+###################################################################################
+
+clean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @rm -rf source/script
+
+realclean: clean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (REAL)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) rm -rf build
+
+distclean: realclean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (DIST)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) find . -name "*~" -o -name "*.bak" -o -name "*.old" | xargs rm -rf
+ @nice -n $(NICE) rm -rf $(CACHE)
+
+
+
+###################################################################################
+# GENERATOR TARGETS
+###################################################################################
+
+generate-script-source:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --source-script-path ../../../$(FRAMEWORK)/source/class \
+ --generate-source-script $(SOURCELDR) \
+ --source-script-file source/script/qx.js \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:../../../$(FRAMEWORK)/source/resource \
+ --cache-directory $(CACHE)
+
+generate-script-build:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --generate-compiled-script \
+ --compiled-script-file build/script/qx.js \
+ --optimize-strings \
+ --optimize-variables \
+ --copy-resources \
+ --resource-input $(FRAMEWORK)/source/resource \
+ --resource-output build/resource \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:../../resource \
+ --cache-directory $(CACHE)
+
+generate-script-build-test:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --generate-compiled-script \
+ --compiled-script-file build/script/qx.js \
+ --optimize-strings \
+ --optimize-variables \
+ --obfuscate-identifiers --add-new-lines --add-file-ids \
+ --copy-resources \
+ --resource-input $(FRAMEWORK)/source/resource \
+ --resource-output build/resource \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:../../resource \
+ --cache-directory $(CACHE)
+
+
+###################################################################################
+# FILE RELATED TARGETS
+###################################################################################
+
+update-layout-source:
+ @echo
+ @echo " CREATION OF DEMO LAYOUT (SOURCE)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Generating..."
+ @chmod u+x tool/layout.sh && nice -n $(NICE) tool/layout.sh source/script/layout.js source/html SOURCE
+
+update-demo-build:
+ @echo
+ @echo " CREATE COPY OF HTML FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Copying files..."
+ @mkdir -p build
+ @cp -f source/index.html build/
+ @mkdir -p build/html
+ @nice -n $(NICE) rsync --recursive --links --delete --exclude=.svn source/html/* build/html
+ @mkdir -p build/resource/css
+ @nice -n $(NICE) rsync --recursive --links --delete --exclude=.svn source/resource/css/* build/resource/css
+
+update-layout-build: update-demo-build
+ @echo
+ @echo " CREATION OF DEMO LAYOUT (BUILD)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Generating..."
+ @chmod u+x tool/layout.sh && nice -n $(NICE) tool/layout.sh build/script/layout.js build/html BUILD
+
+fix-build-rights:
+ @echo
+ @echo " FIX RIGHTS ON BUILD FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Fixing file rights..."
+ @nice -n $(NICE) find build -type d | xargs chmod a+rx
+ @nice -n $(NICE) find build -type f | xargs chmod a+r
+
+
+
+
+
+###################################################################################
+# ONLINE TARGETS
+###################################################################################
+
+revision-bump:
+ @$(MAKE) -C ../framework revision-bump
+
+sync-qooxdoo-org:
+ @echo
+ @echo " SYNC FILES TO HOMEPAGE"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Syncing..."
+ @nice -n $(NICE) rsync --checksum --recursive --archive --delete --verbose build/* root@qooxdoo.org:/var/www/qooxdoo/demo
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/AtAGlance.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/AtAGlance.js
new file mode 100644
index 0000000000..e2570aa310
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/AtAGlance.js
@@ -0,0 +1,1303 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany
+ http://www.1und1.de | http://www.1and1.com
+ All rights reserved
+
+ License:
+ LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+
+ Internet:
+ * http://qooxdoo.org
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ <sebastian dot werner at 1und1 dot de>
+ * Andreas Ecker (ecker)
+ <andreas dot ecker at 1und1 dot de>
+ * Til Schneider (til132)
+ <tilman dot schneider at stz-ida dot de>
+
+************************************************************************ */
+
+qx.OO.defineClass("AtAGlance", qx.core.Object,
+function () {
+ qx.core.Object.call(this);
+
+ var barView = new qx.ui.pageview.buttonview.ButtonView;
+
+ barView.setLocation(10, 10);
+ barView.setRight(10);
+ barView.setBottom(10);
+
+ barView.addToDocument();
+
+ this._createPage(barView, "Form", "icon/32/wordprocessor.png", this._createFormDemo(), "threedface");
+ this._createPage(barView, "Tooltip", "icon/32/run.png", this._createTooltipDemo());
+ this._createPage(barView, "Menu and Toolbar", "icon/32/display.png", this._createToolbarDemo());
+ this._createPage(barView, "Tab", "icon/32/contents.png", this._createTabDemo(), "threedface", true);
+ this._createPage(barView, "Tree", "icon/32/view-sidetree.png", this._createTreeDemo(), "threedface");
+ this._createPage(barView, "List", "icon/32/view-detailed.png", this._createListDemo(), "threedface");
+ this._createPage(barView, "ListView", "icon/32/view-multicolumn.png", this._createListViewDemo(), "threedface");
+ this._createPage(barView, "Table", "icon/32/view-multicolumn.png", this._createTableDemo(), "threedface", true);
+ this._createPage(barView, "DateChooser", "icon/32/date.png", this._createDateChooserDemo(), "threedface");
+ this._createPage(barView, "Native Window", "icon/32/display.png", this._createNativeWindowDemo(), "threedface");
+ this._createPage(barView, "Internal Window", "icon/32/look-and-feel.png", this._createInternalWindowDemo(), null, true);
+ this._createPage(barView, "Themes", "icon/32/style.png", this._createThemesDemo());
+});
+
+
+qx.Proto._createPage = function(barView, title, iconUrl, widget, backgroundColor, scrolls) {
+ var bt = new qx.ui.pageview.buttonview.Button(title, iconUrl);
+ if (barView.getBar().isEmpty()) {
+ bt.setChecked(true);
+ }
+
+ barView.getBar().add(bt);
+
+ var page = new qx.ui.pageview.buttonview.Page(bt);
+ barView.getPane().add(page);
+
+ page.set({ left:0, right:0, top:0, bottom:0 });
+
+ widget.setLocation(0, 0);
+ widget.set({ left:0, right:0, bottom:0, right:0 });
+ if (!scrolls) {
+ widget.set({ height:null, width:null, overflow:"auto" });
+ }
+
+ if (backgroundColor) {
+ page.setBackgroundColor(backgroundColor);
+ }
+
+ page.add(widget);
+
+ return page;
+}
+
+
+qx.Proto._createFormDemo = function() {
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+
+ var groupWidth = 285;
+
+ // fields
+ var group1 = new qx.ui.groupbox.GroupBox("Some controls", "icon/16/configure.png");
+ group1.setDimension("auto", "auto");
+ main.add(group1);
+
+ var gl = new qx.ui.layout.GridLayout;
+ group1.add(gl);
+
+ gl.setDimension(groupWidth - 26, "auto");
+ gl.setColumnCount(2);
+ gl.setRowCount(6);
+ gl.setVerticalSpacing(4);
+ gl.setHorizontalSpacing(6);
+
+ gl.setColumnWidth(0, 70);
+ gl.setColumnWidth(1, 180);
+
+ //gl.setColumnHorizontalAlignment(0, "right");
+ gl.setColumnVerticalAlignment(0, "middle");
+
+ gl.setRowHeight(0, 20);
+ gl.setRowHeight(1, 20);
+ gl.setRowHeight(2, 20);
+ gl.setRowHeight(3, 20);
+ gl.setRowHeight(4, 70);
+ gl.setRowHeight(5, 20);
+
+ gl.add(new qx.ui.basic.Label("Name"), 0, 0);
+ gl.add(new qx.ui.form.TextField, 1, 0);
+ gl.add(new qx.ui.basic.Label("Amount"), 0, 1);
+ gl.add(new qx.ui.form.Spinner, 1, 1);
+ gl.add(new qx.ui.basic.Label("Type"), 0, 2);
+
+ var combo = new qx.ui.form.ComboBox;
+ combo.add(new qx.ui.form.ListItem("CD")); //, "icon/16/cd.png"));
+ combo.add(new qx.ui.form.ListItem("Clock")); //, "icon/16/clock.png"));
+ combo.add(new qx.ui.form.ListItem("Modem")); //, "icon/16/modem.png"));
+ combo.add(new qx.ui.form.ListItem("Network")); //, "icon/16/network.png"));
+ combo.add(new qx.ui.form.ListItem("Sound")); //, "icon/16/mixer.png"));
+ combo.add(new qx.ui.form.ListItem("PDA")); //, "icon/16/pda.png"));
+ combo.add(new qx.ui.form.ListItem("Printer")); //, "icon/16/printer.png"));
+ combo.add(new qx.ui.form.ListItem("Scanner")); //, "icon/16/scanner.png"));
+ combo.add(new qx.ui.form.ListItem("TV")); //, "icon/16/tv.png"));
+ gl.add(combo, 1, 2);
+
+ gl.add(new qx.ui.basic.Label("E-Mail"), 0, 3);
+ gl.add(new qx.ui.form.TextField, 1, 3);
+
+ var label6 = new qx.ui.basic.Label("Comment");
+ label6.setVerticalAlign("top");
+ label6.setVerticalAlign("top");
+ gl.add(label6, 0, 4);
+
+ gl.add(new qx.ui.form.TextArea, 1, 4);
+
+ var input7 = new qx.ui.form.Button("Submit", "icon/16/apply.png");
+ input7.setHorizontalAlign("right");
+ gl.add(input7, 1, 5);
+
+ // Checkboxes
+ var group2 = new qx.ui.groupbox.GroupBox("Some settings");
+ group2.setDimension(groupWidth, "auto");
+ main.add(group2);
+
+ var bl = new qx.ui.layout.VerticalBoxLayout;
+ group2.add(bl);
+
+ bl.add(new qx.ui.form.CheckBox("Permit others to view my favorites"));
+
+ var chb = new qx.ui.form.CheckBox("Use the very high bitrate");
+ chb.setChecked(true);
+ bl.add(chb);
+
+ // Radio buttons
+ var group3 = new qx.ui.groupbox.GroupBox("Network speed", "icon/16/network.png");
+ group3.setDimension(groupWidth, "auto");
+ main.add(group3);
+
+ var bl = new qx.ui.layout.VerticalBoxLayout;
+ group3.add(bl);
+
+ var radio1 = new qx.ui.form.RadioButton("Modem");
+ var radio2 = new qx.ui.form.RadioButton("DSL");
+ var radio3 = new qx.ui.form.RadioButton("Direct link");
+ radio2.setChecked(true);
+ bl.add(radio1, radio2, radio3);
+ new qx.manager.selection.RadioManager("network", [radio1, radio2, radio3]);
+
+ return main;
+}
+
+
+qx.Proto._createTooltipDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.setSpacing(10);
+
+ var c1 = new qx.ui.basic.Atom("Hover me", "icon/32/run.png");
+ c1.setPadding(5);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c1.setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ c1.setToolTip(new qx.ui.popup.ToolTip("Look at this"));
+ main.add(c1);
+
+ var c2 = new qx.ui.basic.Atom("Hover me", "icon/32/toys.png");
+ c2.setPadding(5);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c2.setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ c2.setToolTip(new qx.ui.popup.ToolTip("Images are also possible", "icon/16/help.png"));
+ main.add(c2);
+
+ var c3 = new qx.ui.basic.Atom("Hover me", "icon/32/penguin.png");
+ c3.setPadding(5);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c3.setBackgroundColor(new qx.renderer.color.Color("#D1A4AD"));
+ var tip3 = new qx.ui.popup.ToolTip('Such a great tooltip with a show timeout of 50ms.<br>And <b>H</b><span style="color:red">T</span><i>M</i><u>L</u>', "icon/32/penguin.png");
+ tip3.setShowInterval(50);
+ c3.setToolTip(tip3);
+ main.add(c3);
+
+ return main;
+}
+
+
+qx.Proto._createToolbarDemo = function() {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+
+ // Menu
+ var m1 = new qx.ui.menu.Menu;
+ var mb1_01 = new qx.ui.menu.Button("New", "icon/16/file-new.png");
+ var mb1_02 = new qx.ui.menu.Button("Open", "icon/16/file-open.png");
+ var mb1_03 = new qx.ui.menu.Button("Save", "icon/16/file-save.png");
+ var mb1_04 = new qx.ui.menu.Button("Save as", "icon/16/file-save-as.png");
+ var mb1_05 = new qx.ui.menu.Button("Close", "icon/16/stop.png");
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", "icon/16/reload.png");
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+ var m2 = new qx.ui.menu.Menu;
+ var mb2_01 = new qx.ui.menu.Button("Undo", "icon/16/undo.png");
+ var mb2_02 = new qx.ui.menu.Button("Redo", "icon/16/redo.png");
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png");
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png");
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png");
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png");
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All");
+ var mb2_08 = new qx.ui.menu.Button("Find", "icon/16/find.png");
+ var mb2_09 = new qx.ui.menu.Button("Find Again");
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", null, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", null, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", null, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt");
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt");
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt");
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt");
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt");
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt");
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt");
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt");
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt");
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt");
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First");
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second");
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third");
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First");
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, null, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third");
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, null, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", "icon/16/configure.png");
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", "icon/16/connect-established.png");
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences");
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window");
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", null, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally");
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically");
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window");
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window");
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+ var m5 = new qx.ui.menu.Menu;
+ var mb5_01 = new qx.ui.menu.Button("Help", "icon/16/help.png");
+ var mb5_02 = new qx.ui.menu.Button("About", "icon/16/run.png");
+ m5.add(mb5_01, mb5_02);
+
+ doc.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+ mb1.add(mbb1, mbb2, mbb3, mbb4, mbb5);
+ main.add(mb1);
+
+ // Toolbar
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ }
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ }
+
+ function createButton(text, icon, clazz, checked) {
+ if (! clazz) {
+ clazz = qx.ui.toolbar.Button;
+ }
+
+ var button = new clazz(text, "icon/22/" + icon + ".png");
+ doc.addEventListener("changeLayout", changeLayout, button);
+ doc.addEventListener("changeSize", changeSize, button);
+
+ if (checked) {
+ button.setChecked(true);
+ }
+
+ return button;
+ }
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ main.add(tb);
+
+ var part = new qx.ui.toolbar.Part;
+ tb.add(part);
+ part.add(createButton("New", "file-new"));
+ part.add(new qx.ui.toolbar.Separator);
+ part.add(createButton("Copy", "edit-copy"));
+ part.add(createButton("Cut", "edit-cut"));
+ part.add(createButton("Paste", "edit-paste"));
+
+ var part = new qx.ui.toolbar.Part;
+ tb.add(part);
+ part.add(createButton("Check", "configure", qx.ui.toolbar.CheckBox, true));
+
+ var part = new qx.ui.toolbar.Part;
+ tb.add(part);
+ var radio1 = createButton("Radio1", "view-choose", qx.ui.toolbar.RadioButton);
+ var radio2 = createButton("Radio2", "view-detailed", qx.ui.toolbar.RadioButton, true);
+ var radio3 = createButton("Radio3", "view-icon", qx.ui.toolbar.RadioButton);
+ part.add(radio1, radio2, radio3);
+ new qx.manager.selection.RadioManager(null, [radio1, radio2, radio3]);
+
+ // Toolbar manipulation
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.setDimension("auto", "auto");
+ hor.set({ spacing:10, marginTop:20 });
+ main.add(hor);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.setDimension("auto", "auto");
+ hor.add(vert);
+
+ var radio1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var radio2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var radio3 = new qx.ui.form.RadioButton("Show Label", "label");
+ radio1.setChecked(true);
+ vert.add(radio1, radio2, radio3);
+ var rbm = new qx.manager.selection.RadioManager(null, [radio1, radio2, radio3]);
+ rbm.addEventListener("changeSelected", function(e) {
+ doc.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ // Alignment
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.setDimension("auto", "auto");
+ hor.add(vert);
+
+ var radio1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var radio2 = new qx.ui.form.RadioButton("Centered", "center");
+ var radio3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+ radio1.setChecked(true);
+ vert.add(radio1, radio2, radio3);
+ var rbm = new qx.manager.selection.RadioManager(null, [radio1, radio2, radio3]);
+ rbm.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+ // Icon Sizes
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.setDimension("auto", "auto");
+ hor.add(vert);
+
+ var button = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/colors.png");
+ button.setHorizontalAlign("center");
+ button.addEventListener("execute", function(e) {
+ doc.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+ vert.add(button);
+
+ var button = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/colors.png");
+ button.setHorizontalAlign("center");
+ button.addEventListener("execute", function(e) {
+ doc.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+ vert.add(button);
+
+ return main;
+}
+
+
+qx.Proto._createTabDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"100%", height:"100%", spacing:10 });
+
+ // Tab view
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ width:"1*" });
+ main.add(tf1);
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Edit");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Find");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Backup");
+ t1_1.setChecked(true);
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ p1_2.add(new qx.ui.form.TextField("Find Anywhere"));
+ p1_3.add(new qx.ui.form.TextField("Backup Input"));
+
+ var c1 = new qx.ui.form.CheckBox("Place bar on top");
+ var c2 = new qx.ui.form.CheckBox("Align tabs to left");
+
+ c1.setTop(0);
+ c1.setChecked(true);
+
+ c2.setTop(20);
+ c2.setChecked(true);
+
+ p1_1.add(c1, c2);
+
+ c1.addEventListener("changeChecked", function(e) {
+ tf1.setPlaceBarOnTop(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ tf1.setAlignTabsToLeft(e.getData());
+ });
+
+ // Inner tab view
+ var tf2 = new qx.ui.pageview.tabview.TabView;
+ tf2.set({ left: 0, top: 50, right: 0, bottom: 0 });
+ p1_2.add(tf2);
+
+ var t2_1 = new qx.ui.pageview.tabview.Button("Search for Files", "icon/16/file-open.png");
+ var t2_2 = new qx.ui.pageview.tabview.Button("Search the Web", "icon/16/network.png");
+ var t2_3 = new qx.ui.pageview.tabview.Button("Search in Mails", "icon/16/mail.png");
+ t2_1.setChecked(true);
+ tf2.getBar().add(t2_1, t2_2, t2_3);
+
+ var p2_1 = new qx.ui.pageview.tabview.Page(t2_1);
+ var p2_2 = new qx.ui.pageview.tabview.Page(t2_2);
+ var p2_3 = new qx.ui.pageview.tabview.Page(t2_3);
+ tf2.getPane().add(p2_1, p2_2, p2_3);
+
+ var t2_1 = new qx.ui.form.TextField("Files...");
+ var t2_2 = new qx.ui.form.TextField("Web...");
+ var t2_3 = new qx.ui.form.TextField("Mails...");
+
+ t2_1.set({ top: 2, left: 0, width: 140 });
+ t2_2.set({ top: 2, left: 0, width: 140 });
+ t2_3.set({ top: 2, left: 0, width: 140 });
+
+ p2_1.add(t2_1);
+ p2_2.add(t2_2);
+ p2_3.add(t2_3);
+
+ var b2_1 = new qx.ui.form.Button("Search", "icon/16/search.png");
+ var b2_2 = new qx.ui.form.Button("Search", "icon/16/search.png");
+ var b2_3 = new qx.ui.form.Button("Search", "icon/16/search.png");
+
+ b2_1.set({ top: 0, left: 150 });
+ b2_2.set({ top: 0, left: 150 });
+ b2_3.set({ top: 0, left: 150 });
+
+ p2_1.add(b2_1);
+ p2_2.add(b2_2);
+ p2_3.add(b2_3);
+
+ function dosearch(e) {
+ alert("Searching...");
+ }
+
+ b2_1.addEventListener("click", dosearch);
+ b2_2.addEventListener("click", dosearch);
+ b2_3.addEventListener("click", dosearch);
+
+ // Bar view
+ var bs = new qx.ui.pageview.buttonview.ButtonView;
+ bs.set({ width:"1*", barPosition:"left" });
+ main.add(bs);
+
+ var bsb1 = new qx.ui.pageview.buttonview.Button("Display", "icon/16/display.png");
+ var bsb2 = new qx.ui.pageview.buttonview.Button("Colorize", "icon/16/colors.png");
+ var bsb3 = new qx.ui.pageview.buttonview.Button("Icons", "icon/16/icons.png");
+ var bsb4 = new qx.ui.pageview.buttonview.Button("Applications", "icon/16/run.png");
+ var bsb5 = new qx.ui.pageview.buttonview.Button("System", "icon/16/display.png");
+
+ bsb1.setChecked(true);
+
+ bsb1.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb2.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb3.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb4.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb5.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+
+ bs.getBar().add(bsb1, bsb2, bsb3, bsb4, bsb5);
+ bs.getBar().setHorizontalChildrenAlign("center");
+ bs.getBar().setVerticalChildrenAlign("bottom");
+
+ var p1 = new qx.ui.pageview.buttonview.Page(bsb1);
+ var p2 = new qx.ui.pageview.buttonview.Page(bsb2);
+ var p3 = new qx.ui.pageview.buttonview.Page(bsb3);
+ var p4 = new qx.ui.pageview.buttonview.Page(bsb4);
+ var p5 = new qx.ui.pageview.buttonview.Page(bsb5);
+ bs.getPane().add(p1, p2, p3, p4, p5);
+
+ p1.add(new qx.ui.form.TextField("Display Input"));
+ p2.add(new qx.ui.form.TextField("Paint Input"));
+ p3.add(new qx.ui.form.TextField("Icons Input"));
+ p4.add(new qx.ui.form.TextField("Applications Input"));
+ p5.add(new qx.ui.form.TextField("System Input"));
+
+ var r1 = new qx.ui.form.RadioButton("Top", "top");
+ var r2 = new qx.ui.form.RadioButton("Right", "right");
+ var r3 = new qx.ui.form.RadioButton("Bottom", "bottom");
+ var r4 = new qx.ui.form.RadioButton("Left", "left", null, true);
+
+ r1.setTop(50);
+ r2.setTop(70);
+ r3.setTop(90);
+ r4.setTop(110);
+
+ p1.add(r1, r2, r3, r4);
+
+ var rm = new qx.manager.selection.RadioManager(null, [r1, r2, r3, r4]);
+
+ rm.addEventListener("changeSelected", function(e) {
+ bs.setBarPosition(e.getData().getValue());
+ });
+
+ return main;
+}
+
+
+qx.Proto._createTreeDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"100%", spacing:10 });
+
+ // Workaround: qx.ui.tree.Tree causes an exception when added to a qx.ui.core.Parent that
+ // has no qx.ui.core.Parent. -> So we give the parent a pseudo parent
+ var workaround = new qx.ui.layout.HorizontalBoxLayout;
+ workaround.add(main);
+
+ var t = new qx.ui.tree.Tree("Root");
+ t.set({ backgroundColor:255, border:qx.renderer.border.BorderPresets.getInstance().inset,
+ overflow:"scrollY", height:"100%", width:200 });
+ main.add(t);
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop", "icon/16/home.png", "icon/16/home.png");
+ t.add(te1);
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)", "icon/16/harddrive.png");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)", "icon/16/harddrive.png");
+ te1_2.add(te1_2_1, te1_2_2);
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ t.add(te2);
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash", "icon/16/trash.png", "icon/16/trash.png");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i = 0; i < 50; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ }
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ // Command frame
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+ commandFrame.set({ width:"auto", height:"auto" });
+ main.add(commandFrame);
+
+ var command = new qx.ui.layout.VerticalBoxLayout;
+ command.set({ width:"auto", height:"auto", paddingRight:12 });
+ commandFrame.add(command);
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+ command.add(tCurrentLabel);
+
+ var tCurrentInput = new qx.ui.form.TextField;
+ tCurrentInput.set({ readOnly:true, marginBottom:20 });
+ command.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+ tDoubleClick.addEventListener("changeChecked", function(e) {
+ t.setUseDoubleClick(e.getData());
+ });
+ command.add(tDoubleClick);
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+ tTreeLines.setChecked(true);
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+ command.add(tTreeLines);
+
+ return main;
+}
+
+
+qx.Proto._createListDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"100%", spacing:10 });
+
+ // List
+ var list = new qx.ui.form.List;
+ list.set({ height:"100%", width:150, overflow:"scrollY" });
+ main.add(list)
+
+ var item;
+ for(var i = 1; i <= 35; i++) {
+ var iconName;
+ switch (parseInt(Math.random() * 5)) {
+ case 0: iconName = "folder.png"; break;
+ case 1: iconName = "harddrive.png"; break;
+ case 2: iconName = "penguin.png"; break;
+ case 3: iconName = "pda.png"; break;
+ case 4: iconName = "bell.png"; break;
+ }
+ item = new qx.ui.form.ListItem("Item No " + i, "icon/" + ((i % 4) ? "16" : "48") + "/" + iconName);
+
+ if (!(i % 9)) (item.setEnabled(false));
+
+ list.add(item);
+ }
+
+ // Control
+ var control = new qx.ui.layout.VerticalBoxLayout;
+ control.set({ width:"auto", height:"auto" });
+ main.add(control);
+
+ var c1 = new qx.ui.form.CheckBox("Enable Multi-Selection");
+ var c2 = new qx.ui.form.CheckBox("Enable Drag-Selection");
+ var c3 = new qx.ui.form.CheckBox("Allow Deselection");
+ var c4 = new qx.ui.form.CheckBox("Enable Inline Find");
+ control.add(c1, c2, c3, c4);
+
+ c1.setChecked(true);
+ c2.setChecked(true);
+ c3.setChecked(true);
+ c4.setChecked(true);
+
+ c1.addEventListener("changeChecked", function(e) {
+ list.getManager().setMultiSelection(e.getData());
+ });
+ c2.addEventListener("changeChecked", function(e) {
+ list.getManager().setDragSelection(e.getData());
+ });
+ c3.addEventListener("changeChecked", function(e) {
+ list.getManager().setCanDeselect(e.getData());
+ });
+ c4.addEventListener("changeChecked", function(e) {
+ list.setEnableInlineFind(e.getData());
+ });
+
+ var rd1 = new qx.ui.form.RadioButton("Show Label", "label");
+ var rd2 = new qx.ui.form.RadioButton("Show Icon", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Both", "both");
+ rd3.setChecked(true);
+ control.add(rd1, rd2, rd3);
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2, rd3]);
+
+ rbm.addEventListener("changeSelected", function(e) {
+ for (var i = 0; i < list.getChildrenLength(); i++) {
+ list.getChildren()[i].setShow(e.getData().getValue());
+ }
+ });
+
+ return main;
+}
+
+
+qx.Proto._createListViewDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"100%", spacing:10 });
+
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i = 0, t; i < 1000; i++) {
+ t = Math.round(Math.random() * 4);
+ ld.push({ name : { html : "E-Mail " + i, icon : "icon/16/email.png", iconWidth : 16, iconHeight : 16 }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }, open : { uri : "http://www.google.com/search?q=" + i, html : "Open " + i }});
+ }
+
+ var lc = {
+ name : { label : "Name", width : 120, type : "iconHtml" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ }
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+ main.add(lv);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+
+ return main;
+}
+
+
+qx.Proto._createTableDemo = function() {
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ width:"100%", height:"100%" });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ }
+
+ return table;
+}
+
+
+qx.Proto._createDateChooserDemo = function() {
+ var main = new qx.ui.layout.VerticalBoxLayout;
+
+ var chooser = new qx.ui.component.DateChooser;
+ chooser.setLocation(10, 10);
+ chooser.setWidth("auto");
+ chooser.setHeight("auto");
+ main.add(chooser);
+
+ return main;
+}
+
+
+qx.Proto._createNativeWindowDemo = function() {
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"auto", spacing:5 });
+
+ var win = new qx.client.NativeWindow("http://www.google.com");
+ win.setDimension(600, 400);
+
+ var openBt = new qx.ui.form.Button("Open Native Window", "icon/16/wizard.png");
+ openBt.addEventListener("click", function() { win.open(); } );
+ main.add(openBt);
+
+ // Initial Settings
+ var fs1 = new qx.ui.groupbox.GroupBox("Initial Settings");
+ fs1.set({ width:250, height:"auto" });
+ main.add(fs1);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.set({ width:"auto", height:"auto" });
+ fs1.add(vert);
+
+ var chk1 = new qx.ui.form.CheckBox("Resizeable");
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ win.setResizeable(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk2.setChecked(false);
+ chk2.addEventListener("changeChecked", function(e) {
+ win.setShowStatusbar(e.getData());
+ });
+
+ var chk3 = new qx.ui.form.CheckBox("Show Menubar");
+ chk3.setChecked(false);
+ chk3.addEventListener("changeChecked", function(e) {
+ win.setShowMenubar(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Show Location");
+ chk4.setChecked(false);
+ chk4.addEventListener("changeChecked", function(e) {
+ win.setShowLocation(e.getData());
+ });
+
+ var chk5 = new qx.ui.form.CheckBox("Show Toolbar");
+ chk5.setChecked(false);
+ chk5.addEventListener("changeChecked", function(e) {
+ win.setShowToolbar(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Allow Scrollbars");
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ win.setAllowScrollbars(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Modal");
+ chk7.setChecked(false);
+ chk7.addEventListener("changeChecked", function(e) {
+ win.setModal(e.getData());
+ });
+
+ var chk8 = new qx.ui.form.CheckBox("Dependent");
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ win.setDependent(e.getData());
+ });
+
+ vert.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8);
+
+ // Runtime Settings
+ var fs2 = new qx.ui.groupbox.GroupBox("Runtime Settings");
+ fs2.set({ width:250, height:"auto" });
+ main.add(fs2);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.set({ width:"auto", height:"auto", spacing:2 });
+ fs2.add(vert);
+
+ var tf1 = new qx.ui.form.TextField("http://www.google.com");
+ tf1.setWidth(150);
+
+ var setUrlBt = new qx.ui.form.Button("Set Url", "icon/16/ok.png");
+ setUrlBt.addEventListener("click", function() {
+ win.setUrl(tf1.getValue());
+ });
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5,
+ verticalChildrenAlign:"middle", marginBottom:10 });
+ vert.add(hor);
+ hor.add(tf1, setUrlBt);
+
+
+ var tf2 = new qx.ui.form.TextField("600");
+ tf2.setWidth(50);
+
+ var btn2 = new qx.ui.form.Button("Set Width", "icon/16/ok.png");
+ btn2.addEventListener("click", function() {
+ win.setWidth(parseInt(tf2.getValue()));
+ });
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5,
+ verticalChildrenAlign:"middle" });
+ vert.add(hor);
+ hor.add(tf2, btn2);
+
+
+ var tf3 = new qx.ui.form.TextField("400");
+ tf3.setWidth(50);
+
+ var btn3 = new qx.ui.form.Button("Set Height", "icon/16/ok.png");
+ btn3.addEventListener("click", function() {
+ win.setHeight(parseInt(tf3.getValue()));
+ });
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5,
+ verticalChildrenAlign:"middle", marginBottom:10 });
+ vert.add(hor);
+ hor.add(tf3, btn3);
+
+
+ var btn4 = new qx.ui.form.Button("Center to screen", "icon/16/display.png");
+ btn4.setWidth("100%");
+ btn4.addEventListener("click", function() {
+ win.centerToScreen()
+ });
+
+ var btn5 = new qx.ui.form.Button("Center to screen area", "icon/16/display.png");
+ btn5.setWidth("100%");
+ btn5.addEventListener("click", function() {
+ win.centerToScreenArea()
+ });
+
+ var btn6 = new qx.ui.form.Button("Center to opener", "icon/16/display.png");
+ btn6.setWidth("100%");
+ btn6.addEventListener("click", function() {
+ win.centerToOpener()
+ });
+
+ vert.add(btn4, btn5, btn6);
+
+ return main;
+}
+
+
+qx.Proto._createInternalWindowDemo = function() {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ var main = new qx.ui.layout.CanvasLayout;
+ main.setOverflow("hidden");
+
+ // Create the windows
+ var w1 = new qx.ui.window.Window("First Window", "icon/16/bell.png");
+ w1.setSpace(20, 400, 48, 250);
+ main.add(w1);
+
+ var w2 = new qx.ui.window.Window("Second Window", "icon/16/colors.png");
+ w2.setSpace(250, "auto", 120, "auto");
+ main.add(w2);
+
+ var w3 = new qx.ui.window.Window("Third Window", "icon/16/network.png");
+ w3.setSpace(100, "auto", 200, "auto");
+ w3.set({ maxWidth:450, maxHeight:400 });
+ main.add(w3);
+
+ var wm1 = new qx.ui.window.Window("First Modal Dialog");
+ wm1.setSpace(150, 200, 150, 200);
+ wm1.setModal(true);
+ doc.add(wm1);
+
+ var wm2 = new qx.ui.window.Window("Second Modal Dialog");
+ wm2.setSpace(100, 200, 100, 150);
+ wm2.set({ modal:true, showClose:false });
+ doc.add(wm2);
+
+ // Fill window 1
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/chart.png");
+ a1.set({ top: 4, left: 4 });
+ w1.add(a1);
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 10, top: 52, right: 10, bottom: 10 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Explore");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Internet");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Future");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ w1.add(tf1);
+
+ // Fill window 2
+ var at1 = new qx.ui.basic.Atom("Your second window", "icon/22/find.png");
+ at1.setLocation(8, 8);
+ w2.add(at1);
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Settings");
+ fs1.set({ left:4, top:40, right:4, bottom:4 });
+
+ var chk1 = new qx.ui.form.CheckBox("Show Icon");
+ chk1.set({ left:0, top:0, checked:true });
+ chk1.addEventListener("changeChecked", function(e) {
+ w2.setShowIcon(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Caption");
+ chk2.set({ left:0, top:20, checked:true });
+ chk2.addEventListener("changeChecked", function(e) {
+ w2.setShowCaption(e.getData());
+ });
+
+ var chk3 = new qx.ui.form.CheckBox("Resizeable");
+ chk3.set({ left:0, top:50, checked:true });
+ chk3.addEventListener("changeChecked", function(e) {
+ w2.setResizeable(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Moveable");
+ chk4.set({ left:0, top:70, checked:true });
+ chk4.addEventListener("changeChecked", function(e) {
+ w2.setMoveable(e.getData());
+ });
+
+ var chk5 = new qx.ui.form.CheckBox("Show Close");
+ chk5.set({ left:140, top:0, checked:true });
+ chk5.addEventListener("changeChecked", function(e) {
+ w2.setShowClose(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Show Maximize/Restore");
+ chk6.set({ left:140, top:20, checked:true });
+ chk6.addEventListener("changeChecked", function(e) {
+ w2.setShowMaximize(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Show Minimize");
+ chk7.set({ left:140, top:40, checked:true });
+ chk7.addEventListener("changeChecked", function(e) {
+ w2.setShowMinimize(e.getData());
+ });
+
+ var chk8 = new qx.ui.form.CheckBox("Allow Close");
+ chk8.set({ left:140, top:70, checked:true });
+ chk8.addEventListener("changeChecked", function(e) {
+ w2.setAllowClose(e.getData());
+ });
+
+ var chk9 = new qx.ui.form.CheckBox("Allow Maximize");
+ chk9.set({ left:140, top:90, checked:true });
+ chk9.addEventListener("changeChecked", function(e) {
+ w2.setAllowMaximize(e.getData());
+ });
+
+ var chk10 = new qx.ui.form.CheckBox("Allow Minimize");
+ chk10.set({ left:140, top:110, checked:true });
+ chk10.addEventListener("changeChecked", function(e) {
+ w2.setAllowMinimize(e.getData());
+ });
+
+ var l1 = new qx.ui.basic.Atom("Move Method", "icon/16/info.png");
+ l1.setLocation(0, 100);
+
+ var rb1 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb1.setLocation(0, 120);
+
+ var rb2 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb2.setLocation(0, 140);
+ rb2.setChecked(true);
+
+ var rb3 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb3.setLocation(0, 160);
+
+ var rbm1 = new qx.manager.selection.RadioManager("move", [rb1, rb2, rb3]);
+
+ rbm1.addEventListener("changeSelected", function(e) {
+ w2.setMoveMethod(e.getData().getValue());
+ });
+
+ var l2 = new qx.ui.basic.Atom("Resize Method", "icon/16/info.png");
+ l2.setLocation(0, 190);
+
+ var rb4 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb4.setLocation(0, 210);
+ rb4.setChecked(true);
+
+ var rb5 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb5.setLocation(0, 230);
+
+ var rb6 = new qx.ui.form.RadioButton("Lazy Opaque", "lazyopaque");
+ rb6.setLocation(0, 250);
+
+ var rb7 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb7.setLocation(0, 270);
+
+ var rbm2 = new qx.manager.selection.RadioManager("resize", [rb4, rb5, rb6, rb7]);
+
+ rbm2.addEventListener("changeSelected", function(e) {
+ w2.setResizeMethod(e.getData().getValue());
+ });
+
+ var chk11 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk11.setLocation(140, 140);
+ chk11.setChecked(false);
+ chk11.addEventListener("changeChecked", function(e) {
+ w2.setShowStatusbar(e.getData());
+ });
+
+ var btnpack = new qx.ui.form.Button("Pack Window", "icon/16/cdrom.png");
+ btnpack.setLocation(140, 170);
+ btnpack.addEventListener("execute", function(e) {
+ w2.pack();
+ });
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10, l1, rb1, rb2, rb3, l2, rb4, rb5, rb6, rb7, chk11, btnpack);
+ w2.add(fs1);
+
+ // Fill window 3
+ var btn1 = new qx.ui.form.Button("Open Modal Dialog 1", "icon/16/launch.png");
+ btn1.setLocation(4, 4);
+ w3.add(btn1);
+
+ btn1.addEventListener("execute", function(e) {
+ wm1.open();
+ });
+
+ // Fill modal window 1
+ var btn2 = new qx.ui.form.Button("Open Modal Dialog 2", "icon/16/launch.png");
+ btn2.setLocation(4, 4);
+ wm1.add(btn2);
+
+ btn2.addEventListener("execute", function(e) {
+ wm2.open();
+ });
+
+ var chkm1 = new qx.ui.form.CheckBox("Modal", null, null, true);
+ chkm1.setLocation(4, 50);
+ wm1.add(chkm1);
+
+ chkm1.addEventListener("changeChecked", function(e) {
+ wm1.setModal(e.getData());
+ });
+
+ // Fill modal window 2
+ var icon1 = new qx.ui.basic.Image("icon/32/error.png");
+ var warn1 = new qx.ui.basic.Label("Do you want to delete<br/>all your personal data?");
+
+ icon1.setTop(10);
+ icon1.setLeft(10);
+
+ warn1.setTop(10);
+ warn1.setLeft(48);
+
+ var btn3 = new qx.ui.form.Button("Yes", "icon/16/button-ok.png");
+ var btn4 = new qx.ui.form.Button("No", "icon/16/button-cancel.png");
+
+ btn3.addEventListener("execute", function(e) {
+ alert("Thank you!");
+ wm2.close();
+ });
+
+ btn4.addEventListener("execute", function(e) {
+ alert("Sorry, please click 'Yes'!");
+ });
+
+ btn3.set({ bottom : 10, right : 10 });
+ btn4.set({ bottom : 10, left : 10 });
+
+ wm2.add(btn3, btn4, icon1, warn1);
+
+ // Icon & Color Themes
+ //qx.manager.object.ImageManager.getInstance().createThemeList(w3, 20, 248);
+ //qx.manager.object.ColorManager.getInstance().createThemeList(w3, 4, 58);
+
+ w1.open();
+ w2.open();
+ w3.open();
+
+ return main;
+}
+
+
+qx.Proto._createThemesDemo = function() {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ // Theming window
+ var win = new qx.ui.window.Window("Theming window", "icon/16/style.png");
+ //win.set({ width:"auto", height:"auto" });
+ doc.add(win);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.set({ width:"auto", height:"auto", spacing:5, left:0, top:0, right:0, bottom:0 });
+ vert.setPadding(10);
+ win.add(vert);
+
+ var info = new qx.ui.basic.Atom("Click on one of the buttons and then view the "
+ + "other tabs to see the changes", "icon/32/run.png");
+ //info.set({ border:qx.renderer.border.BorderPresets.getInstance().inset, backgroundColor:"white" });
+ info.setPadding(5);
+ vert.add(info);
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5 });
+ vert.add(hor);
+
+ var can = new qx.ui.layout.CanvasLayout;
+ can.set({ width:"auto", height:"auto" });
+ hor.add(can);
+ qx.manager.object.ImageManager.getInstance().createThemeList(can, 0, 0);
+
+ var can = new qx.ui.layout.CanvasLayout;
+ can.set({ width:"auto", height:"auto" });
+ hor.add(can);
+ qx.manager.object.ColorManager.getInstance().createThemeList(can, 0, 0);
+
+ // Put the window in lower right corner
+ win.set({ width:"auto", height:"auto" });
+
+ // Open button
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"auto" });
+
+ var openThemeWinBt = new qx.ui.form.Button("Open theming window", "icon/16/launch.png");
+ openThemeWinBt.addEventListener("execute", function(e) {
+ win.open();
+
+ // the following breaks in the current layouter
+ /*
+ win.setLeft(doc.getClientWidth() - win.getBoxWidth() - 5);
+ win.setTop(doc.getClientHeight() - win.getBoxHeight() - 5);
+ */
+
+ win.setLeft(doc.getClientWidth() - 500);
+ win.setTop(doc.getClientHeight() - 300);
+ });
+ main.add(openThemeWinBt);
+
+ return main;
+}
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/index.html
new file mode 100644
index 0000000000..299f5bdc8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/at-a-glance/index.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src="AtAGlance.js"></script>
+</head>
+<body>
+ <script type="text/javascript">
+ qx.dev.log.Logger.ROOT_LOGGER.setMinLevel(qx.dev.log.Logger.LEVEL_ERROR);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ new AtAGlance;
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_1.html
new file mode 100644
index 0000000000..4dff79cf3d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.basic.Atom is the parent class for buttons, menu entries, icons, checkboxes. While you can do,
+ you usually don't have to instantiate qx.ui.basic.Atom directly.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // test no1
+ var nl1 = new qx.ui.basic.Atom("Test #1", "icon/16/reload.png", 16, 16);
+ nl1.setTop(48);
+ nl1.setLeft(20);
+ nl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl1.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl1.setPadding(4);
+ d.add(nl1);
+
+ // test no2
+ var nl2 = new qx.ui.basic.Atom("Test #2");
+ nl2.setTop(48);
+ nl2.setLeft(120);
+ nl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl2.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl2.setPadding(4);
+ d.add(nl2);
+
+ // test no3
+ var nl3 = new qx.ui.basic.Atom(null, "icon/16/reload.png");
+ nl3.setTop(48);
+ nl3.setLeft(200);
+ nl3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl3.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl3.setPadding(4);
+ d.add(nl3);
+
+ // test no4
+ var nl4 = new qx.ui.basic.Atom("<span style='font-size:14px'>Some great HTML</span><br/>for <b>you</b>", "icon/32/reload.png");
+ nl4.setTop(48);
+ nl4.setLeft(250);
+ nl4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl4.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl4.setPadding(4);
+ d.add(nl4);
+
+ // test no5
+ var nl5 = new qx.ui.basic.Atom(qx.util.Textile.textilize("*File Information*:\nJPEG-Photo\nCreated: 01/03/05"), "icon/48/icons.png");
+ with(nl5)
+ {
+ setTop(200);
+ setLeft(20);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setPadding(3, 6);
+ };
+ d.add(nl5);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_2.html
new file mode 100644
index 0000000000..db698a7232
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_2.html
@@ -0,0 +1,172 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some more complex tests for qx.ui.basic.Atom.</p>
+ <p>You can change all the properties before "really creating" the object or any time after this was done.</p>
+ </div>
+
+ <div style="display:none" id="control">
+ <p>
+ Width:
+ <a href="javascript://" onclick="void(at1.setWidth(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setWidth('auto'))">auto</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(25))">25</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(50))">50</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(100))">100</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(200))">200</a>
+ </p>
+ <p>
+ Height:
+ <a href="javascript://" onclick="void(at1.setHeight(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setHeight('auto'))">auto</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(25))">25</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(50))">50</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(100))">100</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(200))">200</a>
+ </p>
+ <hr/>
+ <p>
+ Label Size:
+ <a href="javascript://" onclick="void(at1.setLabel(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('short'))">short</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('some cool label'))">medium</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('ultra long label description'))">long</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('<b>hello <i>world</i></b>'))">html</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('<p>Hello tester.</p><ul><li>cool</li><li><b>test</b></li><li>file</li></ul>'))">complex</a>
+ </p>
+ <p>
+ Icon Size:
+ <a href="javascript://" onclick="void(at1.setIcon(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setIcon('icon/16/date.png'))">16px</a> |
+ <a href="javascript://" onclick="void(at1.setIcon('icon/32/colors.png'))">32px</a> |
+ <a href="javascript://" onclick="void(at1.setIcon('icon/48/memory.png'))">48px</a>
+ </p>
+ <p>
+ Icon Position:
+ <a href="javascript://" onclick="void(at1.setIconPosition('top'))">top</a> |
+ <a href="javascript://" onclick="void(at1.setIconPosition('right'))">right</a> |
+ <a href="javascript://" onclick="void(at1.setIconPosition('bottom'))">bottom</a> |
+ <a href="javascript://" onclick="void(at1.setIconPosition('left'))">left</a>
+ </p>
+ <p>
+ Spacing:
+ <a href="javascript://" onclick="void(at1.setSpacing(0))">0</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(2))">2</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(4))">4</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(6))">6</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(8))">8</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(10))">10</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(25))">25</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(50))">50</a>
+ </p>
+ <hr/>
+ <p>
+ Show:
+ <a href="javascript://" onclick="void(at1.setShow('none'))">None</a> |
+ <a href="javascript://" onclick="void(at1.setShow('label'))">Label</a> |
+ <a href="javascript://" onclick="void(at1.setShow('icon'))">Icon</a> |
+ <a href="javascript://" onclick="void(at1.setShow('both'))">Both</a>
+ </p>
+ <hr/>
+ <p>
+ Horizontal Children Align:
+ <a href="javascript://" onclick="void(at1.setHorizontalChildrenAlign('left'))">left</a> |
+ <a href="javascript://" onclick="void(at1.setHorizontalChildrenAlign('center'))">center</a> |
+ <a href="javascript://" onclick="void(at1.setHorizontalChildrenAlign('right'))">right</a>
+ </p>
+ <p>
+ Vertical Children Align:
+ <a href="javascript://" onclick="void(at1.setVerticalChildrenAlign('top'))">top</a> |
+ <a href="javascript://" onclick="void(at1.setVerticalChildrenAlign('middle'))">middle</a> |
+ <a href="javascript://" onclick="void(at1.setVerticalChildrenAlign('bottom'))">bottom</a>
+ </p>
+ <hr/>
+ <p>
+ Padding:
+ <a href="javascript://" onclick="void(at1.setPadding(null))">None</a> |
+ <a href="javascript://" onclick="void(at1.setPadding(2, 4))">2, 4</a> |
+ <a href="javascript://" onclick="void(at1.setPadding(4, 8))">4, 8</a> |
+ <a href="javascript://" onclick="void(at1.setPadding(16))">16</a>
+ </p>
+ <p>
+ Border:
+ <a href="javascript://" onclick="void(at1.setBorder(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(1, 'solid', 'black')))">1</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(5, 'solid', 'black')))">5</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(10, 'solid', 'black')))">10</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(25, 'solid', 'black')))">25</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset))">outset</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(qx.renderer.border.BorderPresets.getInstance().inset))">inset</a>
+ </p>
+ <hr/>
+ <p>
+ Opacity:
+ <a href="javascript://" onclick="void(at1.setOpacity(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0))">0</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0.25))">0.25</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0.5))">0.5</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0.75))">0.75</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(1))">1</a>
+ </p>
+ <p>
+ Enabled:
+ <a href="javascript://" onclick="void(at1.setEnabled(false))">false</a> |
+ <a href="javascript://" onclick="void(at1.setEnabled(true))">true</a>
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ var at1;
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ at1 = new qx.ui.basic.Atom("My first qx.ui.basic.Atom", "icon/32/colors.png");
+
+ with(at1)
+ {
+ setTop(48);
+ setLeft(20);
+
+ setIconPosition("right");
+
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setBackgroundColor(new qx.renderer.color.Color("white"));
+ setPadding(2, 4);
+ };
+
+ var ct1 = new qx.ui.basic.Label(document.getElementById("control").innerHTML);
+
+ with(ct1)
+ {
+ setWidth(300);
+ setRight(335);
+
+ setHeight(null);
+ setTop(48);
+ setBottom(48);
+
+ setOverflow("auto");
+
+ setBackgroundColor(new qx.renderer.color.Color("white"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ setPadding(10);
+ };
+
+ d.add(at1, ct1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_3.html
new file mode 100644
index 0000000000..4a5db8e9bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Atom_3.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the new flash support for qx.ui.basic.Atom</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var a;
+
+ for (var i=1; i<11; i++)
+ {
+ var a = new qx.ui.basic.Atom("Flash Atom #" + i, "icon/16/reload.png", 16, 16, "./image/flash/color/file" + i + ".swf");
+
+ a.setTop(48 + ((i-1)*30));
+ a.setLeft(20);
+ a.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ a.setBackgroundColor(new qx.renderer.color.Color("white"));
+ a.setPadding(4);
+
+ d.add(a);
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_1.html
new file mode 100644
index 0000000000..19c7c6f118
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_1.html
@@ -0,0 +1,89 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.pageview.buttonview.ButtonView implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var bs = new qx.ui.pageview.buttonview.ButtonView;
+
+ bs.setLocation(20, 48);
+ bs.setRight(335);
+ bs.setBottom(48);
+
+ var bsb1 = new qx.ui.pageview.buttonview.Button("Display", "icon/32/display.png");
+ var bsb2 = new qx.ui.pageview.buttonview.Button("Penguin", "icon/32/penguin.png");
+ var bsb3 = new qx.ui.pageview.buttonview.Button("Colors", "icon/32/colors.png");
+ var bsb4 = new qx.ui.pageview.buttonview.Button("Icons", "icon/32/icons.png");
+ var bsb5 = new qx.ui.pageview.buttonview.Button("Paint", "icon/32/paint.png");
+ var bsb6 = new qx.ui.pageview.buttonview.Button("Applications", "icon/32/run.png");
+ var bsb7 = new qx.ui.pageview.buttonview.Button("System", "icon/32/control-center.png");
+
+ bsb1.setChecked(true);
+
+ bs.getBar().add(bsb1, bsb2, bsb3, bsb4, bsb5, bsb6, bsb7);
+
+ var p1 = new qx.ui.pageview.buttonview.Page(bsb1);
+ var p2 = new qx.ui.pageview.buttonview.Page(bsb2);
+ var p3 = new qx.ui.pageview.buttonview.Page(bsb3);
+ var p4 = new qx.ui.pageview.buttonview.Page(bsb4);
+ var p5 = new qx.ui.pageview.buttonview.Page(bsb5);
+ var p6 = new qx.ui.pageview.buttonview.Page(bsb6);
+ var p7 = new qx.ui.pageview.buttonview.Page(bsb7);
+
+ bs.getPane().add(p1, p2, p3, p4, p5, p6, p7);
+
+ var f1 = new qx.ui.form.TextField("Display Input");
+ var f2 = new qx.ui.form.TextField("Penguin Input");
+ var f3 = new qx.ui.form.TextField("Colorize Input");
+ var f4 = new qx.ui.form.TextField("Icons Input");
+ var f5 = new qx.ui.form.TextField("Paint Input");
+ var f6 = new qx.ui.form.TextField("Applications Input");
+ var f7 = new qx.ui.form.TextField("System Input");
+
+ p1.add(f1);
+ p2.add(f2);
+ p3.add(f3);
+ p4.add(f4);
+ p5.add(f5);
+ p6.add(f6);
+ p7.add(f7);
+
+ var r1 = new qx.ui.form.RadioButton("Top", "top", null, true);
+ var r2 = new qx.ui.form.RadioButton("Right", "right");
+ var r3 = new qx.ui.form.RadioButton("Bottom", "bottom");
+ var r4 = new qx.ui.form.RadioButton("Left", "left");
+
+ r1.setTop(50);
+ r2.setTop(70);
+ r3.setTop(90);
+ r4.setTop(110);
+
+ p1.add(r1, r2, r3, r4);
+
+ var rm = new qx.manager.selection.RadioManager(null, [r1, r2, r3, r4]);
+
+ rm.addEventListener("changeSelected", function(e) {
+ bs.setBarPosition(e.getData().getValue());
+ });
+
+ d.add(bs);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_2.html
new file mode 100644
index 0000000000..722827a894
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ButtonView_2.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Yet Another qx.ui.pageview.buttonview.ButtonView Example</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var bs = new qx.ui.pageview.buttonview.ButtonView;
+ bs.set({ left: 20, top: 48, right: 335, bottom: 48 });
+ bs.setBarPosition("left");
+
+ var bsb1 = new qx.ui.pageview.buttonview.Button("Display", "icon/16/display.png");
+ var bsb2 = new qx.ui.pageview.buttonview.Button("Organizer", "icon/16/organizer.png");
+ var bsb3 = new qx.ui.pageview.buttonview.Button("Colorize", "icon/16/colors.png");
+ var bsb4 = new qx.ui.pageview.buttonview.Button("Icons", "icon/16/icons.png");
+ var bsb5 = new qx.ui.pageview.buttonview.Button("Paint", "icon/16/paint.png");
+ var bsb6 = new qx.ui.pageview.buttonview.Button("Applications", "icon/16/run.png");
+ var bsb7 = new qx.ui.pageview.buttonview.Button("System", "icon/16/control-center.png");
+
+ bsb1.setChecked(true);
+
+ bsb1.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb2.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb3.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb4.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb5.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb6.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb7.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+
+ bs.getBar().add(bsb1, bsb2, bsb3, bsb4, bsb5, bsb6, bsb7);
+
+ bs.getBar().setHorizontalChildrenAlign("center");
+ bs.getBar().setVerticalChildrenAlign("bottom");
+
+ var p1 = new qx.ui.pageview.buttonview.Page(bsb1);
+ var p2 = new qx.ui.pageview.buttonview.Page(bsb2);
+ var p3 = new qx.ui.pageview.buttonview.Page(bsb3);
+ var p4 = new qx.ui.pageview.buttonview.Page(bsb4);
+ var p5 = new qx.ui.pageview.buttonview.Page(bsb5);
+ var p6 = new qx.ui.pageview.buttonview.Page(bsb6);
+ var p7 = new qx.ui.pageview.buttonview.Page(bsb7);
+
+ bs.getPane().add(p1, p2, p3, p4, p5, p6, p7);
+
+ var f1 = new qx.ui.form.TextField("Display Input");
+ var f2 = new qx.ui.form.TextField("Sunshine Input");
+ var f3 = new qx.ui.form.TextField("Paint Input");
+ var f4 = new qx.ui.form.TextField("Icons Input");
+ var f5 = new qx.ui.form.TextField("Images Input");
+ var f6 = new qx.ui.form.TextField("Applications Input");
+ var f7 = new qx.ui.form.TextField("System Input");
+
+ p1.add(f1);
+ p2.add(f2);
+ p3.add(f3);
+ p4.add(f4);
+ p5.add(f5);
+ p6.add(f6);
+ p7.add(f7);
+
+ var r1 = new qx.ui.form.RadioButton("Top", "top");
+ var r2 = new qx.ui.form.RadioButton("Right", "right");
+ var r3 = new qx.ui.form.RadioButton("Bottom", "bottom");
+ var r4 = new qx.ui.form.RadioButton("Left", "left", null, true);
+
+ r1.setTop(50);
+ r2.setTop(70);
+ r3.setTop(90);
+ r4.setTop(110);
+
+ p1.add(r1, r2, r3, r4);
+
+ var rm = new qx.manager.selection.RadioManager(null, [r1, r2, r3, r4]);
+
+ rm.addEventListener("changeSelected", function(e) {
+ bs.setBarPosition(e.getData().getValue());
+ });
+
+ d.add(bs);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Button_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Button_1.html
new file mode 100644
index 0000000000..7f26c3325c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Button_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the qx.ui.form.Button constructor. qx.ui.form.Button is based on qx.ui.basic.Atom.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var btn1 = new qx.ui.form.Button("Button No #1");
+ with(btn1)
+ {
+ setTop(48);
+ setLeft(20);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn1);
+
+
+
+ var btn2 = new qx.ui.form.Button("Button No #2");
+ with(btn2)
+ {
+ setTop(48);
+ setLeft(120);
+ addEventListener("execute", buttonExecute);
+ setEnabled(false);
+ };
+
+ d.add(btn2);
+
+
+
+ var btn3 = new qx.ui.form.Button("Button No #3");
+ with(btn3)
+ {
+ setTop(48);
+ setLeft(220);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn3);
+
+
+ var btn4 = new qx.ui.form.Button("Button No #4", "icon/16/forward.png");
+ with(btn4)
+ {
+ setTop(48);
+ setLeft(320);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/CheckBox_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/CheckBox_1.html
new file mode 100644
index 0000000000..9073dc7098
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/CheckBox_1.html
@@ -0,0 +1,104 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.ui.form.CheckBox. qx.ui.form.CheckBox extends qx.ui.basic.Atom and so it inherits all the options and properties defined there.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.CheckBox("Send Data to Server", "c1checked", "c1");
+ with(c1)
+ {
+ setTop(48);
+ setLeft(20);
+ };
+ d.add(c1);
+
+ var c2 = new qx.ui.form.CheckBox("Delete all Data on Server", "c2checked", "c2");
+ with(c2)
+ {
+ setTop(78);
+ setLeft(20);
+ };
+ d.add(c2);
+ c2.setChecked(true);
+
+
+ var c3 = new qx.ui.form.CheckBox("Top Checkbox", "c3checked", "c3");
+ with(c3)
+ {
+ setTop(120);
+ setLeft(20);
+ setIconPosition("top");
+ };
+ d.add(c3);
+
+ var c4 = new qx.ui.form.CheckBox("Bottom Checkbox", "c4checked", "c4");
+ with(c4)
+ {
+ setTop(120);
+ setLeft(140);
+ setIconPosition("bottom");
+ };
+ d.add(c4);
+
+
+ var c5 = new qx.ui.form.CheckBox("Left Checkbox", "c5checked", "c5");
+ with(c5)
+ {
+ setTop(180);
+ setLeft(20);
+ setIconPosition("left");
+ };
+ d.add(c5);
+
+ var c6 = new qx.ui.form.CheckBox("Right Checkbox", "c6checked", "c6");
+ with(c6)
+ {
+ setTop(180);
+ setLeft(140);
+ setIconPosition("right");
+ };
+ d.add(c6);
+
+ var c7 = new qx.ui.form.CheckBox(null, "c7checked", "c7");
+ with(c7)
+ {
+ setTop(250);
+ setLeft(20);
+ };
+ d.add(c7);
+
+ var c8 = new qx.ui.form.CheckBox(null, "c7checked", "c7");
+ with(c8)
+ {
+ setTop(300);
+ setLeft(20);
+ setLabel("Label pure");
+ setShow("label");
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setBackgroundColor(new qx.renderer.color.Color("red"));
+ };
+ d.add(c8);
+
+ c8.addEventListener("changeChecked", function(e) {
+ this.setBackgroundColor(new qx.renderer.color.Color(this.getChecked() ? "green" : "red"));
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorPopup_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorPopup_1.html
new file mode 100644
index 0000000000..269d863fb1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorPopup_1.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.component.ColorPopup.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var mybtn = new qx.ui.form.Button("Open Popup");
+ mybtn.setLocation(20, 48);
+ mybtn.addEventListener("execute", function() {
+ mypop.setTop(qx.dom.Location.getPageBoxBottom(this.getElement()));
+ mypop.setLeft(qx.dom.Location.getPageBoxLeft(this.getElement()));
+ mypop.show();
+ });
+
+ var myview = new qx.ui.basic.Label("Selected Color");
+ myview.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ myview.setLocation(100, 48);
+ myview.setPadding(3, 6);
+ myview.setBackgroundImage("core/dotted_white.gif");
+ myview.addToDocument();
+
+ var mytables =
+ {
+ core : {
+ label : "Basic Colors",
+ values : [ "#000", "#333", "#666", "#999", "#CCC", "#FFF", "red", "green", "blue", "yellow", "teal", "maroon" ]
+ },
+
+ template : {
+ label : "Template Colors",
+ values : [ "#B07B30", "#B07BC9", "#E3AEC9", "#7A2A53" ]
+ },
+
+ recent : {
+ label : "Recent Colors",
+
+ // In this case we need named colors or rgb-value-strings, hex is not allowed currently
+ values : [ "rgb(122,195,134)", "orange" ]
+ }
+ }
+
+ var mypop = new qx.ui.component.ColorPopup(mytables);
+ mypop.setLocation(100, 100);
+ mypop.setValue(new qx.renderer.color.Color("#23F3C1"));
+
+ mybtn.addToDocument();
+ mypop.addToDocument();
+
+ mypop.addEventListener("changeValue", function(e) {
+ this.debug("Value Listener: " + e.getData());
+ myview.setBackgroundColor(e.getData());
+ myview.setBackgroundImage(e.getData() ? null : "core/dotted_white.gif");
+ });
+
+ mypop.addEventListener("changeRed", function(e) {
+ this.debug("Red Listener: " + e.getData());
+ });
+
+ mypop.addEventListener("changeGreen", function(e) {
+ this.debug("Green Listener: " + e.getData());
+ });
+
+ mypop.addEventListener("changeBlue", function(e) {
+ this.debug("Blue Listener: " + e.getData());
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_1.html
new file mode 100644
index 0000000000..a54005fbd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_1.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.component.ColorSelector.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var mycolor = new qx.ui.component.ColorSelector;
+
+ mycolor.setLocation(50, 50);
+
+ qx.ui.core.ClientDocument.getInstance().add(mycolor);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_2.html
new file mode 100644
index 0000000000..1fbf822822
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ColorSelector_2.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.component.ColorSelector.</p>
+ <p>Adding a default/previous/old color value to compare it with the new selection.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var mycolor = new qx.ui.component.ColorSelector(130, 180, 100);
+
+ mycolor.setLocation(50, 50);
+
+ qx.ui.core.ClientDocument.getInstance().add(mycolor);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBoxEx_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBoxEx_1.html
new file mode 100644
index 0000000000..ea628b89be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBoxEx_1.html
@@ -0,0 +1,230 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript">
+
+function getTestData() {
+ var testData = [
+ [ '1', 'One' ],
+ [ '2', 'Two' ],
+ [ '3', 'Three' ],
+ [ '4', 'Four' ],
+ [ '5', 'Five' ],
+ [ '6', 'Six' ],
+ [ '7', 'Seven' ],
+ [ '8', 'Eight' ],
+ [ '9', 'Nine' ],
+ [ '10', 'Ten' ],
+ [ '11', 'Eleven' ],
+ [ '12', 'Twelve' ],
+ [ '13', 'Thirteen' ],
+ [ '14', 'Fourteen' ],
+ [ '15', 'Fiveteen' ],
+ [ '16', 'Sixteen' ],
+ [ '17', 'Seventeen' ],
+ // Test of a long string
+ [ '1921', 'One thousand nine hundred twenty one' ]
+ ];
+ for (var i = 0; i < testData.length; i++) {
+ testData[i].push('widget/arrows/'+(i % 2 ? 'up':'down')+'_small.gif');
+ testData[i].push('Extra data '+i);
+ }
+ return testData;
+}
+
+qx.OO.defineClass('Box', qx.ui.layout.BoxLayout, function() {
+ qx.ui.layout.BoxLayout.apply(this, arguments);
+ this.auto();
+});
+
+qx.OO.defineClass('GroupBox', qx.ui.groupbox.GroupBox, function() {
+ qx.ui.groupbox.GroupBox.apply(this, arguments);
+ this.auto();
+});
+
+qx.core.Init.getInstance().defineMain(function() {
+ // Shortcuts
+ var form = qx.ui.form;
+ Label = qx.ui.basic.Label;
+ var testData = getTestData();
+
+ //###1st row: combo
+
+ combo = new form.ComboBoxEx;
+ var butSize = new form.Button('Size text field to content');
+ butSize.addEventListener('execute', function() {
+ combo.sizeTextFieldToContent();
+ });
+
+ var boxCombo2 = new Box;
+ with (boxCombo2) {
+ setSpacing(10);
+ add(combo, butSize);
+ }
+ var boxCombo = new GroupBox('This is the ComboBoxEx under test');
+ boxCombo.add(boxCombo2);
+
+ //###2nd row: Test of simple properties
+ var cEd = new form.CheckBox('Editable');
+ cEd.setChecked(combo.getEditable());
+ cEd.addEventListener('changeChecked', function() {
+ combo.setEditable(cEd.isChecked());
+ });
+
+ var cEnsure = new form.CheckBox('Ensure something selected');
+ cEnsure.setChecked(combo.getEnsureSomethingSelected());
+ cEnsure.addEventListener('changeChecked', function() {
+ combo.setEnsureSomethingSelected(cEnsure.isChecked());
+ });
+
+ var cAllowSearch = new form.CheckBox('Allow searching');
+ cAllowSearch.setChecked(combo.getAllowSearch());
+ cAllowSearch.addEventListener('changeChecked', function() {
+ combo.setAllowSearch(cAllowSearch.isChecked());
+ });
+
+ var cIdCol = new form.CheckBox('ID column visible');
+ cIdCol.setChecked(combo.isIdColumnVisible());
+ cIdCol.addEventListener('changeChecked', function() {
+ combo.setIdColumnVisible(cIdCol.isChecked());
+ });
+
+ var fieldItems = new form.Spinner(0, 0, testData.length);
+ fieldItems._manager.addEventListener('changeValue', function() {
+ var sel = [], count = fieldItems.getValue();
+ for (var i = 0; i < count; i++) {
+ sel.push(testData[i]);
+ }
+ combo.setSelection(sel);
+ });
+ fieldItems.setValue(15);
+
+ var boxProp2 = new Box;
+ with (boxProp2) {
+ setSpacing(10);
+ add(cEd, cEnsure, cAllowSearch, cIdCol, new Label('Number of items in list'), fieldItems);
+ }
+ var boxProp = new GroupBox('Test of simple properties');
+ boxProp.add(boxProp2);
+
+ //###Test of headers
+ var allHeaders = [ 'ID', 'Description', 'Img', 'Extra info' ];
+ var rb1 = new form.RadioButton('1', '1');
+ var rb2 = new form.RadioButton('2', '2');
+ rb2.setChecked(true);
+ var rb3 = new form.RadioButton('3', '3');
+ var rb4 = new form.RadioButton('4', '4');
+
+ var fieldHeaders = new qx.manager.selection.RadioManager('headers', [ rb1, rb2, rb3, rb4 ]);
+ fieldHeaders.addEventListener("changeSelected", function(e) {
+ var headers = [], count = Number(e.getData().getValue());
+ for (var i = 0; i < count; i++) {
+ headers.push(allHeaders[i]);
+ }
+ combo.setColumnHeaders(headers);
+ });
+
+ var butChangeHeaders = new form.Button('Add * to headers');
+ // This tests changing the headers, but not the number of columns
+ butChangeHeaders.addEventListener('execute', function() {
+ var headers = combo.getColumnHeaders();
+ for (var i = 0; i < headers.length; i++) {
+ headers[i] += '*';
+ }
+ combo.setColumnHeaders(headers);
+ });
+
+ var boxHeaders2 = new Box;
+ with (boxHeaders2) {
+ setSpacing(10);
+ add(new Label('# of headers'), rb1, rb2, rb3, rb4, butChangeHeaders);
+ }
+ var boxHeaders = new GroupBox('Test headers');
+ boxHeaders.add(boxHeaders2);
+
+ var fieldMaxRows = new form.Spinner(2, combo.getMaxVisibleRows(), 20);
+ fieldMaxRows._manager.addEventListener('changeValue', function() {
+ combo.setMaxVisibleRows(fieldMaxRows.getValue());
+ });
+ var boxMaxRows = new GroupBox('Max. number of visible rows');
+ boxMaxRows.add(fieldMaxRows);
+
+ var boxRow3 = new Box;
+ boxRow3.add(boxHeaders, boxMaxRows);
+
+ //###Test of showOnTextField
+ var rbDesc = new form.RadioButton('Description', 'description');
+ rbDesc.setChecked(true);
+ var rbIdAndDesc = new form.RadioButton('ID and description', 'idAndDescription');
+ var fieldShowOn = new qx.manager.selection.RadioManager("showOnTextField", [ rbDesc, rbIdAndDesc ]);
+ fieldShowOn.addEventListener("changeSelected", function(e) {
+ combo.setShowOnTextField(e.getData().getValue());
+ });
+
+ var fieldSeparator = new form.TextField;
+ fieldSeparator.setValue(combo.getIdDescriptionSeparator());
+ fieldSeparator.setWidth(50);
+ fieldSeparator.addEventListener('changeValue', function() {
+ combo.setIdDescriptionSeparator(fieldSeparator.getValue());
+ });
+ var boxShowOn2 = new Box;
+ with (boxShowOn2) {
+ setSpacing(10);
+ add(new Label('Show on text field:'), rbDesc, rbIdAndDesc, new Label('Separator between ID and description:'), fieldSeparator);
+ }
+ var boxShowOn = new GroupBox('Test showOnTextField property');
+ boxShowOn.add(boxShowOn2);
+
+ //###Test of get/setValue
+ var fieldValue = new form.TextField;
+ var butSetValue = new form.Button('Set');
+ butSetValue.addEventListener('execute', function() {
+ combo.setValue(fieldValue.getValue());
+ });
+ var butGetValue = new form.Button('Get');
+ butGetValue.addEventListener('execute', function() {
+ fieldValue.setValue(combo.getValue());
+ });
+ var boxVal2 = new Box;
+ with (boxVal2) {
+ setSpacing(10);
+ add(fieldValue, butSetValue, butGetValue);
+ }
+ var boxVal = new GroupBox('Test value property');
+ boxVal.add(boxVal2);
+
+ //###Main box
+ var vbox = new Box('vertical');
+ with (vbox) {
+ setSpacing(10);
+ setTop(50);
+ setLeft(30);
+ add(boxCombo, boxProp, boxRow3, boxShowOn, boxVal);
+ addToDocument();
+ }
+ combo.focus();
+});
+ </script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+ <script type="text/javascript">
+if (console.debug) {
+ with (qx.dev.log.Logger.ROOT_LOGGER) {
+ removeAllAppenders();
+ addAppender(new qx.dev.log.FireBugAppender);
+ setMinLevel(qx.dev.log.Logger.LEVEL_WARN);
+ }
+}
+ </script>
+ <div id="demoDescription">
+ <p>ComboBoxEx is an enhanced version of ComboBox</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBox_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBox_1.html
new file mode 100644
index 0000000000..682b17229e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ComboBox_1.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing ComboBox implementation.</p>
+ <p>The elements of the popup will be created on the first open of the qx.ui.form.ComboBox.</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.set({ top: 48, left: 20 });
+
+
+
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+
+
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_1.html
new file mode 100644
index 0000000000..9cf2b0ee36
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_1.html
@@ -0,0 +1,141 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>An example showing global shortcut commands in action. The commands are linked with menu-items, but
+ could also be executed with the corresponding shortcut.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ /* comamnds */
+ var undo_cmd = new qx.client.Command("Ctrl+Z");
+ undo_cmd.addEventListener("execute", function(){ this.debug("undo Command executed"); }, this);
+
+ var redo_cmd = new qx.client.Command("Ctrl+Y");
+ redo_cmd.addEventListener("execute", function(){ this.debug("redo Command executed"); }, this);
+
+ var cut_cmd = new qx.client.Command("Ctrl+X");
+ cut_cmd.addEventListener("execute", function(){ this.debug("cut Command executed"); }, this);
+
+ var copy_cmd = new qx.client.Command("Ctrl+C");
+ copy_cmd.addEventListener("execute", function(){ this.debug("copy Command executed"); }, this);
+
+ var paste_cmd = new qx.client.Command("Ctrl+V");
+ paste_cmd.addEventListener("execute", function(){ this.debug("paste Command executed"); }, this);
+
+ var delete_cmd = new qx.client.Command("Del");
+ delete_cmd.addEventListener("execute", function(){ this.debug("delete Command executed"); }, this);
+
+ var select_all_cmd = new qx.client.Command("Ctrl+A");
+ select_all_cmd.addEventListener("execute", function(){ this.debug("select all Command executed"); }, this);
+
+ var search_cmd = new qx.client.Command("Ctrl+F");
+ search_cmd.addEventListener("execute", function(){ this.debug("search Command executed"); }, this);
+
+ var search_again_cmd = new qx.client.Command("F3");
+ search_again_cmd.addEventListener("execute", function(){ this.debug("search again Command executed"); }, this);
+
+ /* building the menu */
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists");
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting");
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font");
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, undo_cmd);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, redo_cmd);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", cut_cmd);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", copy_cmd);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", paste_cmd);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", delete_cmd);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, select_all_cmd);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, search_cmd);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, search_again_cmd);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.dom.Location.getPageBoxLeft(el));
+ m1.setTop(qx.dom.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_2.html
new file mode 100644
index 0000000000..46b490e9eb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Command_2.html
@@ -0,0 +1,186 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>An example showing global shortcut commands in action. The commands are linked with menu-items, but
+ could also be executed with the corresponding shortcut.</p>
+ <p>An objectmanager is used to disable/enable a specific command (del-Key) to make available for text-editing
+ in the textfield of the window. When the window is closed the command gets re-enabled.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ /* comamnds */
+ var undo_cmd = new qx.client.Command("Ctrl+Z");
+ undo_cmd.addEventListener("execute", function(){ this.debug("undo Command executed"); }, this);
+
+ var redo_cmd = new qx.client.Command("Ctrl+Y");
+ redo_cmd.addEventListener("execute", function(){ this.debug("redo Command executed"); }, this);
+
+ var cut_cmd = new qx.client.Command("Ctrl+X");
+ cut_cmd.addEventListener("execute", function(){ this.debug("cut Command executed"); }, this);
+
+ var copy_cmd = new qx.client.Command("Ctrl+C");
+ copy_cmd.addEventListener("execute", function(){ this.debug("copy Command executed"); }, this);
+
+ var paste_cmd = new qx.client.Command("Ctrl+V");
+ paste_cmd.addEventListener("execute", function(){ this.debug("paste Command executed"); }, this);
+
+ var delete_cmd = new qx.client.Command("Del");
+ delete_cmd.addEventListener("execute", function(){ this.debug("delete Command executed"); }, this);
+
+ var select_all_cmd = new qx.client.Command("Ctrl+A");
+ select_all_cmd.addEventListener("execute", function(){ this.debug("select all Command executed"); }, this);
+
+ var search_cmd = new qx.client.Command("Ctrl+F");
+ search_cmd.addEventListener("execute", function(){ this.debug("search Command executed"); }, this);
+
+ var search_again_cmd = new qx.client.Command("F3");
+ search_again_cmd.addEventListener("execute", function(){ this.debug("search again Command executed"); }, this);
+
+
+ /* objectmanager for all commands which should be disabled when opening the window */
+ var cmd_manager = new qx.manager.object.ObjectManager;
+ cmd_manager.add(delete_cmd);
+
+
+ /* building the menu */
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists");
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting");
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font");
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, undo_cmd);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, redo_cmd);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", cut_cmd);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", copy_cmd);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", paste_cmd);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", delete_cmd);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, select_all_cmd);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, search_cmd);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, search_again_cmd);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+ /* button to open menu */
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.dom.Location.getPageBoxLeft(el));
+ m1.setTop(qx.dom.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ /* window */
+ var window1 = new qx.ui.window.Window("Test");
+ window1.set({ top: 100, left: 100, width: 300, height: 200, allowMaximize: false, allowMinimize: false });
+
+ window1.addEventListener("beforeAppear", function(e){
+ textField.setValue("");
+ });
+
+ window1.addEventListener("beforeDisappear", function(e){
+ cmd_manager.enableAll();
+ });
+
+ /* label */
+ var label1 = new qx.ui.basic.Label("Please enter your Name");
+ label1.setTop(20);
+ label1.setLeft(8);
+
+ /* textfield */
+ var textField = new qx.ui.form.TextField;
+ textField.setTop(20);
+ textField.setLeft(140);
+
+ window1.add(label1, textField);
+
+
+ /* button to open window */
+ var w2 = new qx.ui.form.Button("Open Window");
+ w2.setTop(48);
+ w2.setLeft(100);
+
+ w2.addEventListener("execute", function(e){
+ cmd_manager.disableAll();
+ window1.open();
+ });
+
+
+ d.add(w1, window1, w2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/DateChooser_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/DateChooser_1.html
new file mode 100644
index 0000000000..582ca8b386
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/DateChooser_1.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>The DateChooser shows calendar and allows choosing a date.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var chooser = new qx.ui.component.DateChooser;
+ chooser.setLocation(10, 50);
+ chooser.setWidth("auto");
+ chooser.setHeight("auto");
+ d.add(chooser);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Drag_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Drag_1.html
new file mode 100644
index 0000000000..3347f13020
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Drag_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Show one way to drag a widget around the screen.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var a1 = new qx.ui.basic.Atom("Drag Me");
+ a1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove });
+ a1.setPadding(10);
+ a1.setLocation(20, 48);
+ d.add(a1);
+
+
+ a1.addEventListener("mousedown", handleMouseDown);
+ a1.addEventListener("mousemove", handleMouseMove);
+ a1.addEventListener("mouseup", handleMouseUp);
+
+ function handleMouseDown(e)
+ {
+ this.setCapture(true);
+ a1._offsetX = e.getPageX() - a1.getLeft();
+ a1._offsetY = e.getPageY() - a1.getTop();
+ }
+
+ function handleMouseMove(e)
+ {
+ if (this.getCapture())
+ {
+ a1.setLeft(e.getPageX() - a1._offsetX);
+ a1.setTop(e.getPageY() - a1._offsetY);
+ }
+ }
+
+ function handleMouseUp(e)
+ {
+ this.setCapture(false);
+ }
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fields_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fields_1.html
new file mode 100644
index 0000000000..96e86a4c19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fields_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for some of the most used properties of qx.ui.core.Widget (coordinates, dimensions, backgroundColor, opacity, ...).</p>
+ <p>Also here are the first test of some widgets which extend qx.ui.core.Widget: qx.ui.form.TextField and qx.ui.form.PasswordField. These extended
+ widgets also interacts like the basic QxWidgets with the qx.event.handler.FocusHandler.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function textChange(e) {
+ this.debug("Text changed: " + e.getData());
+ }
+
+ var t1 = new qx.ui.form.TextField;
+ t1.setValue("textfield");
+ t1.setTop(48);
+ t1.setLeft(20);
+
+ t1.addEventListener("changeValue", textChange);
+ t1.addEventListener("input", function(e) {
+ this.debug("Input: " + e.getData());
+ });
+
+ d.add(t1);
+
+
+
+
+ var t2 = new qx.ui.form.PasswordField;
+ t2.setValue("passwordfield");
+ t2.setTop(80);
+ t2.setLeft(20);
+
+ t2.addEventListener("changeValue", textChange);
+
+ d.add(t2);
+
+
+ var t3 = new qx.ui.form.TextArea;
+ t3.setValue("textarea");
+ t3.setTop(110);
+ t3.setLeft(20);
+ t3.setWidth(300);
+ t3.setHeight(60);
+
+ t3.addEventListener("changeValue", textChange);
+
+ d.add(t3);
+
+
+ var t4 = new qx.ui.form.TextField;
+ t4.setValue("textfield");
+ t4.setTop(200);
+ t4.setLeft(20);
+ t4.setWidth(200);
+ t4.setMaxLength(100);
+ t4.setReadOnly(true);
+
+ t4.addEventListener("changeValue", textChange);
+
+ d.add(t4);
+
+
+ var t5 = new qx.ui.form.TextField;
+ t5.setValue("You are foo!");
+ t5.setTop(240);
+ t5.setLeft(20);
+
+ t5.addEventListener("changeValue", textChange);
+
+ d.add(t5);
+
+
+
+ var t6 = new qx.ui.form.TextField;
+ t6.setTop(270);
+ t6.setLeft(20);
+
+ t6.addEventListener("changeText", textChange);
+ t6.addEventListener("input", function(e) {
+ this.debug("Input: " + e.getData());
+ });
+
+ t6.addEventListener("keydown", function(e) {
+ this.debug("Keypress: " + e.getKeyIdentifier());
+ });
+
+ d.add(t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Flash_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Flash_1.html
new file mode 100644
index 0000000000..3e2f0ceca8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Flash_1.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qx.ui.embed.Flash.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // Try no version required
+ var fo1 = new qx.ui.embed.Flash("./image/flash/fo_tester.swf");
+
+ // Try version 7 required
+ // var fo1 = new qx.ui.embed.Flash("image/flash/fo_tester.swf", "7");
+
+ // Try version 9 required
+ // var fo1 = new qx.ui.embed.Flash("image/flash/fo_tester.swf", "9");
+
+ // Error handling methods:
+ // #1: Enable Express Install: Available in Flash Players >= 6.0.65
+ // fo1.setEnableExpressInstall(true);
+ // #2: Enable Redirect URL: Jump to an installer page
+ // fo1.setRedirectUrl("http://www.google.de");
+
+ fo1.setVariable("flashVarText", "this is passed in via FlashVars");
+ fo1.setScale("noscale");
+
+ fo1.setLeft(20);
+ fo1.setRight(335);
+ fo1.setTop(48);
+ fo1.setBottom(48);
+
+ fo1.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ fo1.setBackgroundColor("#FF6600");
+
+ d.add(fo1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1.html
new file mode 100644
index 0000000000..81d745cded
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>
+ Simple test of a finite state machine. This is a sufficiently simple
+ application that using a finite state machine really doesn't make sense,
+ but it is illustrative of how to use it. This FSM has two states.
+ </p>
+ </div>
+
+ <script type="text/javascript" src="Fsm_1/main.js"></script>
+ <script type="text/javascript" src="Fsm_1/fsm.js"></script>
+ <script type="text/javascript" src="Fsm_1/gui.js"></script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/fsm.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/fsm.js
new file mode 100644
index 0000000000..50cdc25ccb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/fsm.js
@@ -0,0 +1,297 @@
+/*
+ * Initialize the finite state machine.
+ *
+ * This finite state machine has two states: Idle and AwaitRpcResult.
+ *
+ * In the Idle state, the Send button is enabled, the Abort button is
+ * disabled, and the three color bars are blue. In the AwaitRpcResult state,
+ * the Send button is disabled, the Abort button is enabled, and three color
+ * bars are red. All of these changes occur via automatic, table-driven
+ * function calls in autoActionsXXX() objects, not via explicit code. This
+ * demonstrates how groups of objects can all be manipulated together without
+ * having to write lots of code to do so. Just as these color blocks change
+ * color, numerous widgets could be disabled/hidden/etc., without writing code
+ * to futz with all of them.
+ */
+function initFsm()
+{
+ // Create a new finite state machine
+ var fsm = new qx.util.fsm.FiniteStateMachine("Fsm_1");
+
+ // For this simple example application, show all debug messages.
+ qx.Settings.setCustomOfClass(
+ "qx.util.fsm.FiniteStateMachine",
+ "debugFlags",
+ (qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.TRANSITIONS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.FUNCTION_DETAIL |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.OBJECT_NOT_FOUND));
+
+ /*
+ * State: Idle
+ *
+ * Actions upon entry:
+ * button_send.setEnabled(true);
+ * button_abort.setEnabled(false);
+ * change background of objects in group "group_color_change" to blue
+ *
+ * Transition on:
+ * "execute" on button_send
+ */
+ var state = new qx.util.fsm.State(
+ "State_Idle",
+ {
+ "autoActionsBeforeOnentry" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // We want to enable the 'send' button
+ "parameters" : [ true ],
+
+ // Call this.getObject("button_send").setEnabled(true)
+ "objects" : [ "button_send" ]
+ },
+
+ {
+ // We want to disable the 'abort' button
+ "parameters" : [ false ],
+
+ // Call this.getObject("button_abort").setEnabled(false)
+ "objects" : [ "button_abort" ]
+ }
+ ],
+
+ // The name of a function.
+ "setBackgroundColor" :
+ [
+ {
+ // We want to change the atoms' background color to blue
+ "parameters" :
+ [
+ // We want the color oject created when needed, not "now"
+ // Providing a function as a parameter allows the value to be
+ // determined later.
+ function (fsm) { return new qx.renderer.color.Color("blue"); }
+ ],
+
+ // Call this.getObject(<object>).seBackgroundcolor("blue") on
+ // state entry, for each <object> in the group called
+ // "group_color_change".
+ "groups" : [ "group_color_change" ]
+ }
+ ]
+ },
+
+ "events" :
+ {
+ // If the send button is pressed, go to new state state where we
+ // will await the RPC result
+ "execute" :
+ {
+ "button_send" :
+ "Transition_Idle_to_AwaitRpcResult_via_button_send"
+ }
+ }
+ });
+ fsm.addState(state);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "execute" on button_send
+ *
+ * Action:
+ * Issue RPC request with coalesced failure events
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_button_send",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var rpc = fsm.getObject("rpc");
+
+ rpc.setUrl(fsm.getObject("text_url").getValue());
+ rpc.setServiceName(fsm.getObject("text_service").getValue());
+
+ var request =
+ rpc.callAsyncListeners(true, // coalesce failure events
+ fsm.getObject("text_method").getValue(),
+ fsm.getObject("text_message").getValue());
+ fsm.addObject("request", request);
+ }
+ });
+ state.addTransition(trans);
+
+
+ /*
+ * State: AwaitRpcResult
+ *
+ * Actions upon entry:
+ * button_send.setEnabled(false);
+ * button_abort.setEnabled(true);
+ * change background of objects in group "group_color_change" to red
+ *
+ * Transition on:
+ * "completed" (on RPC)
+ * "failed" (on RPC)
+ * "execute on button_abort
+ */
+ var state = new qx.util.fsm.State(
+ "State_AwaitRpcResult",
+ {
+ "autoActionsBeforeOnentry" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // We want to disable the 'send' button
+ "parameters" : [ false ],
+
+ // Call this.getObject("send").setEnabled(false)
+ "objects" : [ "button_send" ]
+ },
+
+ {
+ // We want to enable the 'abort' button
+ "parameters" : [ true ],
+
+ // Call this.getObject("abort").setEnabled(true)
+ "objects" : [ "button_abort" ]
+ }
+ ],
+
+ // The name of a function.
+ "setBackgroundColor" :
+ [
+ {
+ // We want to change the atoms' background color to red
+ "parameters" :
+ [
+ // We want the color oject created when needed, not "now"
+ // Providing a function as a parameter allows the value to be
+ // determined later.
+ function (fsm) { return new qx.renderer.color.Color("red"); }
+ ],
+
+ // Call this.getObject(<object>).seBackgroundcolor("red"), for
+ // each <object> in the group called "group_color_change".
+ "groups" : [ "group_color_change" ]
+ }
+ ]
+ },
+
+ "events" :
+ {
+ "execute" :
+ {
+ "button_abort" :
+ "Transition_AwaitRpcResult_to_AwaitRpcResult_via_button_abort"
+ },
+
+ "completed" :
+ "Transition_AwaitRpcResult_to_Idle_via_complete",
+
+ "failed" :
+ "Transition_AwaitRpcResult_to_Idle_via_failed"
+ },
+
+ "onentry" :
+ function(fsm, state)
+ {
+ var message = fsm.getObject("text_result");
+ message.setValue("");
+ }
+
+ });
+ fsm.addState(state);
+
+ /*
+ * Transition: AwaitRpcResult to AwaitRpcResult
+ *
+ * Cause: "execute" on button_abort
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_AwaitRpcResult_via_button_abort",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Get the request object
+ var request = fsm.getObject("request");
+
+ // Issue an abort for the pending request
+ request.abort();
+
+ var message = fsm.getObject("text_result");
+ message.setValue("Abort requested...");
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: AwaitRpcResult to Idle
+ *
+ * Cause: "complete" (on RPC)
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_Idle_via_complete",
+ {
+ "nextState" :
+ "State_Idle",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var message = fsm.getObject("text_result");
+ message.setValue("Got result: " + event.getData());
+
+ // The request has completed, so remove the object reference
+ fsm.removeObject("request");
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: AwaitRpcResult to Idle
+ *
+ * Cause: "failed" (on RPC)
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_Idle_via_failed",
+ {
+ "nextState" :
+ "State_Idle",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var message = fsm.getObject("text_result");
+ message.setValue("Got failure: " + event.getData());
+
+ // The request has completed, so remove the object reference
+ fsm.removeObject("request");
+ }
+ });
+ state.addTransition(trans);
+
+ // Allocate an RPC object
+ o = new qx.io.remote.Rpc();
+ o.setTimeout(10000);
+ o.addEventListener("completed", fsm.eventListener, fsm);
+ o.addEventListener("failed", fsm.eventListener, fsm);
+ o.addEventListener("timeout", fsm.eventListener, fsm);
+ o.addEventListener("aborted", fsm.eventListener, fsm);
+ fsm.addObject("rpc", o);
+
+ return fsm;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/gui.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/gui.js
new file mode 100644
index 0000000000..0ba443a629
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/gui.js
@@ -0,0 +1,95 @@
+function initGui(fsm)
+{
+ var o;
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var vLayout = new qx.ui.layout.VerticalBoxLayout();
+ vLayout.setTop(40);
+ vLayout.setLeft(20);
+ vLayout.setSpacing(4);
+
+ vLayout.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null)
+ {
+ defaultURL = "/services/";
+ }
+ o = new qx.ui.form.TextField(defaultURL);
+ vLayout.add(o);
+ fsm.addObject("text_url", o);
+
+ vLayout.add(new qx.ui.basic.Label("Service:"));
+ o = new qx.ui.form.TextField("qooxdoo.test");
+ vLayout.add(o);
+ fsm.addObject("text_service", o);
+
+ vLayout.add(new qx.ui.basic.Label("Method:"));
+ o = new qx.ui.form.TextField("sleep");
+ vLayout.add(o);
+ fsm.addObject("text_method", o);
+
+ var hLayout = new qx.ui.layout.HorizontalBoxLayout();
+ hLayout.setHeight("auto");
+ hLayout.setVerticalChildrenAlign("middle");
+ hLayout.setSpacing(4);
+
+ o = new qx.ui.form.TextField("2");
+ o.setWidth(200);
+ hLayout.add(o);
+ fsm.addObject("text_message", o);
+
+ o = new qx.ui.form.Button("Send to server");
+ o.addEventListener("execute", fsm.eventListener, fsm);
+ hLayout.add(o);
+ fsm.addObject("button_send", o);
+
+ o = new qx.ui.form.Button("Abort");
+ o.setEnabled(false);
+ o.addEventListener("execute", fsm.eventListener, fsm);
+ hLayout.add(o);
+ fsm.addObject("button_abort", o);
+
+ vLayout.add(hLayout);
+
+ vLayout.add(new qx.ui.basic.Label("Result:"));
+ o = new qx.ui.form.TextField("");
+ o.setWidth(600);
+ vLayout.add(o);
+ fsm.addObject("text_result", o);
+
+ var hLayout = new qx.ui.layout.HorizontalBoxLayout();
+ hLayout.setHeight("auto");
+ hLayout.setVerticalChildrenAlign("middle");
+ hLayout.setSpacing(4);
+
+ var o = new qx.ui.basic.Atom("Idle=blue, RPC=red");
+ o.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ o.setColor(new qx.renderer.color.Color("white"));
+ o.setWidth(200);
+ o.setHeight(30);
+ o.setPadding(4);
+ hLayout.add(o);
+ fsm.addObject("atom_1", o, "group_color_change");
+
+ var o = new qx.ui.basic.Atom("Idle=blue, RPC=red");
+ o.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ o.setColor(new qx.renderer.color.Color("white"));
+ o.setWidth(200);
+ o.setHeight(30);
+ o.setPadding(4);
+ hLayout.add(o);
+ fsm.addObject("atom_2", o, "group_color_change");
+
+ var o = new qx.ui.basic.Atom("Idle=blue, RPC=red");
+ o.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ o.setColor(new qx.renderer.color.Color("white"));
+ o.setWidth(200);
+ o.setHeight(30);
+ o.setPadding(4);
+ hLayout.add(o);
+ fsm.addObject("atom_3", o, "group_color_change");
+
+ vLayout.add(hLayout);
+
+ d.add(vLayout);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/main.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/main.js
new file mode 100644
index 0000000000..56a53ac484
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Fsm_1/main.js
@@ -0,0 +1,11 @@
+qx.core.Init.getInstance().defineMain(function()
+{
+ // Initialize the finite state machine
+ fsm = initFsm();
+
+ // Initialize the GUI
+ initGui(fsm);
+
+ // Start the finite state machine
+ fsm.start();
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GalleryList_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GalleryList_1.html
new file mode 100644
index 0000000000..3973623338
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GalleryList_1.html
@@ -0,0 +1,129 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+
+ <style type="text/css">
+.qx_ui_embed_GalleryList{
+ position: absolute;
+ visibility: visible;
+}
+
+.qx_ui_embed_GalleryList .galleryFrame{
+ padding: 2px;
+}
+
+.qx_ui_embed_GalleryList .galleryCell{
+ margin: 2px;
+ padding-bottom: 2px;
+ border: 1px solid #EEE;
+
+ background: #fff;
+ overflow: hidden;
+ white-space: normal;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 12px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+
+ position: relative;
+}
+
+.qx_ui_embed_GalleryList .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+}
+
+.qx_ui_embed_GalleryList .galleryNumber{
+ width: 45px;
+ padding: 4px;
+
+ position: absolute;
+ top: 0px;
+ left: 0px;
+}
+
+.qx_ui_embed_GalleryList .galleryImageContainer{
+ position: absolute;
+ top: 0px;
+ left: 50px;
+}
+
+.qx_ui_embed_GalleryList .galleryText{
+ padding: 4px;
+ position: absolute;
+ top: 0px;
+ left: 130px;
+}
+
+.qx_ui_embed_GalleryList .galleryNumber,
+.qx_ui_embed_GalleryList .galleryText h3{
+ font-weight: bold;
+ font-size: 11px;
+}
+
+.qx_ui_embed_GalleryList .galleryText p{
+ font-size: 10px;
+}
+
+.qx_ui_embed_GalleryList .galleryCell-Selected{
+ background: #9BBCFF;
+ border-color: #3B7CFF;
+}
+ </style>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>ListSort implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var imgPath = qx.manager.object.AliasManager.getInstance().resolvePath("icon/48/bug.png");
+
+ var galleryData = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryData.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 48,
+ thumbHeight : 48,
+ title : "gohome.png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment sadas asd dsa asdas dasd asd asdas dasdasdasd sadasdas dsds as",
+ id : "7686191121780974-10682",
+ src : imgPath,
+ number : "#" + i
+ });
+ };
+
+ var galleryList = new qx.ui.embed.GalleryList(galleryData);
+
+ galleryList.setWidth(400);
+ galleryList.setTop(48);
+ galleryList.setBottom(48);
+ galleryList.setLeft(250);
+
+ galleryList.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ galleryList.setBackgroundColor("white");
+
+ qx.ui.core.ClientDocument.getInstance().add(galleryList);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Gallery_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Gallery_1.html
new file mode 100644
index 0000000000..3252d3d1de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Gallery_1.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+
+ <style type="text/css">
+.qx_ui_embed_Gallery .galleryFrame{
+ padding: 2px;
+}
+
+.qx_ui_embed_Gallery .galleryCell{
+ border: 1px solid #444;
+ background: #fff;
+ margin: 2px;
+ float: left;
+ overflow: hidden;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 10px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.qx_ui_embed_Gallery .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+}
+
+.qx_ui_embed_Gallery .galleryCell .galleryTitle,
+.qx_ui_embed_Gallery .galleryCell .galleryComment{
+ background: #eee;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: default;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.qx_ui_embed_Gallery .galleryCell .galleryTitle{
+ border-bottom: 1px solid #aaa;
+}
+
+.qx_ui_embed_Gallery .galleryCell .galleryComment{
+ border-top: 1px solid #aaa;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected{
+ background: #DCE8F6;
+ border: 1px solid #2760A1;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle,
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ background: #9BBFE7;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle{
+ border-bottom: 1px dotted #2760A1;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ border-top: 1px dotted #2760A1;
+}
+ </style>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test file for qx.ui.embed.Gallery</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var imgPath = qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/chart.png");
+
+ var galleryList = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryList.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome.png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment",
+ id : "7686191121780974-10682",
+ src : imgPath
+ });
+ };
+
+ var gallery = new qx.ui.embed.Gallery(galleryList);
+
+ gallery.setLeft(20);
+ gallery.setRight(335);
+ gallery.setTop(48);
+ gallery.setBottom(48);
+ gallery.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+ qx.ui.core.ClientDocument.getInstance().add(gallery);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_1.html
new file mode 100644
index 0000000000..39c2eafd00
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introducing qx.ui.groupbox.GroupBox.</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.GroupBox("My first Fieldset");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth(250);
+ };
+
+
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setTop(3);
+ setLeft(0);
+ setWidth("35%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField();
+ with(i1)
+ {
+ setTop(0);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(a1, i1);
+
+
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/appearance.png");
+ with(a2)
+ {
+ setTop(33);
+ setLeft(0);
+ setWidth("35%");
+ setHorizontalChildrenAlign("left");
+ };
+ fs.add(a2);
+
+ var i2 = new qx.ui.form.TextField();
+ with(i2)
+ {
+ setTop(30);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i2);
+
+
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setTop(63);
+ setLeft(0);
+ setWidth("35%");
+ setHorizontalChildrenAlign("left");
+ };
+ fs.add(a3);
+
+ var i3 = new qx.ui.form.TextField();
+ with(i3)
+ {
+ setTop(60);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i3);
+
+
+
+ d.add(fs);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_2.html
new file mode 100644
index 0000000000..117732caf4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_2.html
@@ -0,0 +1,153 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.groupbox.CheckGroupBox</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.CheckGroupBox("CheckBox FieldSet");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth("auto");
+ };
+
+ d.add(fs);
+
+
+
+
+ var fsl = new qx.ui.layout.VerticalBoxLayout;
+ fsl.setLeft(0);
+ fsl.setRight(0);
+ fsl.setHeight("auto");
+ fsl.setSpacing(4);
+ fs.add(fsl);
+
+
+
+
+ var r1 = new qx.ui.layout.HorizontalBoxLayout;
+ r1.setLeft(0);
+ r1.setWidth("100%");
+ r1.setHeight("auto");
+ r1.setVerticalChildrenAlign("middle");
+ fsl.add(r1);
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField;
+ with(i1)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r1.add(a1, i1);
+
+
+
+
+
+ var r2 = new qx.ui.layout.HorizontalBoxLayout;
+ r2.setLeft(0);
+ r2.setWidth("100%");
+ r2.setHeight("auto");
+ r2.setVerticalChildrenAlign("middle");
+ fsl.add(r2);
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/appearance.png");
+ with(a2)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i2 = new qx.ui.form.TextField;
+ with(i2)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r2.add(a2, i2);
+
+
+
+
+
+
+ var r3 = new qx.ui.layout.HorizontalBoxLayout;
+ r3.setLeft(0);
+ r3.setWidth("100%");
+ r3.setHeight("auto");
+ r3.setVerticalChildrenAlign("middle");
+ fsl.add(r3);
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i3 = new qx.ui.form.TextField;
+ with(i3)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r3.add(a3, i3);
+
+
+
+
+
+ fs.getLegendObject().addEventListener("changeChecked", function(e) {
+ i1.setEnabled(e.getData());
+ i2.setEnabled(e.getData());
+ i3.setEnabled(e.getData());
+
+ a1.setEnabled(e.getData());
+ a2.setEnabled(e.getData());
+ a3.setEnabled(e.getData());
+ });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_3.html
new file mode 100644
index 0000000000..e9a77c64bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/GroupBox_3.html
@@ -0,0 +1,160 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.groupbox.RadioGroupBox</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fsr = new qx.ui.form.RadioButton("Simple configuration");
+
+ fsr.setLocation(27, 48);
+ d.add(fsr);
+
+ var fs = new qx.ui.groupbox.RadioGroupBox("RadioButton FieldSet");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(72);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth("auto");
+ };
+
+ d.add(fs);
+
+ var fag = new qx.manager.selection.RadioManager("fscontrol", [ fsr, fs.getLegendObject() ]);
+
+
+
+
+ var fsl = new qx.ui.layout.VerticalBoxLayout;
+ fsl.setLeft(0);
+ fsl.setRight(0);
+ fsl.setHeight("auto");
+ fsl.setSpacing(4);
+ fs.add(fsl);
+
+
+
+
+ var r1 = new qx.ui.layout.HorizontalBoxLayout;
+ r1.setLeft(0);
+ r1.setWidth("100%");
+ r1.setHeight("auto");
+ r1.setVerticalChildrenAlign("middle");
+ fsl.add(r1);
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField;
+ with(i1)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r1.add(a1, i1);
+
+
+
+
+
+ var r2 = new qx.ui.layout.HorizontalBoxLayout;
+ r2.setLeft(0);
+ r2.setWidth("100%");
+ r2.setHeight("auto");
+ r2.setVerticalChildrenAlign("middle");
+ fsl.add(r2);
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/appearance.png");
+ with(a2)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i2 = new qx.ui.form.TextField;
+ with(i2)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r2.add(a2, i2);
+
+
+
+
+
+
+ var r3 = new qx.ui.layout.HorizontalBoxLayout;
+ r3.setLeft(0);
+ r3.setWidth("100%");
+ r3.setHeight("auto");
+ r3.setVerticalChildrenAlign("middle");
+ fsl.add(r3);
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i3 = new qx.ui.form.TextField;
+ with(i3)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r3.add(a3, i3);
+
+
+
+
+
+ fs.getLegendObject().addEventListener("changeChecked", function(e) {
+ i1.setEnabled(e.getData());
+ i2.setEnabled(e.getData());
+ i3.setEnabled(e.getData());
+
+ a1.setEnabled(e.getData());
+ a2.setEnabled(e.getData());
+ a3.setEnabled(e.getData());
+ });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Iframe_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Iframe_1.html
new file mode 100644
index 0000000000..90d87e1d9b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Iframe_1.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Iframe implementation. Elastic.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ //----------
+ // qx.ui.embed.Iframe
+ //----------
+
+ w1 = new qx.ui.embed.Iframe();
+
+ w1.addEventListener("load", function(e) {
+ this.debug("Loaded: " + this.getSource());
+ });
+
+ // elastic
+ w1.set( { left: 20, top: 96, right: 335, bottom: 48 } );
+ w1.setSource("http://www.google.com");
+
+ d.add(w1);
+
+
+ function changeURL(e) {
+
+ this.setSource(e.getData());
+ };
+
+ // make qx.ui.embed.Iframe react to event "surfTo" via function changeURL()
+ d.addEventListener("surfTo", changeURL, w1);
+
+
+ //-------------
+ // radio group
+ //-------------
+
+ var rd1 = new qx.ui.form.RadioButton("Google", "http://www.google.com");
+ var rd2 = new qx.ui.form.RadioButton("Yahoo", "http://www.yahoo.com");
+
+ rd1.set( { left: 20, top: 48, checked: true } );
+ rd2.set( { left: 120, top: 48 } );
+
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2]);
+
+ // elements of radio group fire event "surfTo"
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ d.dispatchEvent( new qx.event.type.DataEvent("surfTo", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Inline_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Inline_1.html
new file mode 100644
index 0000000000..bfec3e773f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Inline_1.html
@@ -0,0 +1,260 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Inline widget.</p><p>Application layout is disabled by using qx.core.Settings. Scrollbars appear, if the content is bigger than the window.</p>
+ </div>
+
+ <div id="iframe1" class="manualFrame" style="overflow:hidden;position:static;margin-top:38px;margin-left:10px">
+ Inline Frame #1
+ </div>
+
+ <div id="iframe2" class="manualFrame" style="overflow:hidden;position:static;margin-top:20px;margin-left:10px">
+ Inline Frame #2
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var inlineWidget = new qx.ui.basic.Inline("iframe1");
+
+ inlineWidget.setHeight("auto");
+ inlineWidget.setWidth("auto");
+
+ var fieldSet = new qx.ui.groupbox.GroupBox("My first inline fieldset");
+
+ with(fieldSet)
+ {
+ // setWidth("auto");
+ // setWidth("100%");
+
+ setLeft(0);
+ setRight(0);
+
+ setHeight("auto");
+ };
+
+ inlineWidget.add(fieldSet);
+
+ d.add(inlineWidget);
+
+
+
+ var atom1 = new qx.ui.basic.Atom("Name");
+ var textfield1 = new qx.ui.form.TextField;
+
+ with(atom1)
+ {
+ setLeft(0);
+ setTop(3);
+ };
+
+ with(textfield1)
+ {
+ setLeft(80);
+ setRight(0);
+ setTop(0);
+ };
+
+ fieldSet.add(atom1, textfield1);
+
+
+
+ var atom2 = new qx.ui.basic.Atom("First Name");
+ var textfield2 = new qx.ui.form.TextField;
+
+ with(atom2)
+ {
+ setLeft(0);
+ setTop(33);
+ };
+
+ with(textfield2)
+ {
+ setLeft(80);
+ setRight(0);
+ setTop(30);
+ };
+
+ fieldSet.add(atom2, textfield2);
+
+
+
+ var atom3 = new qx.ui.basic.Atom("City");
+ var textfield3 = new qx.ui.form.TextField;
+
+ with(atom3)
+ {
+ setLeft(0);
+ setTop(63);
+ };
+
+ with(textfield3)
+ {
+ setLeft(80);
+ setRight(0);
+ setTop(60);
+ };
+
+ fieldSet.add(atom3, textfield3);
+
+
+
+ /*
+ Menu
+ */
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New");
+ var mb1_02 = new qx.ui.menu.Button("Open");
+ var mb1_03 = new qx.ui.menu.Button("Save");
+ var mb1_04 = new qx.ui.menu.Button("Save as");
+ var mb1_05 = new qx.ui.menu.Button("Close");
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved");
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo");
+ var mb2_02 = new qx.ui.menu.Button("Redo");
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png");
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png");
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png");
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png");
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All");
+ var mb2_08 = new qx.ui.menu.Button("Find");
+ var mb2_09 = new qx.ui.menu.Button("Find Again");
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", null, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", null, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", null, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt");
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt");
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt");
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt");
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt");
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt");
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt");
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt");
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt");
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt");
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, null, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...");
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions");
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences");
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window");
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", null, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", null);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", null);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window");
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window");
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help");
+ var mb5_02 = new qx.ui.menu.Button("About");
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m4, m4_suba, m5);
+
+
+ var inline2 = new qx.ui.basic.Inline("iframe2");
+
+ inline2.setHeight("auto");
+ inline2.setWidth("auto");
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+
+ mb1.add(mbb1, mbb2, mbb3, mbb4, mbb5);
+
+ with(mb1)
+ {
+ setWidth(400);
+ setHeight("auto");
+ };
+
+ inline2.add(mb1);
+
+ d.add(inline2);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_1.html
new file mode 100644
index 0000000000..661c4a8030
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_1.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Testing of column alignment, resizeable prohibition for columns and live resizing.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right", resizable : false },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ // Prohibit resizing of columns completly
+ // lv.setResizable(false);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+
+
+
+ var chk1 = new qx.ui.form.CheckBox("Enable Live Resize");
+ chk1.setLocation(20, 420);
+ qx.ui.core.ClientDocument.getInstance().add(chk1);
+
+ chk1.addEventListener("changeChecked", function(e) {
+ lv.setLiveResize(e.getData());
+ });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_2.html
new file mode 100644
index 0000000000..14df77b47e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_2.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells and an additional icon.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+ var li = [ "icons.png", "edit.png", "emoticon.png", "appearance.png", "file-new.png" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ icon : { source : "icon/16/" + li[t] }, name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ icon : { label : "", width: 24, type : "image" },
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_3.html
new file mode 100644
index 0000000000..89bfc6b086
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_3.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with iconHtml cells.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { html : "E-Mail " + i, icon : "icon/16/email.png", iconWidth : 16, iconHeight : 16 }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }, open : { uri : "http://www.google.com/search?q=" + i, html : "Open " + i }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 120, type : "iconHtml" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_4.html
new file mode 100644
index 0000000000..f673bacc90
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ListView_4.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Added some sort handling stuff.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString, align : "right" },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(qx.ui.core.ClientDocument.getInstance(), 20, 448);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/List_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/List_1.html
new file mode 100644
index 0000000000..17981e6f0c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/List_1.html
@@ -0,0 +1,127 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>List implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var l1 = new qx.ui.form.List;
+
+ l1.set({ top : 48, left: 20, height: 200, width: 150, overflow : "scrollY" });
+
+ var item;
+ for( var i=1; i<=35; i++ )
+ {
+ // item = new qx.ui.form.ListItem("Item No " + i);
+ item = new qx.ui.form.ListItem("Item No " + i, "icon/" + ((i % 4) ? "16" : "48") + "/folder.png");
+
+ !(i % 9) && (item.setEnabled(false));
+
+ l1.add(item);
+ };
+
+ d.add(l1);
+
+ var l2 = new qx.ui.form.List;
+
+ l2.set({ top : 48, left: 400, height: 200, width: 150 });
+ l2.getManager().setMultiSelection(false);
+ //l2.setOverflow("scrollY");
+ l2.setHeight("auto");
+
+ var l2l = [ "red", "violett", "rose", "blue", "green", "cyan", "magenta", "yellow", "brown", "orange", "black", "white", "grey", "gray", "brown" ];
+
+ for (var i=0; i<l2l.length; i++) {
+ l2.add(new qx.ui.form.ListItem(l2l[i]));
+ };
+
+ d.add(l2);
+
+
+
+
+ var c1 = new qx.ui.form.CheckBox("Enable Multi-Selection");
+ var c2 = new qx.ui.form.CheckBox("Enable Drag-Selection");
+ var c3 = new qx.ui.form.CheckBox("Allow Deselection");
+ var c4 = new qx.ui.form.CheckBox("Enable Inline Find");
+
+ c1.setLocation(180, 48);
+ c2.setLocation(180, 68);
+ c3.setLocation(180, 88);
+ c4.setLocation(180, 108);
+
+ d.add(c1, c2, c3, c4);
+
+ c1.setChecked(true);
+ c2.setChecked(true);
+ c3.setChecked(true);
+ c4.setChecked(true);
+
+ c1.addEventListener("changeChecked", function(e) {
+ l1.getManager().setMultiSelection(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ l1.getManager().setDragSelection(e.getData());
+ });
+
+ c3.addEventListener("changeChecked", function(e) {
+ l1.getManager().setCanDeselect(e.getData());
+ });
+
+ c4.addEventListener("changeChecked", function(e) {
+ l1.setEnableInlineFind(e.getData());
+ });
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Label", "label");
+ var rd2 = new qx.ui.form.RadioButton("Show Icon", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Both", "both");
+
+ rd1.set( { left: 180, top: 128 } );
+ rd2.set( { left: 180, top: 148 } );
+ rd3.set( { left: 180, top: 168 } );
+
+ d.add(rd1, rd2, rd3);
+
+ rd3.setChecked(true);
+
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2, rd3]);
+
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ for( var i=0; i<l1.getChildrenLength(); i++ ) {
+ l1.getChildren()[i].setShow(e.getData().getValue());
+ }
+ });
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 400);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 200, 400);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Menu_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Menu_1.html
new file mode 100644
index 0000000000..66fd0c8687
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Menu_1.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.menu.Menu Implementation.</p>
+ <p>Added qx.client.Command support tests.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var q1 = new qx.client.Command("Ctrl+Z");
+ q1.addEventListener("execute", function(e) {
+ alert("Undo");
+ });
+
+ var q2 = new qx.client.Command("Ctrl+Y");
+ q2.addEventListener("execute", function(e) {
+ alert("Redo");
+ });
+
+ var q3 = new qx.client.Command("Ctrl+X");
+ q3.addEventListener("execute", function(e) {
+ alert("Cut");
+ });
+
+ var q4 = new qx.client.Command("Ctrl+C");
+ q4.addEventListener("execute", function(e) {
+ alert("Copy");
+ });
+
+ var q5 = new qx.client.Command("Ctrl+V");
+ q5.addEventListener("execute", function(e) {
+ alert("Paste");
+ });
+
+ var q6 = new qx.client.Command("Del");
+ q6.addEventListener("execute", function(e) {
+ alert("Delete");
+ });
+
+ var q7 = new qx.client.Command("Ctrl+A");
+ q7.addEventListener("execute", function(e) {
+ alert("Select All");
+ });
+
+ var q8 = new qx.client.Command("Ctrl+F");
+ q8.addEventListener("execute", function(e) {
+ alert("Search");
+ });
+
+ var q9 = new qx.client.Command("Ctrl+G");
+ q9.addEventListener("execute", function(e) {
+ alert("Search Again");
+ });
+
+ var q10 = new qx.client.Command();
+ q10.addEventListener("execute", function(e) {
+ alert("Syntax Highlighting");
+ });
+
+ var q11 = new qx.client.Command("Esc");
+ q11.addEventListener("execute", function(e) {
+ alert("Escape");
+ });
+
+ var q12 = new qx.client.Command(null, qx.event.type.KeyEvent.keys.space);
+ q12.addEventListener("execute", function(e) {
+ alert("Space");
+ });
+
+
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists", null, q12);
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting", null, q10);
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font", null, q11);
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, q1);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, q2);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", q3);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", q4);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", q5);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", q6);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, q7);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, q8);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, q9);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.dom.Location.getPageBoxLeft(el));
+ m1.setTop(qx.dom.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 180, 48);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 380, 48);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/NativeWindow_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/NativeWindow_1.html
new file mode 100644
index 0000000000..4d607a4424
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/NativeWindow_1.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Native Windows. Could be understood as an enhanced window.open with some additional options like to create modal windows.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var w1 = new qx.client.NativeWindow("http://www.google.com");
+
+ w1.setDimension(600, 400);
+
+
+ w1.addEventListener("load", function(e) {
+ this.debug("Content loaded: " + this.isLoaded());
+ });
+
+ w1.addEventListener("close", function(e) {
+ this.debug("Window closed: " + this.isClosed());
+ });
+
+
+
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var btn1 = new qx.ui.form.Button("Open Native Window", "icon/16/appearance.png");
+ with(btn1)
+ {
+ setTop(48);
+ setLeft(20);
+
+ addEventListener("click", function() { w1.open(); } );
+ };
+
+ d.add(btn1);
+
+
+
+
+
+ var l = new qx.ui.layout.VerticalBoxLayout;
+ l.setLocation(20, 96);
+ l.setWidth("auto");
+ l.setHeight("auto");
+ d.add(l);
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Initial Settings");
+ fs1.setHeight("auto");
+ l.add(fs1);
+
+
+ var chk1 = new qx.ui.form.CheckBox("Resizeable");
+ chk1.setLocation(0, 0);
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ w1.setResizeable(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk2.setLocation(0, 20);
+ chk2.setChecked(false);
+ chk2.addEventListener("changeChecked", function(e) {
+ w1.setShowStatusbar(e.getData());
+ });
+
+ var chk3 = new qx.ui.form.CheckBox("Show Menubar");
+ chk3.setLocation(0, 40);
+ chk3.setChecked(false);
+ chk3.addEventListener("changeChecked", function(e) {
+ w1.setShowMenubar(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Show Location");
+ chk4.setLocation(0, 60);
+ chk4.setChecked(false);
+ chk4.addEventListener("changeChecked", function(e) {
+ w1.setShowLocation(e.getData());
+ });
+
+ var chk5 = new qx.ui.form.CheckBox("Show Toolbar");
+ chk5.setLocation(0, 80);
+ chk5.setChecked(false);
+ chk5.addEventListener("changeChecked", function(e) {
+ w1.setShowToolbar(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Allow Scrollbars");
+ chk6.setLocation(0, 100);
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ w1.setAllowScrollbars(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Modal");
+ chk7.setLocation(0, 120);
+ chk7.setChecked(false);
+ chk7.addEventListener("changeChecked", function(e) {
+ w1.setModal(e.getData());
+ });
+
+ var chk8 = new qx.ui.form.CheckBox("Dependent");
+ chk8.setLocation(0, 140);
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ w1.setDependent(e.getData());
+ });
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8);
+
+
+
+
+
+
+
+
+ var fs2 = new qx.ui.groupbox.GroupBox("Runtime Settings");
+ fs2.setHeight("auto");
+ l.add(fs2);
+
+
+
+ var tf1 = new qx.ui.form.TextField("http://www.google.com");
+ tf1.setLocation(0, 2);
+ tf1.setWidth(150);
+
+ var btn1 = new qx.ui.form.Button("Set Url", "icon/16/button-ok.png");
+ btn1.setLocation(155, 0);
+ btn1.addEventListener("click", function() {
+ w1.setUrl(tf1.getValue());
+ });
+
+
+
+
+ var tf2 = new qx.ui.form.TextField("600");
+ tf2.setLocation(0, 42);
+ tf2.setWidth(50);
+
+ var btn2 = new qx.ui.form.Button("Set Width", "icon/16/button-ok.png");
+ btn2.setLocation(55, 40);
+ btn2.addEventListener("click", function() {
+ w1.setWidth(parseInt(tf2.getValue()));
+ });
+
+
+
+
+ var tf3 = new qx.ui.form.TextField("400");
+ tf3.setLocation(0, 72);
+ tf3.setWidth(50);
+
+ var btn3 = new qx.ui.form.Button("Set Height", "icon/16/button-ok.png");
+ btn3.setLocation(55, 70);
+ btn3.addEventListener("click", function() {
+ w1.setHeight(parseInt(tf3.getValue()));
+ });
+
+
+
+ var btn4 = new qx.ui.form.Button("Center to screen", "icon/16/paint.png");
+ btn4.setLocation(0, 110);
+ btn4.addEventListener("click", function() {
+ w1.centerToScreen()
+ });
+
+ var btn5 = new qx.ui.form.Button("Center to screen area", "icon/16/paint.png");
+ btn5.setLocation(0, 140);
+ btn5.addEventListener("click", function() {
+ w1.centerToScreenArea()
+ });
+
+ var btn6 = new qx.ui.form.Button("Center to opener", "icon/16/paint.png");
+ btn6.setLocation(0, 170);
+ btn6.addEventListener("click", function() {
+ w1.centerToOpener()
+ });
+
+
+
+ fs2.add(tf1, btn1, tf2, btn2, tf3, btn3, btn4, btn5, btn6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RadioButton_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RadioButton_1.html
new file mode 100644
index 0000000000..6976cb5fbf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RadioButton_1.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.ui.form.RadioButton. qx.ui.form.RadioButton extends qx.ui.basic.Atom and so it inherits all the options and properties defined there.</p>
+ <p>To group multiple QxRadioButtons you must define a instance of qx.manager.selection.RadioManager and add them to this new instance. All QxRadioButtons assigned to the same group make sure that only one of them is checked at the same time.</p>
+ <p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var rb1 = new qx.ui.form.RadioButton("Option #1", "rb1");
+ with(rb1)
+ {
+ setTop(80);
+ setLeft(20);
+ };
+ d.add(rb1);
+
+ var rb2 = new qx.ui.form.RadioButton("Option #2", "rb2");
+ with(rb2)
+ {
+ setTop(110);
+ setLeft(20);
+ };
+ d.add(rb2);
+ rb2.setChecked(true);
+
+
+ var rb3 = new qx.ui.form.RadioButton("Top RadioButton", "rb3");
+ with(rb3)
+ {
+ setTop(160);
+ setLeft(20);
+ setIconPosition("top");
+ };
+ d.add(rb3);
+
+ var rb4 = new qx.ui.form.RadioButton("Bottom RadioButton", "rb4");
+ with(rb4)
+ {
+ setTop(160);
+ setLeft(160);
+ setIconPosition("bottom");
+ };
+ d.add(rb4);
+
+
+ var rb5 = new qx.ui.form.RadioButton("Left RadioButton", "rb5");
+ with(rb5)
+ {
+ setTop(220);
+ setLeft(20);
+ setIconPosition("left");
+ };
+ d.add(rb5);
+
+ var rb6 = new qx.ui.form.RadioButton("Right RadioButton", "rb6");
+ with(rb6)
+ {
+ setTop(220);
+ setLeft(160);
+ setIconPosition("right");
+ };
+ d.add(rb6);
+
+ var rb7 = new qx.ui.form.RadioButton(null, "rb7");
+ with(rb7)
+ {
+ setTop(280);
+ setLeft(20);
+ };
+ d.add(rb7);
+
+
+ var rg1 = new qx.manager.selection.RadioManager("mygroup", [rb1, rb2, rb3, rb4, rb5, rb6, rb7]);
+
+
+
+
+
+ var linfo = new qx.ui.basic.Atom("Current Value: \"" + rg1.getSelected().getLabel() + "\" (" + rg1.getSelected().getValue() + ")", "icon/16/forward.png");
+
+ with(linfo)
+ {
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ setBackgroundColor("white");
+ setTop(48);
+ setLeft(20);
+ };
+
+ rg1.addEventListener("changeSelected", function(e) {
+ linfo.setLabel("Current Value: \"" + e.getData().getLabel() + "\" (" + e.getData().getValue() + ")");
+ });
+
+ d.add(linfo);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RepeatButton_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RepeatButton_1.html
new file mode 100644
index 0000000000..3858e7594a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RepeatButton_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the qx.ui.form.RepeatButton constructor. qx.ui.form.RepeatButton is based on qx.ui.form.Button but adds some interval handled event mechanism.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var btn1 = new qx.ui.form.RepeatButton("Repeat Button No #1");
+ with(btn1)
+ {
+ setTop(48);
+ setLeft(20);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn1);
+
+
+
+ var btn2 = new qx.ui.form.RepeatButton("Repeat Button No #2");
+ with(btn2)
+ {
+ setTop(48);
+ setLeft(160);
+ addEventListener("execute", buttonExecute);
+ setEnabled(false);
+ };
+
+ d.add(btn2);
+
+
+
+ var btn3 = new qx.ui.form.RepeatButton("Repeat Button No #3");
+ with(btn3)
+ {
+ setTop(48);
+ setLeft(300);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn3);
+
+
+ var btn4 = new qx.ui.form.RepeatButton("Repeat Button No #4", "icon/16/forward.png");
+ with(btn4)
+ {
+ setTop(148);
+ setLeft(20);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Resizer_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Resizer_1.html
new file mode 100755
index 0000000000..05ed00b7ce
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Resizer_1.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.resizer.Rezizer.</p>
+ <p>
+ The Resizer widget acts as a wrapper of another widget. It allows the child widget to be resized by the end user.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ function newResizer() {
+ var tArea = new qx.ui.form.TextArea;
+ tArea.setValue("Resize me\nI'm resizable");
+ tArea.set({
+ minWidth: 100,
+ minHeight: 50,
+ width: 200,
+ height: 100
+ });
+ return new qx.ui.resizer.Resizer(tArea);
+ }
+
+ function newHBox() {
+ var hBox = new qx.ui.layout.BoxLayout;
+ hBox.set({
+ spacing: 10
+ });
+ hBox.auto();
+ hBox.add(newResizer(), newResizer());
+ return hBox;
+ }
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var vBox = new qx.ui.layout.VerticalBoxLayout;
+ var list = new qx.ui.form.List;
+ list.set({width: 100, height: 200, minWidth: 50, minHeight: 100, overflow: 'auto'});
+ for (var i = 0; i < 100; i++) {
+ list.add(new qx.ui.form.ListItem('Option number '+i));
+ }
+ vBox.add(new qx.ui.resizer.Resizer(list));
+ vBox.set({
+ spacing: 10,
+ top: 50,
+ left: 30
+ });
+ vBox.auto();
+ vBox.add(newHBox(), newHBox());
+ vBox.addToDocument();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RpcTreeFullControl_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RpcTreeFullControl_1.html
new file mode 100644
index 0000000000..3bd0fed749
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/RpcTreeFullControl_1.html
@@ -0,0 +1,194 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link
+ type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>
+ Shows a tree which listens for tree events. This script communicates via
+ JSON-RPC to a backend server. Each time a new tree node is opened, the
+ children are requested from the server. See the server-side functions
+ at backend/php/services/qooxdoo/fs.php.
+ </p>
+ </div>
+
+<script type="text/javascript">
+qx.core.Init.getInstance().defineMain(
+ function()
+ {
+ var addChildren = function(parent, children)
+ {
+ var t;
+ var trs;
+ var child;
+
+ for (i = 0; i < children.length; i++)
+ {
+ child = children[i];
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().newRow();
+
+ // Here's our indentation and tree-lines
+ trs.addIndent();
+
+ // If not a file or directory, change the icon
+ var bIsDirectory = ((child.mode & 0040000) != 0);
+ var bIsFile = ((child.mode & 0100000) != 0);
+ if (! bIsDirectory && ! bIsFile)
+ {
+ trs.addIcon("icon/16/desktop.png",
+ "icon/16/dictionary.png");
+ }
+ else
+ {
+ trs.addIcon();
+ }
+
+ // The label
+ trs.addLabel(child.name);
+
+ // All else should be right justified
+ obj = new qx.ui.basic.HorizontalSpacer;
+ trs.addObject(obj, true);
+
+ // Add the permissions
+ mode = "";
+ mode = ((child.mode & 0001) ? "x" : "-") + mode;
+ mode = ((child.mode & 0002) ? "w" : "-") + mode;
+ mode = ((child.mode & 0004) ? "r" : "-") + mode;
+ mode = ((child.mode & 0010) ? "x" : "-") + mode;
+ mode = ((child.mode & 0020) ? "w" : "-") + mode;
+ mode = ((child.mode & 0040) ? "r" : "-") + mode;
+ mode = ((child.mode & 0100) ? "x" : "-") + mode;
+ mode = ((child.mode & 0200) ? "w" : "-") + mode;
+ mode = ((child.mode & 0400) ? "r" : "-") + mode;
+ obj = new qx.ui.basic.Label(mode);
+ obj.setWidth(80);
+ obj.setStyleProperty("fontFamily", "monospace");
+ trs.addObject(obj, true);
+
+ // Add a file size, date and mode
+ obj = new qx.ui.basic.Label(child.size + "");
+ obj.setWidth(50);
+ obj.setStyleProperty("fontFamily", "monospace");
+ trs.addObject(obj, true);
+
+ var d = new Date();
+ d.setTime(child.mtime * 1000);
+ obj = new qx.ui.basic.Label(d.toString().slice(0,33));
+ obj.setWidth(200);
+ obj.setStyleProperty("fontFamily", "monospace");
+ trs.addObject(obj, true);
+
+ if (bIsDirectory)
+ {
+ t = new qx.ui.treefullcontrol.TreeFolder(trs);
+ }
+ else
+ {
+ t = new qx.ui.treefullcontrol.TreeFile(trs);
+ }
+ parent.add(t);
+ }
+ }
+
+ /*
+ * Reset the default of always showing the plus/minus symbol. The
+ * default is 'false'. We want to always display it for each folder
+ * (and then stop displaying it if we determine upon open that there
+ * are no contents).
+ */
+ var constructor = qx.OO.classes["qx.ui.treefullcontrol.TreeFolder"];
+ qx.Proto = constructor.prototype;
+ qx.OO.changeProperty({
+ name : "alwaysShowPlusMinusSymbol",
+ type : "boolean",
+ defaultValue : true });
+
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(10000);
+ rpc.setUrl("/services/");
+ rpc.setServiceName("qooxdoo.fs");
+ rpc.setCrossDomain(false);
+
+ var mycall = null;
+
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(700);
+ setBottom(48);
+
+ setHideNode(true); // hide the root node
+ setUseTreeLines(true); // display tree lines
+ };
+
+ /*
+ * All subtrees will use this root node's event listeners. Create an
+ * event listener for an open while empty.
+ */
+ t.addEventListener(
+ "treeOpenWhileEmpty",
+ function(e)
+ {
+ var parent = e.getData();
+ var hierarchy = parent.getHierarchy(new Array());
+
+ parent.debug("Requesting children...");
+
+ // Strip off the root node
+ hierarchy.shift();
+
+ mycall = rpc.callAsync(
+ function(result, ex, id)
+ {
+ mycall = null;
+ if (ex == null) {
+ parent.debug("Children obtained. Rendering...");
+ addChildren(parent, result);
+ parent.debug("Rendering complete.");
+ } else {
+ alert("Async(" + id + ") exception: " + ex);
+ }
+ },
+ "readDirEntries",
+ hierarchy,
+ true);
+ });
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sandbox");
+ var tf = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(tf);
+ });
+/*
+ * Local Variables:
+ * mode: java
+ * End:
+ */
+</script>
+
+</body>
+</html>
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Spinner_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Spinner_1.html
new file mode 100644
index 0000000000..05406d5c53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Spinner_1.html
@@ -0,0 +1,106 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.form.Spinner.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var s1 = new qx.ui.form.Spinner;
+
+ with(s1)
+ {
+ setLeft(20);
+ setTop(64);
+ };
+
+ d.add(s1);
+
+ d.add( (new qx.ui.basic.Label("100").set({left:20, top:48})) );
+ d.add( (new qx.ui.basic.Label("0").set({left:20, top:90})) );
+
+ var s2 = new qx.ui.form.Spinner;
+
+ with(s2)
+ {
+ setLeft(100);
+ setTop(64);
+ setValue(30);
+ setMin(-30);
+ setMax(30);
+ };
+
+ d.add(s2);
+
+ d.add( (new qx.ui.basic.Label("30").set({left:100, top:48})) );
+ d.add( (new qx.ui.basic.Label("-30").set({left:100, top:90})) );
+
+ var s3 = new qx.ui.form.Spinner;
+
+ with(s3)
+ {
+ setLeft(180);
+ setTop(64);
+ setValue(0);
+ setMin(-3000);
+ setMax(3000);
+ };
+
+ d.add(s3);
+
+ d.add( (new qx.ui.basic.Label("3000").set({left:180, top:48})) );
+ d.add( (new qx.ui.basic.Label("-3000").set({left:180, top:90})) );
+
+ /*
+ s3._manager.addEventListener("changeValue", function(e) {
+ this.debug("Value: " + e.getData());
+ });
+ */
+
+ var s4 = new qx.ui.form.Spinner;
+
+ with(s4)
+ {
+ setLeft(260);
+ setTop(64);
+ setValue(0);
+ setMin(100);
+ setMax(200);
+ };
+
+ d.add(s4);
+
+ d.add( (new qx.ui.basic.Label("200").set({left:260, top:48})) );
+ d.add( (new qx.ui.basic.Label("100").set({left:260, top:90})) );
+
+
+ var s5 = new qx.ui.form.Spinner( -200, null, -100);
+
+ with(s5)
+ {
+ setLeft(340);
+ setTop(64);
+ };
+
+ d.add(s5);
+
+ d.add( (new qx.ui.basic.Label("-100").set({left:340, top:48})) );
+ d.add( (new qx.ui.basic.Label("-200").set({left:340, top:90})) );
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_1.html
new file mode 100644
index 0000000000..2f965c16bd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_1.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for normal width Splitpane, no holding knobs, live resize enabled.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var frame = new qx.ui.layout.CanvasLayout;
+ frame.setLocation(20, 48);
+ frame.setBottom(48);
+ frame.setRight(300);
+ frame.setBackgroundColor("#134275");
+ frame.setPadding(20);
+ frame.addToDocument();
+
+ // the splitpane itself
+ var splitpane = new qx.ui.splitpane.HorizontalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+ splitpane.setLiveResize(true);
+ frame.add(splitpane);
+
+ // left Widget
+ var leftWidget = new qx.ui.form.TextArea("LeftWidget");
+ leftWidget.setWrap(true);
+ leftWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ leftWidget.setWidth("100%");
+ leftWidget.setHeight("100%");
+
+ // rightWidget (another splitpane)
+ var rightWidget = new qx.ui.splitpane.VerticalSplitPane;
+ rightWidget.setHeight("100%");
+ rightWidget.setWidth("100%");
+ rightWidget.setLiveResize(true);
+
+ // add widgets to splitpane
+ splitpane.addLeft(leftWidget);
+ splitpane.addRight(rightWidget);
+
+
+
+ // right top widget
+ var topWidget = new qx.ui.form.TextArea("Right Top Widget");
+ topWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ topWidget.setHeight("100%");
+ topWidget.setWidth("100%");
+
+ // right bottom widget
+ var bottomWidget = new qx.ui.embed.Iframe("http://www.qooxdoo.org");
+ bottomWidget.setHeight("100%");
+ bottomWidget.setWidth("100%");
+
+ // add widgets to right splitpane
+ rightWidget.addTop(topWidget);
+ rightWidget.addBottom(bottomWidget);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_2.html
new file mode 100644
index 0000000000..29f07fe558
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/SplitPane_2.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for extra slim Splitpane, with holding knobs.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var frame = new qx.ui.layout.CanvasLayout;
+ frame.setLocation(20, 48);
+ frame.setBottom(48);
+ frame.setRight(300);
+ frame.setBackgroundColor("#134275");
+ frame.setPadding(20);
+ frame.addToDocument();
+
+ // the splitpane itself
+ var splitpane = new qx.ui.splitpane.HorizontalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+ splitpane.setSplitterSize(1);
+ splitpane.setShowKnob(true);
+ frame.add(splitpane);
+
+ // left Widget
+ var leftWidget = new qx.ui.form.TextArea("LeftWidget");
+ leftWidget.setWrap(true);
+ leftWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ leftWidget.setWidth("100%");
+ leftWidget.setHeight("100%");
+
+ // rightWidget (another splitpane)
+ var rightWidget = new qx.ui.splitpane.VerticalSplitPane;
+ rightWidget.setHeight("100%");
+ rightWidget.setWidth("100%");
+ rightWidget.setSplitterSize(1);
+ rightWidget.setShowKnob(true);
+
+
+ // add widgets to splitpane
+ splitpane.addLeft(leftWidget);
+ splitpane.addRight(rightWidget);
+
+
+
+ // right top widget
+ var topWidget = new qx.ui.form.TextArea("Right Top Widget");
+ topWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ topWidget.setHeight("100%");
+ topWidget.setWidth("100%");
+
+ // right bottom widget
+ var bottomWidget = new qx.ui.embed.Iframe("http://www.qooxdoo.org");
+ bottomWidget.setHeight("100%");
+ bottomWidget.setWidth("100%");
+
+ // add widgets to right splitpane
+ rightWidget.addTop(topWidget);
+ rightWidget.addBottom(bottomWidget);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_1.html
new file mode 100644
index 0000000000..0179891e00
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_1.html
@@ -0,0 +1,152 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tabbar implementation.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 20, top: 48, right: 335, bottom: 48 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Edit");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Find");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Backup");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ var f2 = new qx.ui.form.TextField("Find Anywhere");
+ var f3 = new qx.ui.form.TextField("Backup Input");
+
+ p1_2.add(f2);
+ p1_3.add(f3);
+
+ var c1 = new qx.ui.form.CheckBox("Place bar on top");
+ var c2 = new qx.ui.form.CheckBox("Align tabs to left");
+
+ c1.setTop(0);
+ c1.setChecked(true);
+
+ c2.setTop(20);
+ c2.setChecked(true);
+
+ p1_1.add(c1, c2);
+
+ c1.addEventListener("changeChecked", function(e) {
+ tf1.setPlaceBarOnTop(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ tf1.setAlignTabsToLeft(e.getData());
+ });
+
+
+
+
+ var tf2 = new qx.ui.pageview.tabview.TabView;
+
+ tf2.set({ left: 0, top: 50, right: 0, bottom: 0 });
+
+
+
+ var t2_1 = new qx.ui.pageview.tabview.Button("Search for Files", "icon/16/file-open.png");
+ var t2_2 = new qx.ui.pageview.tabview.Button("Search the Web", "icon/16/network.png");
+ var t2_3 = new qx.ui.pageview.tabview.Button("Search for Text", "icon/16/contents.png");
+ var t2_4 = new qx.ui.pageview.tabview.Button("Search for Persons", "icon/16/emoticon.png");
+ var t2_5 = new qx.ui.pageview.tabview.Button("Search in Mails", "icon/16/mail.png");
+
+ t2_1.setChecked(true);
+
+ tf2.getBar().add(t2_1, t2_2, t2_3, t2_4, t2_5);
+
+ var p2_1 = new qx.ui.pageview.tabview.Page(t2_1);
+ var p2_2 = new qx.ui.pageview.tabview.Page(t2_2);
+ var p2_3 = new qx.ui.pageview.tabview.Page(t2_3);
+ var p2_4 = new qx.ui.pageview.tabview.Page(t2_4);
+ var p2_5 = new qx.ui.pageview.tabview.Page(t2_5);
+
+ tf2.getPane().add(p2_1, p2_2, p2_3, p2_4, p2_5);
+
+ var t2_1 = new qx.ui.form.TextField("Files...");
+ var t2_2 = new qx.ui.form.TextField("Web...");
+ var t2_3 = new qx.ui.form.TextField("Printers...");
+ var t2_4 = new qx.ui.form.TextField("Persons...");
+ var t2_5 = new qx.ui.form.TextField("Mails...");
+
+ t2_1.set({ top: 2, left: 0, width: 140 });
+ t2_2.set({ top: 2, left: 0, width: 140 });
+ t2_3.set({ top: 2, left: 0, width: 140 });
+ t2_4.set({ top: 2, left: 0, width: 140 });
+ t2_5.set({ top: 2, left: 0, width: 140 });
+
+ p2_1.add(t2_1);
+ p2_2.add(t2_2);
+ p2_3.add(t2_3);
+ p2_4.add(t2_4);
+ p2_5.add(t2_5);
+
+ var b2_1 = new qx.ui.form.Button("Search", "icon/16/search.png");
+ var b2_2 = new qx.ui.form.Button("Search", "icon/16/search.png");
+ var b2_3 = new qx.ui.form.Button("Search", "icon/16/search.png");
+ var b2_4 = new qx.ui.form.Button("Search", "icon/16/search.png");
+ var b2_5 = new qx.ui.form.Button("Search", "icon/16/search.png");
+
+ b2_1.set({ top: 0, left: 150 });
+ b2_2.set({ top: 0, left: 150 });
+ b2_3.set({ top: 0, left: 150 });
+ b2_4.set({ top: 0, left: 150 });
+ b2_5.set({ top: 0, left: 150 });
+
+ p2_1.add(b2_1);
+ p2_2.add(b2_2);
+ p2_3.add(b2_3);
+ p2_4.add(b2_4);
+ p2_5.add(b2_5);
+
+ function dosearch(e) {
+ alert("Searching...");
+ };
+
+ b2_1.addEventListener("click", dosearch);
+ b2_2.addEventListener("click", dosearch);
+ b2_3.addEventListener("click", dosearch);
+ b2_4.addEventListener("click", dosearch);
+ b2_5.addEventListener("click", dosearch);
+
+
+
+
+ p1_2.add(tf2);
+
+
+
+
+
+
+ d.add(tf1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_2.html
new file mode 100644
index 0000000000..0599a12103
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TabView_2.html
@@ -0,0 +1,127 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ </head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tabbar implementation.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 20, top: 48, right: 335, bottom: 48 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Edit");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Find");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Backup");
+ var t1_4 = new qx.ui.pageview.tabview.Button("System");
+ var t1_5 = new qx.ui.pageview.tabview.Button("Tools");
+ var t1_6 = new qx.ui.pageview.tabview.Button("Infos");
+
+ // set tab 1 active
+ t1_1.setChecked(true);
+
+ // add close images to tab
+ t1_1.setShowCloseButton(true);
+ t1_2.setShowCloseButton(true);
+ t1_3.setShowCloseButton(true);
+ t1_4.setShowCloseButton(true);
+ t1_5.setShowCloseButton(true);
+ t1_6.setShowCloseButton(true);
+
+
+ // modify the default images
+ t1_2.setCloseButtonImage("icon/16/error.png");
+ t1_4.setCloseButtonImage("icon/16/apply.png");
+
+ // add an eventlistener on the buttons
+ t1_1.addEventListener("closetab", _ontabclose);
+ t1_2.addEventListener("closetab", _ontabclose);
+ t1_3.addEventListener("closetab", _ontabclose);
+ t1_4.addEventListener("closetab", _ontabclose);
+ t1_5.addEventListener("closetab", _ontabclose);
+ t1_6.addEventListener("closetab", _ontabclose);
+
+
+
+ // this handler gets called if a tab-button fires a "closetab" event
+ function _ontabclose(e){
+ var btn = e.getData();
+
+ var pagesArray = tf1.getPane().getChildren();
+ var pageSearched = null;
+
+ for(var i = 0, l = pagesArray.length; i < l; i++){
+ var tmpPage = pagesArray[i];
+ if(tmpPage.getButton() === btn){
+ pageSearched = tmpPage;
+ }
+ }
+ if(pageSearched){
+
+ var itemsList = tf1.getBar().getChildren();
+ var lengthList = itemsList.length;
+ var btnIndex = itemsList.indexOf(btn);
+
+ // never remove the last tab
+ if( lengthList > 1 ) {
+
+ // Select another tab
+ if (btnIndex < lengthList-1 ){
+ itemsList[btnIndex+1].setChecked(true);
+ }
+ else {
+ itemsList[btnIndex-1].setChecked(true);
+ }
+
+ btn.getManager().remove(btn);
+ tf1.getBar().remove(btn);
+
+ tf1.getPane().remove(pageSearched);
+
+ pageSearched.dispose();
+ btn.dispose();
+ } else {
+ alert("Last Tab won't be removed!");
+ }
+ }
+
+ e.stopPropagation();
+ }
+
+ tf1.getBar().add(t1_1, t1_2, t1_3, t1_4, t1_5, t1_6);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+ var p1_4 = new qx.ui.pageview.tabview.Page(t1_4);
+ var p1_5 = new qx.ui.pageview.tabview.Page(t1_5);
+ var p1_6 = new qx.ui.pageview.tabview.Page(t1_6);
+
+ p1_1.setBackgroundColor("green");
+ p1_2.setBackgroundColor("red");
+ p1_3.setBackgroundColor("blue");
+ p1_4.setBackgroundColor("black");
+ p1_5.setBackgroundColor("yellow");
+ p1_6.setBackgroundColor("orange");
+
+ tf1.getPane().add(p1_1, p1_2, p1_3, p1_4, p1_5, p1_6);
+
+ d.add(tf1);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_1.html
new file mode 100644
index 0000000000..1fcf4b09c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table with virtual scrolling, model-view-controller, renderers,
+ editing, sorting, column resizing, column reordering,
+ column hiding.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var main = new qx.ui.layout.VerticalBoxLayout();
+ main.set({ left:10, top:30, right:300, bottom:30, spacing:5 });
+
+ var nextId = 0;
+ var createRandomRows = function(rowCount) {
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < rowCount; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ nextId++, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ return rowData;
+ };
+
+ // Create the initial data
+ var rowData = createRandomRows(50);
+
+ // Add some encoding relevant stuff
+ rowData[15][1] = "<b>A html &amp; entities escaping test</b>";
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ width:"100%", height:"1*", border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ setColumnWidth(0, 80);
+ setColumnWidth(1, 200);
+ setColumnWidth(2, 150);
+ };
+ main.add(table);
+
+ var buttonBar = new qx.ui.layout.HorizontalBoxLayout();
+ buttonBar.set({ width:"100%", height:"auto", spacing:5 });
+ main.add(buttonBar);
+
+ var button = new qx.ui.form.Button("Change row with ID 10");
+ button.addEventListener("execute", function(evt) {
+ var rowData = createRandomRows(1);
+ for (var i = 1; i < tableModel.getColumnCount(); i++) {
+ tableModel.setValue(i, 10, rowData[0][i]);
+ }
+ this.info("Row 10 changed");
+ });
+ buttonBar.add(button);
+
+ var button = new qx.ui.form.Button("Add 10 rows");
+ button.addEventListener("execute", function(evt) {
+ var rowData = createRandomRows(10);
+ tableModel.addRows(rowData);
+ this.info("10 rows added");
+ });
+ buttonBar.add(button);
+
+ var button = new qx.ui.form.Button("Remove 5 rows");
+ button.addEventListener("execute", function(evt) {
+ var rowCount = tableModel.getRowCount();
+ tableModel.removeRows(rowCount-5, 5);
+ this.info("5 rows removed");
+ });
+ buttonBar.add(button);
+
+ var checkBox = new qx.ui.form.CheckBox("keepFirstVisibleRowComplete", null, null, table.getKeepFirstVisibleRowComplete());
+ checkBox.setToolTip(new qx.ui.popup.ToolTip("Whether the the first visible row should be rendered completely when scrolling."));
+ checkBox.addEventListener("changeChecked", function(evt) {
+ table.setKeepFirstVisibleRowComplete(checkBox.getChecked());
+ this.info("Set keepFirstVisibleRowComplete to: " + checkBox.getChecked());
+ });
+ buttonBar.add(checkBox);
+
+ d.add(main);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_2.html
new file mode 100644
index 0000000000..d09cc85a96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Table_2.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table with fixed columns.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, width:350, height:300, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_1.html
new file mode 100644
index 0000000000..5fdd1836f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_1.html
@@ -0,0 +1,252 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introduce all classes needed for creating real qx.ui.toolbar.ToolBars. This includes qx.ui.toolbar.ToolBars,
+ qx.ui.toolbar.ToolBarParts, qx.ui.toolbar.Separator and qx.ui.toolbar.ToolBarButtons.</p>
+
+ <p>The qx.ui.toolbar.ToolBarButtons and QxRadioButtons in this example are beautifully
+ decoupled by "global" qx.event.type.DataEvent.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+
+ // setWidth("auto");
+ };
+
+ var btns1 = [
+ { type : "button", icon : "file-new", text : "New" },
+ { type : "separator" },
+ { type : "button", icon : "edit-copy", text : "Copy" },
+ { type : "button", icon : "edit-cut", text : "Cut" },
+ { type : "button", icon : "edit-paste", text : "Paste" }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "up", text : "Upload" },
+ { type : "button", icon : "down", text : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "help", text : "Help" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var useParts = true;
+
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.text, "icon/22/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ d.addEventListener("changeLayout", changeLayout, o);
+ d.addEventListener("changeSize", changeSize, o);
+
+ o.addEventListener("execute", buttonExecute);
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ setChecked(true);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e) {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+ // Icon Sizes
+ var b3 = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/colors.png");
+
+ with(b3)
+ {
+ setTop(140);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b3.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+
+ var b4 = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/colors.png");
+
+ with(b4)
+ {
+ setTop(170);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b4.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+
+ d.add(b3, b4);
+
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+
+
+
+ /*
+ Test for cloning support
+
+ tb2 = tb.clone(true);
+ tb2.setTop(400);
+ */
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_2.html
new file mode 100644
index 0000000000..13ccd5ba41
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_2.html
@@ -0,0 +1,269 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introducing qx.ui.toolbar.CheckBox and qx.ui.toolbar.RadioButton.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+ setParent(d);
+ };
+
+
+ var tbp1 = new qx.ui.toolbar.Part;
+ tb.add(tbp1);
+
+ var tbp2 = new qx.ui.toolbar.Part;
+ tb.add(tbp2);
+
+ var tbp3 = new qx.ui.toolbar.Part;
+ tb.add(tbp3);
+
+ var tbp4 = new qx.ui.toolbar.Part;
+ tb.add(tbp4);
+
+
+
+ // Default
+ var tbd1 = new qx.ui.toolbar.Button("Default", "icon/22/file-new.png");
+ tbp1.add(tbd1);
+ d.addEventListener("changeLayout", changeLayout, tbd1);
+ d.addEventListener("changeSize", changeSize, tbd1);
+
+ tbd1._marker = true;
+
+ tbp1.setDisplay(false);
+ tbd1.setDisplay(false);
+
+
+
+ // Checkbox
+ var tbc1 = new qx.ui.toolbar.CheckBox("Check", "icon/22/configure.png", true);
+ tbp2.add(tbc1);
+ d.addEventListener("changeLayout", changeLayout, tbc1);
+ d.addEventListener("changeSize", changeSize, tbc1);
+
+
+
+ // Radio
+ var tbr1 = new qx.ui.toolbar.RadioButton("Radio1", "icon/22/view-choose.png");
+ tbp3.add(tbr1);
+ d.addEventListener("changeLayout", changeLayout, tbr1);
+ d.addEventListener("changeSize", changeSize, tbr1);
+
+ var tbr2 = new qx.ui.toolbar.RadioButton("Radio2", "icon/22/view-detailed.png", true);
+ tbp3.add(tbr2);
+ d.addEventListener("changeLayout", changeLayout, tbr2);
+ d.addEventListener("changeSize", changeSize, tbr2);
+
+ var tbr3 = new qx.ui.toolbar.RadioButton("Radio3", "icon/22/view-icon.png");
+ tbp3.add(tbr3);
+ d.addEventListener("changeLayout", changeLayout, tbr3);
+ d.addEventListener("changeSize", changeSize, tbr3);
+
+ // Radio Mananger
+ var tbr_manager = new qx.manager.selection.RadioManager(null, [tbr1, tbr2, tbr3]);
+
+
+
+
+ // Radio
+ var tbs1 = new qx.ui.toolbar.RadioButton("Radio1", "icon/22/view-choose.png");
+ tbp4.add(tbs1);
+ tbs1.setDisableUncheck(true);
+ d.addEventListener("changeLayout", changeLayout, tbs1);
+ d.addEventListener("changeSize", changeSize, tbs1);
+
+ var tbs2 = new qx.ui.toolbar.RadioButton("Radio2", "icon/22/view-detailed.png", true);
+ tbp4.add(tbs2);
+ tbs2.setDisableUncheck(true);
+ d.addEventListener("changeLayout", changeLayout, tbs2);
+ d.addEventListener("changeSize", changeSize, tbs2);
+
+ var tbs3 = new qx.ui.toolbar.RadioButton("Radio3", "icon/22/view-icon.png");
+ tbp4.add(tbs3);
+ tbs3.setDisableUncheck(true);
+ d.addEventListener("changeLayout", changeLayout, tbs3);
+ d.addEventListener("changeSize", changeSize, tbs3);
+
+ // Radio Mananger
+ var tbs_manager = new qx.manager.selection.RadioManager(null, [tbs1, tbs2, tbs3]);
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+ // apply default layout
+ rd1.setChecked(true);
+
+
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+ // Icon Sizes
+ var b3 = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/colors.png");
+
+ with(b3)
+ {
+ setTop(140);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b3.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+
+ var b4 = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/colors.png");
+
+ with(b4)
+ {
+ setTop(170);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b4.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+
+ d.add(b3, b4);
+
+
+
+
+
+
+ var chkShowBtn1 = new qx.ui.form.CheckBox("Show First Button");
+
+ chkShowBtn1.setLocation(20, 500);
+ chkShowBtn1.addEventListener("changeChecked", function(e) {
+ tbd1.setDisplay(e.getData());
+ });
+
+ var chkShowPart1 = new qx.ui.form.CheckBox("Show First Part");
+
+ chkShowPart1.setLocation(220, 500);
+ chkShowPart1.addEventListener("changeChecked", function(e) {
+ tbp1.setDisplay(e.getData());
+ });
+
+ d.add(chkShowBtn1, chkShowPart1);
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_3.html
new file mode 100644
index 0000000000..7cb8745991
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_3.html
@@ -0,0 +1,184 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Again a nice example which shows how to use qx.ui.toolbar.ToolBar as a menubar system.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.client.Command();
+ c1.addEventListener("execute", function(e) {
+ this.debug("Execute: " + e.getData().getLabel());
+ });
+
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New", null, c1);
+ var mb1_02 = new qx.ui.menu.Button("Open", null, c1);
+ var mb1_03 = new qx.ui.menu.Button("Save", null, c1);
+ var mb1_04 = new qx.ui.menu.Button("Save as", null, c1);
+ var mb1_05 = new qx.ui.menu.Button("Close", null, c1);
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", null, c1);
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo", null, c1);
+ var mb2_02 = new qx.ui.menu.Button("Redo", null, c1);
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", c1);
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", c1);
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", c1);
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", c1);
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All", null, c1);
+ var mb2_08 = new qx.ui.menu.Button("Find", null, c1);
+ var mb2_09 = new qx.ui.menu.Button("Find Again", null, c1);
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", c1, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", c1, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", c1, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt", null, c1);
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt", null, c1);
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt", null, c1);
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt", null, c1);
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt", null, c1);
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt", null, c1);
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt", null, c1);
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt", null, c1);
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt", null, c1);
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt", null, c1);
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt", null, c1);
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt", null, c1);
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt", null, c1);
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt", null, c1);
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt", null, c1);
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second", null, c1);
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, c1, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, c1, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", null, c1);
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", null, c1);
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences", null, c1);
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window", null, c1);
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", c1, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", c1);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", c1);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window", null, c1);
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window", null, c1);
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help", null, c1);
+ var mb5_02 = new qx.ui.menu.Button("About", null, c1);
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ mb1.setTop(48);
+ mb1.setRight(335);
+ mb1.setLeft(20);
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+
+ mb1.add(mbb1, mbb2, mbb3, mbb4, mbb5);
+
+ d.add(mb1);
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_4.html
new file mode 100644
index 0000000000..28aff3030f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolBar_4.html
@@ -0,0 +1,196 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Again a nice example which shows how to use qx.ui.toolbar.ToolBar as a menubar system.</p>
+ <p>Added some parts and a new flex zone which aligns the help button to the right edge</p>
+ <p>Added some image and a qx.ui.toolbar.CheckBox, you can event combine all these features as you can easily see here.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.client.Command();
+ c1.addEventListener("execute", function(e) {
+ this.debug("Execute: " + e.getData().getLabel());
+ });
+
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New", null, c1);
+ var mb1_02 = new qx.ui.menu.Button("Open", null, c1);
+ var mb1_03 = new qx.ui.menu.Button("Save", null, c1);
+ var mb1_04 = new qx.ui.menu.Button("Save as", null, c1);
+ var mb1_05 = new qx.ui.menu.Button("Close", null, c1);
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", null, c1);
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo", null, c1);
+ var mb2_02 = new qx.ui.menu.Button("Redo", null, c1);
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", c1);
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", c1);
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", c1);
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", c1);
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All", null, c1);
+ var mb2_08 = new qx.ui.menu.Button("Find", null, c1);
+ var mb2_09 = new qx.ui.menu.Button("Find Again", null, c1);
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", c1, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", c1, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", c1, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt", null, c1);
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt", null, c1);
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt", null, c1);
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt", null, c1);
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt", null, c1);
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt", null, c1);
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt", null, c1);
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt", null, c1);
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt", null, c1);
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt", null, c1);
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt", null, c1);
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt", null, c1);
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt", null, c1);
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt", null, c1);
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt", null, c1);
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second", null, c1);
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, c1, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, c1, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", null, c1);
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", null, c1);
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences", null, c1);
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window", null, c1);
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", c1, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", c1);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", c1);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window", null, c1);
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window", null, c1);
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help", null, c1);
+ var mb5_02 = new qx.ui.menu.Button("About", null, c1);
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ mb1.setTop(48);
+ mb1.setRight(335);
+ mb1.setLeft(20);
+
+ var mp1 = new qx.ui.toolbar.Part;
+ var mp2 = new qx.ui.toolbar.Part;
+ var mp3 = new qx.ui.toolbar.Part;
+
+ mb1.add(mp1, mp2, new qx.ui.basic.HorizontalSpacer, mp3);
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1, "icon/16/file-new.png");
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2, "icon/16/edit.png");
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3, "icon/16/appearance.png");
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4, "icon/16/control-center.png");
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5, "icon/16/help.png");
+
+ var tbb1 = new qx.ui.toolbar.CheckBox("Checkbox", "icon/16/chart.png", true);
+
+ mp1.add(mbb1, mbb2);
+ mp2.add(mbb3, mbb4, tbb1);
+ mp3.add(mbb5);
+
+ d.add(mb1);
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolTip_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolTip_1.html
new file mode 100644
index 0000000000..9beebd57a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/ToolTip_1.html
@@ -0,0 +1,111 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for QxToolTips. Each qx.ui.popup.ToolTip could be assigned to any
+ instance of qx.ui.core.Widget. You could also use one qx.ui.popup.ToolTip instance
+ for multiple QxWidgets (to show the same tooltip any multiple items).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Atom("Hover me");
+ with(c1)
+ {
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c1);
+
+
+
+ var c2 = new qx.ui.basic.Atom("Hover me");
+ with(c2)
+ {
+ setTop(48);
+ setLeft(140);
+ setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c2);
+
+
+ var c3 = new qx.ui.basic.Atom("Hover me");
+ with(c3)
+ {
+ setTop(48);
+ setLeft(260);
+ setBackgroundColor(new qx.renderer.color.Color("#D1A4AD"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c3);
+
+
+ var c4 = new qx.ui.basic.Atom("Hover me");
+ with(c4)
+ {
+ setTop(48);
+ setLeft(380);
+ setBackgroundColor(new qx.renderer.color.Color("#F5E0BB"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c4);
+
+
+ var c5 = new qx.ui.basic.Atom("Hover me", "icon/32/colors.png");
+ with(c5)
+ {
+ setTop(248);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#F5E0BB"));
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setPadding(4);
+ };
+ d.add(c5);
+
+
+ var tt1 = new qx.ui.popup.ToolTip("Hello World #1");
+ c1.setToolTip(tt1);
+ c2.setToolTip(tt1);
+
+ var tt2 = new qx.ui.popup.ToolTip(null, "icon/16/help.png");
+ c3.setToolTip(tt2);
+
+ var tt3 = new qx.ui.popup.ToolTip("Hello World #3", "icon/16/help.png");
+ c4.setToolTip(tt3);
+
+ var tt4 = new qx.ui.popup.ToolTip("Such a great tooltip with a<br/>(show) timeout of 50ms.", "icon/32/bug.png");
+ c5.setToolTip(tt4);
+ tt4.setShowInterval(50);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_1.html
new file mode 100644
index 0000000000..e46e855dc2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_1.html
@@ -0,0 +1,235 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree, with user-defined icons for some nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Desktop", "icon/16/desktop.png", "icon/16/dictionary.png");
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(te1);
+
+ desktop = te1;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Files");
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Workspace");
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Network");
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash");
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Windows (C:)", "icon/16/harddrive.png");
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Documents (D:)", "icon/16/harddrive.png");
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(trs);
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Inbox");
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ posteingang = te2;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Presets");
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sent");
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash", "icon/16/trash.png");
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Data");
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Edit");
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ editieren = te2_5;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Chat");
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Pustefix");
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("TINC");
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Announce");
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Devel");
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Lists");
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Relations");
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Company");
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Questions");
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Internal");
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Products");
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Press");
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Development");
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Competition");
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Personal");
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Bugs");
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Family");
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Projects");
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Holiday");
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Big");
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ for (var i=0;i<50; i++) {
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Item " + i);
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(trs));
+ };
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Spam");
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_2.html
new file mode 100644
index 0000000000..18c7cdafa4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_2.html
@@ -0,0 +1,270 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+<p>Shows a tree, with user-defined extra fields. In this example, the extra
+fields include a left-justified icon, a checkbox between the node icon and the
+label, and a whole series of right-justified fields. Additionally, the root node may be hidden. </p>
+ </div>
+
+ <script type="text/javascript">
+ var treeRowStructure;
+
+ function stuff(vLabel, vIcon, vIconSelected)
+ {
+ treeRowStructure = qx.ui.treefullcontrol.TreeRowStructure.getInstance().newRow();
+
+ // A left-justified icon
+ if (Math.floor(Math.random() * 4) == 0)
+ {
+ obj = new qx.ui.basic.Image("icon/16/alarm.png", 16);
+ }
+ else
+ {
+ obj = new qx.ui.basic.Image(null, 16);
+ }
+ treeRowStructure.addObject(obj, true);
+
+ // Here's our indentation and tree-lines
+ treeRowStructure.addIndent();
+
+ // The standard tree icon follows
+ treeRowStructure.addIcon(
+ arguments.length >= 2 ? vIcon : "icon/16/desktop.png",
+ arguments.length >= 3 ? vIconSelected : "icon/16/dictionary.png");
+
+ // A checkbox comes right after the tree icon
+ obj = new qx.ui.form.CheckBox(
+ null, 23, null, Math.floor(Math.random() * 2) == 0 ? false : true);
+ obj.setPadding(0, 0);
+ treeRowStructure.addObject(obj, true);
+
+ // The label
+ treeRowStructure.addLabel(vLabel);
+
+ // All else should be right justified
+ obj = new qx.ui.basic.HorizontalSpacer;
+ treeRowStructure.addObject(obj, true);
+
+ // Add a file size, date and mode
+ obj = new qx.ui.basic.Label(Math.round(Math.random() * 100) + "kb");
+ obj.setWidth(50);
+ treeRowStructure.addObject(obj, true);
+ obj = new qx.ui.basic.Label(
+ "May " + Math.round(Math.random() * 30 + 1) + " 2005");
+ obj.setWidth(150);
+ treeRowStructure.addObject(obj, true);
+ obj = new qx.ui.basic.Label("-rw-r--r--");
+ obj.setWidth(80);
+ treeRowStructure.addObject(obj, true);
+
+ return treeRowStructure;
+ }
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var x = new qx.ui.basic.Atom("Test #1", "icon/16/reload.png", 16, 16);
+ x.debug("In main");
+
+ var t = new qx.ui.treefullcontrol.Tree(stuff("Root"));
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(600);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Desktop"));
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Files"));
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Workspace"));
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Network"));
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Trash"));
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(stuff("Windows (C:)", "icon/16/harddrive.png"));
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(stuff("Documents (D:)", "icon/16/harddrive.png"));
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Inbox"));
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Presets"));
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Sent"));
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Trash", "icon/16/trash.png"));
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Data"));
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(stuff("Edit"));
+
+ editieren = te2_5;
+
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Chat"));
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Pustefix"));
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("TINC"));
+
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Announce"));
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Devel"));
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(stuff("Lists"));
+
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Relations"));
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Company"));
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Questions"));
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Internal"));
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(stuff("Products"));
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(stuff("Press"));
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(stuff("Development"));
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(stuff("Competition"));
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(stuff("Personal"));
+
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Bugs"));
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Family"));
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Projects"));
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Holiday"));
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(stuff("Big"));
+
+ for (var i=0;i<50; i++) {
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(stuff("Item " + i)));
+ };
+
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(stuff("Spam"));
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(650);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+ var tHideNode = new qx.ui.form.CheckBox("Hide the root node?");
+
+ with(tHideNode) {
+ setTop(100);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tHideNode);
+
+ tHideNode.addEventListener("changeChecked", function(e) { t.setHideNode(e.getData()); });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_3.html
new file mode 100644
index 0000000000..cbbf442732
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_3.html
@@ -0,0 +1,298 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree, with user-defined icons for some nodes. This tests
+ listening for tree events. A separate alert is generated upon opening a
+ folder that has contents; when opening a folder that has no contents; and
+ closing a folder.</p><p>We also demonstrate changing the default value of
+ 'allowShowPlusMinusSymbol' so that all folders initially have a plus/minus
+ symbol. Then, upon opening an empty folder, we remove that
+ icon.</p><p>Lastly, we demonstrate in the alert presented by tree events,
+ use of the getHierarchy() method to obtain a full "path" for a tree
+ node.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ /*
+ * Reset the default of always showing the plus/minus symbol. The
+ * default is 'false'. We want to always display it for each folder
+ * (and then stop displaying it if we determine upon open that there are
+ * no contents).
+ *
+ * The changeProperty() function assumes that it is being called
+ * shortly after defineClass() is called. We therefore need to kludge
+ * qx.Proto to point to the right place.
+ *
+ * TODO: There should be a mechanism to change a property attribute
+ * without having to jump through these hoops.
+ */
+ var constructor = qx.OO.classes["qx.ui.treefullcontrol.TreeFolder"];
+ qx.Proto = constructor.prototype;
+ qx.OO.changeProperty({ name : "alwaysShowPlusMinusSymbol", type : "boolean", defaultValue : true });
+
+
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ /*
+ * All subtrees will use this root node's event listeners. Create event
+ * listeners for each of the possible events.
+ */
+ t.addEventListener("treeOpenWithContent", function(e) {
+ alert('treeOpenWithContent ' + e.getData().getHierarchy(new Array()).join("/"));
+ });
+
+ t.addEventListener("treeClose", function(e) {
+ alert('treeClose ' + e.getData().getHierarchy(new Array()).join("/"));
+ });
+
+ /*
+ * We handle opening an empty folder specially. We demonstrate how to
+ * disable the plus/minus sign once we've determined there's nothing in
+ * it. This feature might be used to dynamically retrieve the contents
+ * of the folder, and if nothing is available, indicate it by removing
+ * the plus/minus sign.
+ */
+ t.addEventListener("treeOpenWhileEmpty", function(e) {
+ alert('treeOpenWhileEmpty ' + e.getData().getHierarchy(new Array()).join("/"));
+ e.getData().setAlwaysShowPlusMinusSymbol(false);
+ });
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Desktop", "icon/16/desktop.png", "icon/16/dictionary.png");
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(te1);
+
+ desktop = te1;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Files");
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Workspace");
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Network");
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash");
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Windows (C:)", "icon/16/harddrive.png");
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Documents (D:)", "icon/16/harddrive.png");
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(trs);
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Inbox");
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ posteingang = te2;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Presets");
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sent");
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash", "icon/16/trash.png");
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Data");
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Edit");
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ editieren = te2_5;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Chat");
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Pustefix");
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("TINC");
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Announce");
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Devel");
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Lists");
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Relations");
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Company");
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Questions");
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Internal");
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Products");
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Press");
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Development");
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Competition");
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Personal");
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Bugs");
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Family");
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Projects");
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Holiday");
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Big");
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ for (var i=0;i<50; i++) {
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Item " + i);
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(trs));
+ };
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Spam");
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ var tHideNode = new qx.ui.form.CheckBox("Hide the root node?");
+
+ with(tHideNode) {
+ setTop(100);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tHideNode);
+
+ tHideNode.addEventListener("changeChecked", function(e) { t.setHideNode(e.getData()); });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_4.html
new file mode 100644
index 0000000000..b3c701f01f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/TreeFullControl_4.html
@@ -0,0 +1,384 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree and allows playing with the settings of the Tree
+ properties <i>hideNode</i> and <i>rootOpenClose</i>. Also demonstrates
+ manipulating display (or not) of tree lines at specific indentation
+ levels, using the <i>excludeSpecificTreeLines</i> property.</p>
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Desktop", "icon/16/desktop.png", "icon/16/dictionary.png");
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(te1);
+
+ desktop = te1;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Files");
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Workspace");
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Network");
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash");
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Windows (C:)", "icon/16/harddrive.png");
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Documents (D:)", "icon/16/harddrive.png");
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(trs);
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Inbox");
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ posteingang = te2;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Presets");
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sent");
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash", "icon/16/trash.png");
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Data");
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Edit");
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ editieren = te2_5;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Chat");
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Pustefix");
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("TINC");
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Announce");
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Devel");
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Lists");
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Relations");
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Company");
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Questions");
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Internal");
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Products");
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Press");
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Development");
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Competition");
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Personal");
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Bugs");
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Family");
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Projects");
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Holiday");
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Big");
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ for (var i=0;i<50; i++) {
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Item " + i);
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(trs));
+ };
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Spam");
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ var tHideNode = new qx.ui.form.CheckBox("Hide the root node?");
+
+ with(tHideNode) {
+ setTop(100);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tHideNode);
+
+ tHideNode.addEventListener("changeChecked", function(e) { t.setHideNode(e.getData()); });
+
+ var tIncludeRootOpenClose =
+ new qx.ui.form.CheckBox("Include root open/close button?");
+
+ with(tIncludeRootOpenClose) {
+ setTop(120);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tIncludeRootOpenClose);
+
+ tIncludeRootOpenClose.addEventListener("changeChecked", function(e) { t.setRootOpenClose(e.getData()); });
+
+ tExcludeTreeLines0 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 0?");
+
+ with(tExcludeTreeLines0) {
+ setTop(140);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines0);
+
+ tExcludeTreeLines0.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[0] = true;
+ } else {
+ delete(excl[0]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines1 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 1?");
+
+ with(tExcludeTreeLines1) {
+ setTop(160);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines1);
+
+ tExcludeTreeLines1.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[1] = true;
+ } else {
+ delete(excl[1]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines2 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 2?");
+
+ with(tExcludeTreeLines2) {
+ setTop(180);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines2);
+
+ tExcludeTreeLines2.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[2] = true;
+ } else {
+ delete(excl[2]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines3 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 3?");
+
+ with(tExcludeTreeLines3) {
+ setTop(200);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines3);
+
+ tExcludeTreeLines3.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[3] = true;
+ } else {
+ delete(excl[3]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines4 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 4?");
+
+ with(tExcludeTreeLines4) {
+ setTop(220);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines4);
+
+ tExcludeTreeLines4.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[4] = true;
+ } else {
+ delete(excl[4]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Tree_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Tree_1.html
new file mode 100644
index 0000000000..ef29240538
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Tree_1.html
@@ -0,0 +1,191 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree, with user-defined icons for some nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ var te1 = new qx.ui.tree.TreeFolder("Desktop", "icon/16/desktop.png", "icon/16/dictionary.png");
+ t.add(te1);
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)", "icon/16/harddrive.png");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)", "icon/16/harddrive.png");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash", "icon/16/trash.png");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i=0;i<50; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ };
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Window_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Window_1.html
new file mode 100644
index 0000000000..6d877611ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/Window_1.html
@@ -0,0 +1,308 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This is the qx.ui.window.Window widget. These should emulate the default look and behaviour of the application windows running under Microsoft Windows(TM).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.window.Window("First Window", "icon/16/bell.png");
+ w1.setSpace(20, 400, 48, 250);
+ d.add(w1);
+
+ var w2 = new qx.ui.window.Window("Second Window", "icon/16/colors.png");
+ w2.setSpace(250, "auto", 120, "auto");
+ d.add(w2);
+
+ var w3 = new qx.ui.window.Window("Third Window", "icon/16/network.png");
+ w3.setSpace(100, 300, 200, 300);
+ w3.setMaxWidth(450);
+ w3.setMaxHeight(400);
+ d.add(w3);
+
+ var wm1 = new qx.ui.window.Window("First Modal Dialog");
+ wm1.setSpace(150, 200, 150, 200);
+ wm1.setModal(true);
+ d.add(wm1);
+
+ var wm2 = new qx.ui.window.Window("Second Modal Dialog");
+ wm2.setSpace(100, 200, 100, 150);
+ wm2.setModal(true);
+ wm2.setShowClose(false);
+ d.add(wm2);
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/chart.png");
+ a1.set({ top: 4, left: 4 });
+ w1.add(a1);
+
+
+
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 10, top: 52, right: 10, bottom: 10 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Explore");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Internet");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Future");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ w1.add(tf1);
+
+
+
+ var at1 = new qx.ui.basic.Atom("Your second window", "icon/22/find.png");
+ at1.setLocation(8, 8);
+ w2.add(at1);
+
+
+
+
+ var btn1 = new qx.ui.form.Button("Open Modal Dialog 1", "icon/16/control-center.png");
+ btn1.setLocation(4, 4);
+ w3.add(btn1);
+
+ btn1.addEventListener("execute", function(e) {
+ wm1.open();
+ });
+
+
+ var btn2 = new qx.ui.form.Button("Open Modal Dialog 2", "icon/16/control-center.png");
+ btn2.setLocation(4, 4);
+ wm1.add(btn2);
+
+ btn2.addEventListener("execute", function(e) {
+ wm2.open();
+ });
+
+
+ var chkm1 = new qx.ui.form.CheckBox("Modal", null, null, true);
+ chkm1.setLocation(4, 50);
+ wm1.add(chkm1);
+
+ chkm1.addEventListener("changeChecked", function(e) {
+ wm1.setModal(e.getData());
+ });
+
+
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Settings");
+ fs1.setLocation(4, 40);
+ fs1.setRight(4);
+ fs1.setBottom(4);
+
+
+ var chk1 = new qx.ui.form.CheckBox("Show Icon");
+ chk1.setLocation(0, 0);
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ w2.setShowIcon(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Caption");
+ chk2.setLocation(0, 20);
+ chk2.setChecked(true);
+ chk2.addEventListener("changeChecked", function(e) {
+ w2.setShowCaption(e.getData());
+ });
+
+
+
+ var chk3 = new qx.ui.form.CheckBox("Resizeable");
+ chk3.setLocation(0, 50);
+ chk3.setChecked(true);
+ chk3.addEventListener("changeChecked", function(e) {
+ w2.setResizeable(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Moveable");
+ chk4.setLocation(0, 70);
+ chk4.setChecked(true);
+ chk4.addEventListener("changeChecked", function(e) {
+ w2.setMoveable(e.getData());
+ });
+
+
+
+ var chk5 = new qx.ui.form.CheckBox("Show Close");
+ chk5.setLocation(140, 0);
+ chk5.setChecked(true);
+ chk5.addEventListener("changeChecked", function(e) {
+ w2.setShowClose(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Show Maximize/Restore");
+ chk6.setLocation(140, 20);
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ w2.setShowMaximize(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Show Minimize");
+ chk7.setLocation(140, 40);
+ chk7.setChecked(true);
+ chk7.addEventListener("changeChecked", function(e) {
+ w2.setShowMinimize(e.getData());
+ });
+
+
+
+ var chk8 = new qx.ui.form.CheckBox("Allow Close");
+ chk8.setLocation(140, 70);
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ w2.setAllowClose(e.getData());
+ });
+
+ var chk9 = new qx.ui.form.CheckBox("Allow Maximize");
+ chk9.setLocation(140, 90);
+ chk9.setChecked(true);
+ chk9.addEventListener("changeChecked", function(e) {
+ w2.setAllowMaximize(e.getData());
+ });
+
+ var chk10 = new qx.ui.form.CheckBox("Allow Minimize");
+ chk10.setLocation(140, 110);
+ chk10.setChecked(true);
+ chk10.addEventListener("changeChecked", function(e) {
+ w2.setAllowMinimize(e.getData());
+ });
+
+
+
+
+ var l1 = new qx.ui.basic.Atom("Move Method", "icon/16/misc.png");
+ l1.setLocation(0, 100);
+
+ var rb1 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb1.setLocation(0, 120);
+
+ var rb2 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb2.setLocation(0, 140);
+ rb2.setChecked(true);
+
+ var rb3 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb3.setLocation(0, 160);
+
+ var rbm1 = new qx.manager.selection.RadioManager("move", [rb1, rb2, rb3]);
+
+ rbm1.addEventListener("changeSelected", function(e) {
+ w2.setMoveMethod(e.getData().getValue());
+ });
+
+
+
+
+ var l2 = new qx.ui.basic.Atom("Resize Method", "icon/16/misc.png");
+ l2.setLocation(0, 190);
+
+ var rb4 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb4.setLocation(0, 210);
+ rb4.setChecked(true);
+
+ var rb5 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb5.setLocation(0, 230);
+
+ var rb6 = new qx.ui.form.RadioButton("Lazy Opaque", "lazyopaque");
+ rb6.setLocation(0, 250);
+
+ var rb7 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb7.setLocation(0, 270);
+
+ var rbm2 = new qx.manager.selection.RadioManager("resize", [rb4, rb5, rb6, rb7]);
+
+ rbm2.addEventListener("changeSelected", function(e) {
+ w2.setResizeMethod(e.getData().getValue());
+ });
+
+
+
+
+ var chk11 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk11.setLocation(140, 140);
+ chk11.setChecked(false);
+ chk11.addEventListener("changeChecked", function(e) {
+ w2.setShowStatusbar(e.getData());
+ });
+
+
+
+
+ var btnpack = new qx.ui.form.Button("Pack Window", "icon/16/cdrom.png");
+ btnpack.setLocation(140, 170);
+ btnpack.addEventListener("execute", function(e) {
+ w2.pack();
+ });
+
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10, l1, rb1, rb2, rb3, l2, rb4, rb5, rb6, rb7, chk11, btnpack);
+ w2.add(fs1);
+
+
+ var icon1 = new qx.ui.basic.Image("icon/32/error.png");
+ var warn1 = new qx.ui.basic.Label("Do you want to delete<br/>all your personal data?");
+
+ icon1.setTop(10);
+ icon1.setLeft(10);
+
+ warn1.setTop(10);
+ warn1.setLeft(48);
+
+ var btn3 = new qx.ui.form.Button("Yes", "icon/16/button-ok.png");
+ var btn4 = new qx.ui.form.Button("No", "icon/16/button-cancel.png");
+
+ btn3.addEventListener("execute", function(e) {
+ alert("Thank you!");
+ wm2.close();
+ });
+
+ btn4.addEventListener("execute", function(e) {
+ alert("Sorry, please click 'Yes'!");
+ });
+
+ btn3.set({ bottom : 10, right : 10 });
+ btn4.set({ bottom : 10, left : 10 });
+
+ wm2.add(btn3, btn4, icon1, warn1);
+
+
+
+ // Icon & Color Themes
+ //qx.manager.object.ImageManager.getInstance().createThemeList(w3, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(w3, 4, 58);
+
+
+
+
+ w1.open();
+ w2.open();
+ w3.open();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file1.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file1.swf
new file mode 100644
index 0000000000..2e6d69a3fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file1.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file10.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file10.swf
new file mode 100644
index 0000000000..eeafa9a8f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file10.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file2.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file2.swf
new file mode 100644
index 0000000000..51c8f0ff76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file2.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file3.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file3.swf
new file mode 100644
index 0000000000..0b6b56be85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file3.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file4.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file4.swf
new file mode 100644
index 0000000000..746baa8cd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file4.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file5.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file5.swf
new file mode 100644
index 0000000000..a3333e1c31
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file5.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file6.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file6.swf
new file mode 100644
index 0000000000..2cad550081
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file6.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file7.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file7.swf
new file mode 100644
index 0000000000..b5f4eb4ddf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file7.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file8.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file8.swf
new file mode 100644
index 0000000000..54c9a11edc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file8.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file9.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file9.swf
new file mode 100644
index 0000000000..cc41ff1c10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/color/file9.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.fla b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.fla
new file mode 100644
index 0000000000..afd4bb6134
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.fla
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.swf
new file mode 100644
index 0000000000..8e0b966bca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/image/flash/fo_tester.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/index.html
new file mode 100644
index 0000000000..ac437542ac
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/example/index.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Please choose an example from above.</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_1.html
new file mode 100644
index 0000000000..0fe1f5fe72
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for empty Array creation performance</p>
+ <ol>
+ <li>Using "[]"</li>
+ <li>Using "new Array"</li>
+ <li>Using "new Array()"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ArrayCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = [];
+ };
+ };
+
+ function ArrayCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Array;
+ };
+ };
+
+ function ArrayCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Array();
+ };
+ };
+
+ new qx.dev.TimeTracker(ArrayCreate1, ArrayCreate2, ArrayCreate3);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_2.html
new file mode 100644
index 0000000000..fcc0a05a73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ArrayCreate_2.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for filled Array creation performance</p>
+ <ol>
+ <li>Using "[ values ]"</li>
+ <li>Using "new Array(values)"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ArrayCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = [ 1, 2, 3, 4, 5 ];
+ };
+ };
+
+ function ArrayCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Array(1, 2, 3, 4, 5);
+ };
+ };
+
+ new qx.dev.TimeTracker(ArrayCreate1, ArrayCreate2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_1.html
new file mode 100644
index 0000000000..006745ad12
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_1.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Create 10.000 new (non stored) objects inside a loop. Identical to LocalObject_1.html.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is quite good (~330ms for each loop), compared to the same stuff executed without the precreated stuff.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_2.html
new file mode 100644
index 0000000000..e6d2e2f9a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_2.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (globally stored). After this create 10.000 new (non stored) objects inside a loop.</p>
+ <p>Keep global storage over runtime.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is poor (~1150ms for each loop), compared to the same stuff executed without so much precreated objects (previous example).</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to LocalObject_2.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ window.store = [];
+
+ for (var i=0; i<50000; i++) {
+ window.store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_3.html
new file mode 100644
index 0000000000..7d8f9490f7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_3.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (globally stored). After this create 10.000 new (non stored) objects inside a loop.</p>
+ <p>Use removeAll to clean up global storage after first loop.</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (remove all entries) of the global storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~490ms. Not bad, but poorly compared to the version, where the storage have never exist before. (See first examples, which executes in ~350ms.)</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to LocalObject_3.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ window.store = [];
+
+ for (var i=0; i<50000; i++) {
+ window.store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ qx.lang.Array.removeAll(window.store);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_4.html
new file mode 100644
index 0000000000..57220fc846
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/GlobalObject_4.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (globally stored). After this create 10.000 new (non stored) objects inside a loop.</p>
+ <p>Overwrite global storage to clean up after first loop.</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (overwrite with null) of the global storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~350ms. Quite good. The same value as in the first example, where the data have never exist.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ window.store = [];
+
+ for (var i=0; i<50000; i++) {
+ window.store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ window.store = null;
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_1.html
new file mode 100644
index 0000000000..bca9610f11
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_1.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Create 10.000 new (non stored) objects inside a loop. Identical to GlobalObject_1.html.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is quite good (~330ms for each loop), compared to the same stuff executed without the precreated stuff.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_2.html
new file mode 100644
index 0000000000..7a98805f2c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_2.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+ <p>As the loop will be executed inside the scope of "store", the browser must keep the information about "store" with each execution of "test", even if called from the timeout.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is poor (~1150ms for each loop), compared to the same stuff executed without so much precreated objects (previous example).</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to GlobalObject_2.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_3.html
new file mode 100644
index 0000000000..ab55099694
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (remove all entries) of the local storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~490ms. Not bad, but poorly compared to the version, where the storage have never exist before. (See first examples, which executes in ~350ms.)</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to GlobalObject_3.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ qx.lang.Array.removeAll(store);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_4.html
new file mode 100644
index 0000000000..d633458e9c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_4.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+ <p>The "store" variable will be resetted after the first loop with "null".</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (overwrite with null) of the global storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~350ms. Quite good. The same value as in the first example, where the data have never exist.</p>
+ <p>Interesting because theoratically the function implemenetation of "test" is inside the scope of "store".</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ store = null;
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_5.html
new file mode 100644
index 0000000000..34f351c688
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/LocalObject_5.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+ <p>The test method is implemented outside of the scope of "store".</p>
+
+ <h1>Result</h1>
+ <p>We need no additional cleanup to get a good performance of the function. First loop is done after ~1150ms. The following loop needs ~350ms. Quite good. The same value as in the first example, where the data have never exist.</p>
+ </div>
+
+ <script type="text/javascript">
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/NumberCreate_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/NumberCreate_1.html
new file mode 100644
index 0000000000..7cdb760b62
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/NumberCreate_1.html
@@ -0,0 +1,110 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for Number creation performance</p>
+ <ol>
+ <li>Using simple number</li>
+ <li>Using parseInt</li>
+ <li>Using parseFloat</li>
+ <li>Using new with string int</li>
+ <li>Using new with string float</li>
+ <li>Using new with simple number</li>
+ <li>Using new with parseInt</li>
+ <li>Using new with parseFloat</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var n1 = "2392";
+ var n2 = "223.92";
+
+ function NumberCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = 2392;
+ };
+ };
+
+ function NumberCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = parseInt(n1);
+ };
+ };
+
+ function NumberCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = parseFloat(n2);
+ };
+ };
+
+ function NumberCreate4(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(n1);
+ };
+ };
+
+ function NumberCreate5(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(n2);
+ };
+ };
+
+ function NumberCreate6(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(2392);
+ };
+ };
+
+ function NumberCreate7(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(parseInt(n1));
+ };
+ };
+
+ function NumberCreate8(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(parseFloat(n2));
+ };
+ };
+
+ new qx.dev.TimeTracker(NumberCreate1, NumberCreate2, NumberCreate3, NumberCreate4, NumberCreate5, NumberCreate6, NumberCreate7, NumberCreate8);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_1.html
new file mode 100644
index 0000000000..d1b0c69971
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for empty Object creation performance</p>
+ <ol>
+ <li>Using "{}"</li>
+ <li>Using "new Object"</li>
+ <li>Using "new Object()"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ObjectCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = {};
+ };
+ };
+
+ function ObjectCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Object;
+ };
+ };
+
+ function ObjectCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Object();
+ };
+ };
+
+ new qx.dev.TimeTracker(ObjectCreate1, ObjectCreate2, ObjectCreate3);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_2.html
new file mode 100644
index 0000000000..8a5128e234
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectCreate_2.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for filled Object creation performance</p>
+ <ol>
+ <li>Using "{ content }"</li>
+ <li>Using "new Object; obj.key = value"</li>
+ <li>Using "new Object(); obj.key = value"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ObjectCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = {
+ key1 : 1,
+ key2 : 2,
+ key3 : 3,
+ key4 : 4,
+ key5 : 5
+ };
+ };
+ };
+
+ function ObjectCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++)
+ {
+ foo = new Object;
+
+ foo.key1 = 1;
+ foo.key2 = 2;
+ foo.key3 = 3;
+ foo.key4 = 4;
+ foo.key5 = 5;
+ };
+ };
+
+ function ObjectCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++)
+ {
+ foo = new Object();
+
+ foo.key1 = 1;
+ foo.key2 = 2;
+ foo.key3 = 3;
+ foo.key4 = 4;
+ foo.key5 = 5;
+ };
+ };
+
+ new qx.dev.TimeTracker(ObjectCreate1, ObjectCreate2, ObjectCreate3);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_1.html
new file mode 100755
index 0000000000..23106c50dc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_1.html
@@ -0,0 +1,92 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the influence of inheritance to object creation performance.</p>
+ <p>Result: Each inheritance level increases the negative effect.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function l1() {
+ this.store = true;
+ }
+
+ function l2() {
+ l1.call(this);
+ }
+ l2.prototype = new l1;
+
+ function l3() {
+ l2.call(this);
+ }
+ l3.prototype = new l2;
+
+ function l4() {
+ l3.call(this);
+ }
+ l4.prototype = new l3;
+
+ function l5() {
+ l4.call(this);
+ }
+ l5.prototype = new l4;
+
+ function l6() {
+ l5.call(this);
+ }
+ l6.prototype = new l5;
+
+
+ function t1(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l1;
+ }
+ }
+
+ function t2(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l2;
+ }
+ }
+
+ function t3(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l3;
+ }
+ }
+
+ function t4(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l4;
+ }
+ }
+
+ function t5(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l5;
+ }
+ }
+
+ function t6(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l6;
+ }
+ }
+
+ new qx.dev.TimeTracker(t1, t2, t3, t4, t5, t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_2.html
new file mode 100755
index 0000000000..64aaf7c644
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_2.html
@@ -0,0 +1,88 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the influence of inheritance to object creation performance.</p>
+ <p>Don't execute superclass constructor.</p>
+ <p>Result: No negative effect!</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function l1() {
+ this.store = true;
+ }
+
+ function l2() {
+ }
+ l2.prototype = new l1;
+
+ function l3() {
+ }
+ l3.prototype = new l2;
+
+ function l4() {
+ }
+ l4.prototype = new l3;
+
+ function l5() {
+ }
+ l5.prototype = new l4;
+
+ function l6() {
+ }
+ l6.prototype = new l5;
+
+
+ function t1(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l1;
+ }
+ }
+
+ function t2(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l2;
+ }
+ }
+
+ function t3(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l3;
+ }
+ }
+
+ function t4(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l4;
+ }
+ }
+
+ function t5(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l5;
+ }
+ }
+
+ function t6(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l6;
+ }
+ }
+
+ new qx.dev.TimeTracker(t1, t2, t3, t4, t5, t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_3.html
new file mode 100644
index 0000000000..f69a14d099
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectLevel_3.html
@@ -0,0 +1,97 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the influence of inheritance to object creation performance.</p>
+ <p>Result: Each inheritance level increases the negative effect.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function l1() {
+ this.store = true;
+ }
+
+ function l2() {
+ this._t = l1;
+ this._t();
+ }
+ l2.prototype = new l1;
+
+ function l3() {
+ this._t = l2;
+ this._t();
+ }
+ l3.prototype = new l2;
+
+ function l4() {
+ this._t = l3;
+ this._t();
+ }
+ l4.prototype = new l3;
+
+ function l5() {
+ this._t = l4;
+ this._t();
+ }
+ l5.prototype = new l4;
+
+ function l6() {
+ this._t = l5;
+ this._t();
+ }
+ l6.prototype = new l5;
+
+
+ function t1(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l1;
+ }
+ }
+
+ function t2(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l2;
+ }
+ }
+
+ function t3(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l3;
+ }
+ }
+
+ function t4(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l4;
+ }
+ }
+
+ function t5(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l5;
+ }
+ }
+
+ function t6(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l6;
+ }
+ }
+
+ new qx.dev.TimeTracker(t1, t2, t3, t4, t5, t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectSize_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectSize_1.html
new file mode 100755
index 0000000000..c80c05e976
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/ObjectSize_1.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the incluence to the performance of data using the prototype mechanism on classes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var emptyObject = function() {};
+ var protoObject1 = function() {};
+ var protoObject2 = function() {};
+
+ for (var i=0; i<1000; i++)
+ {
+ protoObject1.prototype["i" + i] = function() {
+ alert("Hello World: " + i);
+ };
+ }
+
+ for (var i=0; i<1000; i++)
+ {
+ protoObject2.prototype["i" + i] = "Hello World";
+ }
+
+ function empty(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new emptyObject;
+ }
+ }
+
+ function protos1(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new protoObject1;
+ }
+ }
+
+ function protos2(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new protoObject2;
+ }
+ }
+
+ new qx.dev.TimeTracker(empty, protos1, protos2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/Qooxdoo_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/Qooxdoo_1.html
new file mode 100644
index 0000000000..bad5574641
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/Qooxdoo_1.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qooxdoo object performance</p>
+ <ol>
+ <li>qx.core.Object</li>
+ <li>qx.core.Target</li>
+ <li>qx.event.type.Event</li>
+ <li>qx.event.type.MouseEvent</li>
+ <li>qx.ui.basic.Terminator</li>
+ <li>qx.ui.layout.CanvasLayout</li>
+ <li>qx.ui.layout.BoxLayout</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function TestObject(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.core.Object;
+ };
+ };
+
+ function TestTarget(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.core.Target;
+ };
+ };
+
+ function TestEvent(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.event.type.Event;
+ };
+ };
+
+ function TestMouseEvent(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.event.type.MouseEvent;
+ };
+ };
+
+ function TestTerminator(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.ui.basic.Terminator;
+ };
+ };
+
+ function TestCanvasLayout(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.ui.layout.CanvasLayout;
+ };
+ };
+
+ function TestBoxLayout(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.ui.layout.BoxLayout;
+ };
+ };
+
+ new qx.dev.TimeTracker(TestObject, TestTarget, TestEvent, TestMouseEvent, TestTerminator, TestCanvasLayout, TestBoxLayout);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_1.html
new file mode 100644
index 0000000000..f0d1ec901d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_1.html
@@ -0,0 +1,95 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for String Performance. Using new String instances for concat.</p>
+ <ol>
+ <li>Operator +=</li>
+ <li>Operators = and +</li>
+ <li>Concat function</li>
+ <li>Array Push</li>
+ <li>Array Index</li>
+ <li>StringBuilder Object</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function StringConcatShort(vLoops)
+ {
+ var s = "";
+
+ for (var i=0; i<vLoops; i++) {
+ s += "a";
+ };
+ };
+
+ function StringConcatShortAlt(vLoops)
+ {
+ var s = "";
+
+ for (var i=0; i<vLoops; i++) {
+ s = s + "a";
+ };
+ };
+
+ function StringConcatMethod(vLoops)
+ {
+ var s = "";
+
+ for (var i=0; i<vLoops; i++) {
+ s=s.concat("a");
+ };
+ };
+
+ function StringConcatArrayPush(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push("a");
+ };
+
+ s = s.join("");
+ };
+
+ function StringConcatArrayAdd(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s[s.length] = "a";
+ };
+
+ s = s.join("");
+ };
+
+ function StringConcatStringBuilder(vLoops)
+ {
+ var s = new qx.type.StringBuilder;
+
+ for (var i=0; i<vLoops; i++) {
+ s.add("a");
+ };
+
+ s = s.get();
+ };
+
+ new qx.dev.TimeTracker(StringConcatShort, StringConcatShortAlt,
+ StringConcatMethod, StringConcatArrayPush, StringConcatArrayAdd,
+ StringConcatStringBuilder);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_2.html
new file mode 100644
index 0000000000..d2b2c140c5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_2.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for String Performance. Using cached string instances for concat.</p>
+ <ol>
+ <li>Operator +=</li>
+ <li>Operators = and +</li>
+ <li>Concat function</li>
+ <li>Array Push</li>
+ <li>Array Index</li>
+ <li>StringBuilder Object</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var e = "";
+ var a = "a";
+
+ function StringConcatShort(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s += a;
+ };
+ };
+
+ function StringConcatShortAlt(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s = s + a;
+ };
+ };
+
+ function StringConcatMethod(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s=s.concat(a);
+ };
+ };
+
+ function StringConcatArrayPush(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push(a);
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatArrayAdd(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s[s.length] = a;
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatStringBuilder(vLoops)
+ {
+ var s = new qx.type.StringBuilder;
+
+ for (var i=0; i<vLoops; i++) {
+ s.add(a);
+ };
+
+ s = s.get();
+ };
+
+ new qx.dev.TimeTracker(StringConcatShort, StringConcatShortAlt,
+ StringConcatMethod, StringConcatArrayPush, StringConcatArrayAdd,
+ StringConcatStringBuilder);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_3.html
new file mode 100644
index 0000000000..2169b81b21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/StringConcat_3.html
@@ -0,0 +1,109 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for String Performance.</p>
+ <p>Getting an filled array of strings and try to combine them.</p>
+
+ <ol>
+ <li>Operator +=</li>
+ <li>Operators = and +</li>
+ <li>Concat function</li>
+ <li>Array Push</li>
+ <li>Array Index</li>
+ <li>Array Append</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var e = "";
+ var a = "a";
+
+ function getStringArr(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push(a);
+ };
+
+ return s;
+ };
+
+ function StringConcatShort(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s += getStringArr(vLoops).join(e);
+ };
+ };
+
+ function StringConcatShortAlt(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s = s + getStringArr(vLoops).join(e);
+ };
+ };
+
+ function StringConcatMethod(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s=s.concat(getStringArr(vLoops).join(e));
+ };
+ };
+
+ function StringConcatArrayPush(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push(getStringArr(vLoops).join(e));
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatArrayAdd(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s[s.length] = getStringArr(vLoops).join(e);
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatArrayAppend(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push.apply(s, getStringArr(vLoops));
+ };
+
+ s = s.join(e);
+ };
+
+ new qx.dev.TimeTracker(StringConcatShort, StringConcatShortAlt, StringConcatMethod, StringConcatArrayPush, StringConcatArrayAdd, StringConcatArrayAppend);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/TypeCheck_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/TypeCheck_1.html
new file mode 100644
index 0000000000..7ef0f0db13
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/TypeCheck_1.html
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for typical value checks and their performance.</p>
+ <ol>
+ <li>Typeof with Strings</li>
+ <li>Typeof with Constants</li>
+ <li>Instanceof</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var STR = "string";
+ var NR = "number";
+ var OBJ = "object";
+
+ var str = "Hello World"
+ var nr1 = 1000;
+ var nr2 = Infinity;
+ var nr3 = NaN;
+ var nr4 = 0.432;
+ var obj1 = {};
+ var obj2 = { key1 : "hello world", key2 : "hello world", key3 : "hello world" }
+
+ function typeCheckTypeof1(vLoops)
+ {
+ for (var i=0; i<vLoops; i++)
+ {
+ typeof str === "string";
+ typeof nr1 === "number";
+ typeof nr2 === "number";
+ typeof nr3 === "number";
+ typeof nr4 === "number";
+ typeof obj1 === "object";
+ typeof obj2 === "object";
+ }
+ }
+
+ function typeCheckTypeof2(vLoops)
+ {
+ for (var i=0; i<vLoops; i++)
+ {
+ typeof str === STR;
+ typeof nr1 === NR;
+ typeof nr2 === NR;
+ typeof nr3 === NR;
+ typeof nr4 === NR;
+ typeof obj1 === OBJ;
+ typeof obj2 === OBJ;
+ }
+ }
+
+ function typeCheckInstanceOf(vLoops)
+ {
+ for (var i=0; i<vLoops; i++)
+ {
+ str instanceof String
+ nr1 instanceof Number
+ nr2 instanceof Number
+ nr3 instanceof Number
+ nr4 instanceof Number
+ obj1 instanceof Object
+ obj2 instanceof Object
+ }
+ }
+
+ new qx.dev.TimeTracker(typeCheckTypeof1, typeCheckTypeof2, typeCheckInstanceOf);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/index.html
new file mode 100644
index 0000000000..ac437542ac
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/performance/index.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Please choose an example from above.</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/Showcase_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/Showcase_1.html
new file mode 100644
index 0000000000..bbfe520033
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/Showcase_1.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A small example how a webmail application can look and feel using qooxdoo.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ var dockLayout = new qx.ui.layout.DockLayout;
+
+ dockLayout.setLocation(20, 48);
+ dockLayout.setDimension(700, 500);
+ dockLayout.setBackgroundColor("white");
+ dockLayout.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ doc.add(dockLayout);
+
+ var menubar = new qx.ui.menubar.MenuBar;
+ var toolbar = new qx.ui.toolbar.ToolBar;
+ var tree = new qx.ui.tree.Tree("Inbox");
+ var status = new qx.ui.basic.Atom("Status", "icon/16/network.png");
+
+ tree.setWidth(200);
+ tree.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ tree.add(new qx.ui.tree.TreeFolder("Drafts"));
+ tree.add(new qx.ui.tree.TreeFolder("Sent"));
+ tree.add(new qx.ui.tree.TreeFolder("Trash"));
+ tree.add(new qx.ui.tree.TreeFolder("Junk"));
+
+ status.setWidth(null);
+ status.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ status.setHorizontalChildrenAlign("left");
+ status.setPadding(2, 4);
+ status.setBackgroundColor("threedface");
+
+ dockLayout.addTop(menubar);
+ dockLayout.addTop(toolbar);
+ dockLayout.addBottom(status);
+ dockLayout.addLeft(tree);
+
+
+
+ var btns = [
+ { text : "New", icon : "icon/16/mail-new.png" },
+ { text : "Send/Receive", icon : "icon/16/mail-send.png" },
+ { text : "Adressbook", icon : "icon/16/appointment.png" }
+ ];
+
+ for (var i=0; i<btns.length; i++) {
+ toolbar.add(new qx.ui.toolbar.Button(btns[i].text, btns[i].icon));
+ };
+
+
+
+ var filemnu = new qx.ui.menu.Menu;
+ var editmnu = new qx.ui.menu.Menu;
+ var optimnu = new qx.ui.menu.Menu;
+ var helpmnu = new qx.ui.menu.Menu;
+
+ filemnu.add(new qx.ui.menu.Button("New Mail"));
+ filemnu.add(new qx.ui.menu.Button("Exit"));
+
+ editmnu.add(new qx.ui.menu.Button("Cut"));
+ editmnu.add(new qx.ui.menu.Button("Copy"));
+ editmnu.add(new qx.ui.menu.Button("Paste"));
+
+ optimnu.add(new qx.ui.menu.Button("View"));
+ optimnu.add(new qx.ui.menu.Button("Settings"));
+
+ helpmnu.add(new qx.ui.menu.Button("Help"));
+ helpmnu.add(new qx.ui.menu.Button("About"));
+
+ var filemn = new qx.ui.menubar.Button("File", filemnu);
+ var editmn = new qx.ui.menubar.Button("Edit", editmnu);
+ var optimn = new qx.ui.menubar.Button("Options", optimnu);
+ var helpmn = new qx.ui.menubar.Button("Help", helpmnu);
+
+ menubar.add(filemn, editmn, optimn, new qx.ui.basic.HorizontalSpacer, helpmn);
+ doc.add(filemnu, editmnu, optimnu, helpmnu);
+
+
+
+
+
+
+
+
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<333; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ subject : { text : "Subject " + i }, from : { text : "qooxdoo User" }, date : { text : "01/26/2006" }});
+ };
+
+ var lc =
+ {
+ subject : { label : "Subject", width : 200, type : "text" },
+ from : { label : "From", width : 100, type : "text" },
+ date: { label : "Date", width : 100, type : "text" }
+ };
+
+ var view = new qx.ui.listview.ListView(ld, lc);
+
+ view.setLocation(220, 95);
+ view.setDimension(499, 430);
+ view.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+ doc.add(view);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/index.html
new file mode 100644
index 0000000000..f9f55f8058
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/showcase/index.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Please choose a showcase from above.</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_1.html
new file mode 100644
index 0000000000..f8bebf672d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_1.html
@@ -0,0 +1,286 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some speed tests for qx.ui.basic.Atom. Please regard, that many of things in the finished
+ page are modified on the already created and visible qx.ui.basic.Atom instances. This is not
+ a good example in scripting qooxdoo. It's always faster to configure a instance of qx.ui.core.Widget
+ completely, before add it to the qx.ui.core.ClientDocument or any other visible parent qx.ui.core.Widget.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL I
+ ----------------------------------------------
+ */
+
+ var la1 = new qx.ui.basic.Atom("Test No #1", "icon/16/bell.png");
+ with(la1)
+ {
+ setTop(48);
+ setLeft(20);
+ setIconPosition("left");
+ };
+ d.add(la1);
+
+
+ var la2 = new qx.ui.basic.Atom("Test No #2", "icon/16/bell.png");
+ with(la2)
+ {
+ setTop(148);
+ setLeft(20);
+ setIconPosition("right");
+ };
+ d.add(la2);
+
+
+ var la3 = new qx.ui.basic.Atom("Test No #3", "icon/16/bell.png");
+ with(la3)
+ {
+ setTop(248);
+ setLeft(20);
+ setIconPosition("top");
+ };
+ d.add(la3);
+
+
+ var la4 = new qx.ui.basic.Atom("Test No #4", "icon/16/bell.png");
+ with(la4)
+ {
+ setTop(348);
+ setLeft(20);
+ setIconPosition("bottom");
+ };
+ d.add(la4);
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL II
+ ----------------------------------------------
+ */
+
+ var lb1 = new qx.ui.basic.Atom("Test No #1", "icon/16/bell.png");
+ with(lb1)
+ {
+ setTop(48);
+ setLeft(120);
+ setIconPosition("left");
+ };
+ d.add(lb1);
+ lb1.setIconPosition("right");
+
+
+ var lb2 = new qx.ui.basic.Atom("Test No #2", "icon/16/bell.png");
+ with(lb2)
+ {
+ setTop(148);
+ setLeft(120);
+ setIconPosition("right");
+ };
+ d.add(lb2);
+ lb2.setIconPosition("left");
+
+
+ var lb3 = new qx.ui.basic.Atom("Test No #3", "icon/16/bell.png");
+ with(lb3)
+ {
+ setTop(248);
+ setLeft(120);
+ setIconPosition("top");
+ };
+ d.add(lb3);
+ lb3.setIconPosition("bottom");
+
+
+ var lb4 = new qx.ui.basic.Atom("Test No #4", "icon/16/bell.png");
+ with(lb4)
+ {
+ setTop(348);
+ setLeft(120);
+ setIconPosition("bottom");
+ };
+ d.add(lb4);
+ lb4.setIconPosition("top");
+
+
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL III
+ ----------------------------------------------
+ */
+
+ var lc1 = new qx.ui.basic.Atom("Test No #1", "icon/16/bell.png");
+ with(lc1)
+ {
+ setTop(48);
+ setLeft(220);
+ setIconPosition("left");
+ };
+ d.add(lc1);
+ lc1.setIconPosition("top");
+
+
+ var lc2 = new qx.ui.basic.Atom("Test No #2", "icon/16/bell.png");
+ with(lc2)
+ {
+ setTop(148);
+ setLeft(220);
+ setIconPosition("right");
+ };
+ d.add(lc2);
+ lc2.setIconPosition("bottom");
+
+
+ var lc3 = new qx.ui.basic.Atom("Test No #3", "icon/16/bell.png");
+ with(lc3)
+ {
+ setTop(248);
+ setLeft(220);
+ setIconPosition("top");
+ };
+ d.add(lc3);
+ lc3.setIconPosition("right");
+
+
+ var lc4 = new qx.ui.basic.Atom("Test No #4", "icon/16/bell.png");
+ with(lc4)
+ {
+ setTop(348);
+ setLeft(220);
+ setIconPosition("bottom");
+ };
+ d.add(lc4);
+ lc4.setIconPosition("left");
+
+
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL IV
+ ----------------------------------------------
+ */
+
+ var ld1 = new qx.ui.basic.Atom("Test No #1", "icon/16/bell.png");
+ with(ld1)
+ {
+ setTop(48);
+ setLeft(320);
+ setIconPosition("left");
+ };
+ d.add(ld1);
+ ld1.setIconPosition("bottom");
+
+
+ var ld2 = new qx.ui.basic.Atom("Test No #2", "icon/16/bell.png");
+ with(ld2)
+ {
+ setTop(148);
+ setLeft(320);
+ setIconPosition("right");
+ };
+ d.add(ld2);
+ ld2.setIconPosition("top");
+
+
+ var ld3 = new qx.ui.basic.Atom("Test No #3", "icon/16/bell.png");
+ with(ld3)
+ {
+ setTop(248);
+ setLeft(320);
+ setIconPosition("top");
+ };
+ d.add(ld3);
+ ld3.setIconPosition("left");
+
+
+ var ld4 = new qx.ui.basic.Atom("Test No #4", "icon/16/bell.png");
+ with(ld4)
+ {
+ setTop(348);
+ setLeft(320);
+ setIconPosition("bottom");
+ };
+ d.add(ld4);
+ ld4.setIconPosition("right");
+
+
+
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL V
+ ----------------------------------------------
+ */
+
+ var le1 = new qx.ui.basic.Atom("Test No #1", "icon/16/bell.png");
+ with(le1)
+ {
+ setTop(48);
+ setLeft(420);
+ setIconPosition("right");
+ };
+ d.add(le1);
+ le1.setIconPosition("top");
+
+
+ var le2 = new qx.ui.basic.Atom("Test No #2", "icon/16/bell.png");
+ with(le2)
+ {
+ setTop(148);
+ setLeft(420);
+ setIconPosition("left");
+ };
+ d.add(le2);
+ le2.setIconPosition("bottom");
+
+
+ var le3 = new qx.ui.basic.Atom("Test No #3", "icon/16/bell.png");
+ with(le3)
+ {
+ setTop(248);
+ setLeft(420);
+ setIconPosition("top");
+ };
+ d.add(le3);
+ le3.setIconPosition("right");
+
+
+ var le4 = new qx.ui.basic.Atom("Test No #4", "icon/16/bell.png");
+ with(le4)
+ {
+ setTop(348);
+ setLeft(420);
+ setIconPosition("bottom");
+ };
+ d.add(le4);
+ le4.setIconPosition("left");
+
+
+
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_2.html
new file mode 100644
index 0000000000..b80d6414cb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_2.html
@@ -0,0 +1,187 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Example to show correct calculations of qx.ui.basic.Atom sizes. Normally a qx.ui.basic.Atom has only the size of its content.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var w = qx.ui.core.ClientDocument.getInstance();
+
+
+ function alertoff() {
+ alert(this.getElement().offsetWidth + "x" + this.getElement().offsetHeight);
+ };
+
+ var l1 = new qx.ui.layout.CanvasLayout();
+ var l2 = new qx.ui.layout.CanvasLayout();
+
+ with(l1)
+ {
+ setTop(100);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ with(l2)
+ {
+ setTop(123);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ w.add(l1);
+ w.add(l2);
+
+
+
+ var a1 = new qx.ui.basic.Atom("Pure Text", "icon/22/folder.png");
+ var a2 = new qx.ui.basic.Atom(null, "icon/22/folder.png");
+
+ with(a1) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(100);
+ setLeft(120);
+ };
+
+ with(a2) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(100);
+ setLeft(300);
+ };
+
+ w.add(a1);
+ w.add(a2);
+
+ a1.addEventListener("click", alertoff);
+ a2.addEventListener("click", alertoff);
+
+
+
+ var l3 = new qx.ui.layout.CanvasLayout();
+ var l4 = new qx.ui.layout.CanvasLayout();
+
+ with(l3)
+ {
+ setTop(200);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ with(l4)
+ {
+ setTop(233);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ w.add(l3);
+ w.add(l4);
+
+
+ var b1 = new qx.ui.basic.Atom("Pure Text", "icon/32/network.png");
+ var b2 = new qx.ui.basic.Atom(null, "icon/32/network.png");
+
+ with(b1) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(200);
+ setLeft(120);
+ };
+
+ with(b2) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(200);
+ setLeft(300);
+ };
+
+ w.add(b1);
+ w.add(b2);
+
+ b1.addEventListener("click", alertoff);
+ b2.addEventListener("click", alertoff);
+
+
+
+
+
+
+ var l5 = new qx.ui.layout.CanvasLayout();
+ var l6 = new qx.ui.layout.CanvasLayout();
+
+ with(l5)
+ {
+ setTop(300);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ with(l6)
+ {
+ setTop(317);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ w.add(l5);
+ w.add(l6);
+
+
+ var c1 = new qx.ui.basic.Atom("Pure Text", "icon/16/network.png");
+ var c2 = new qx.ui.basic.Atom(null, "icon/16/network.png");
+
+ with(c1) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(300);
+ setLeft(120);
+ };
+
+ with(c2) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(300);
+ setLeft(300);
+ };
+
+ w.add(c1);
+ w.add(c2);
+
+ c1.addEventListener("click", alertoff);
+ c2.addEventListener("click", alertoff);
+
+
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_3.html
new file mode 100644
index 0000000000..a824bb509c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_3.html
@@ -0,0 +1,322 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Layout tests for qx.ui.basic.Atom reimplementation.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var a1 = new qx.ui.basic.Atom;
+ a1.setLabel("hello world");
+ a1.setTop(48);
+ a1.setLeft(20);
+ a1.setPadding(2, 4);
+ a1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(a1);
+
+ var a2 = new qx.ui.basic.Atom;
+ a2.setIcon("icon/32/run.png");
+ a2.setTop(48);
+ a2.setLeft(120);
+ a2.setPadding(2, 4);
+ a2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(a2);
+
+
+
+
+ var b1 = new qx.ui.basic.Atom;
+ b1.setLabel("hello world");
+ b1.setIcon("icon/32/run.png");
+ b1.setIconPosition("left");
+ b1.setTop(100);
+ b1.setLeft(20);
+ b1.setPadding(2, 4);
+ b1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b1);
+
+ var b2 = new qx.ui.basic.Atom;
+ b2.setLabel("hello world");
+ b2.setIcon("icon/32/run.png");
+ b2.setIconPosition("top");
+ b2.setTop(100);
+ b2.setLeft(120);
+ b2.setPadding(2, 4);
+ b2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b2);
+
+ var b3 = new qx.ui.basic.Atom;
+ b3.setLabel("hello world");
+ b3.setIcon("icon/32/run.png");
+ b3.setIconPosition("right");
+ b3.setTop(100);
+ b3.setLeft(220);
+ b3.setPadding(2, 4);
+ b3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b3);
+
+ var b4 = new qx.ui.basic.Atom;
+ b4.setLabel("hello world");
+ b4.setIcon("icon/32/run.png");
+ b4.setIconPosition("bottom");
+ b4.setTop(100);
+ b4.setLeft(320);
+ b4.setPadding(2, 4);
+ b4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b4);
+
+
+
+
+ var c1 = new qx.ui.basic.Atom;
+ c1.setLabel("hello world");
+ c1.setIcon("icon/32/run.png");
+ c1.setShow("icon");
+ c1.setTop(180);
+ c1.setLeft(20);
+ c1.setPadding(2, 4);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(c1);
+
+ var c2 = new qx.ui.basic.Atom;
+ c2.setLabel("hello world");
+ c2.setIcon("icon/32/run.png");
+ c2.setShow("label");
+ c2.setTop(180);
+ c2.setLeft(120);
+ c2.setPadding(2, 4);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(c2);
+
+
+
+
+
+ var d1 = new qx.ui.basic.Atom;
+ d1.setLabel("hello world");
+ d1.setIcon("icon/32/run.png");
+ d1.setShow("icon");
+ d1.setTop(250);
+ d1.setLeft(20);
+ d1.setPadding(2, 4);
+ d1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(d1);
+ d1.setShow("both");
+
+ var d2 = new qx.ui.basic.Atom;
+ d2.setLabel("hello world");
+ d2.setIcon("icon/32/run.png");
+ d2.setShow("label");
+ d2.setTop(250);
+ d2.setLeft(120);
+ d2.setPadding(2, 4);
+ d2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(d2);
+ d2.setShow("both");
+
+ var d3 = new qx.ui.basic.Atom;
+ d3.setLabel("hello world");
+ d3.setIcon("icon/32/run.png");
+ d3.setShow("none");
+ d3.setTop(250);
+ d3.setLeft(220);
+ d3.setPadding(2, 4);
+ d3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(d3);
+ d3.setShow("both");
+
+
+
+
+ var e1 = new qx.ui.basic.Atom;
+ e1.setIcon("icon/32/run.png");
+ e1.setShow("none");
+ e1.setTop(300);
+ e1.setLeft(20);
+ e1.setPadding(2, 4);
+ e1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e1);
+ e1.setShow("both");
+ e1.setLabel("hello world");
+
+ var e2 = new qx.ui.basic.Atom;
+ e2.setLabel("hello world");
+ e2.setShow("none");
+ e2.setTop(300);
+ e2.setLeft(120);
+ e2.setPadding(2, 4);
+ e2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e2);
+ e2.setShow("both");
+ e2.setIcon("icon/32/run.png");
+
+ var e3 = new qx.ui.basic.Atom;
+ e3.setShow("none");
+ e3.setTop(300);
+ e3.setLeft(220);
+ e3.setPadding(2, 4);
+ e3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e3);
+ e3.setShow("both");
+ e3.setIcon("icon/32/run.png");
+ e3.setLabel("hello world");
+
+ var e4 = new qx.ui.basic.Atom;
+ e4.setShow("none");
+ e4.setTop(300);
+ e4.setLeft(320);
+ e4.setPadding(2, 4);
+ e4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e4);
+ e4.setShow("both");
+ e4.setLabel("hello world");
+ e4.setIcon("icon/32/run.png");
+
+
+
+
+ var f1 = new qx.ui.basic.Atom;
+ f1.setLabel("hello world");
+ f1.setIcon("icon/32/run.png");
+ f1.setIconPosition("left");
+ f1.setTop(350);
+ f1.setLeft(20);
+ f1.setPadding(2, 4);
+ f1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(f1);
+ f1.setIconPosition("top");
+
+ var f2 = new qx.ui.basic.Atom;
+ f2.setLabel("hello world");
+ f2.setIcon("icon/32/run.png");
+ f2.setIconPosition("left");
+ f2.setTop(350);
+ f2.setLeft(120);
+ f2.setPadding(2, 4);
+ f2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(f2);
+ f2.setIconPosition("right");
+
+ var f3 = new qx.ui.basic.Atom;
+ f3.setLabel("hello world");
+ f3.setIcon("icon/32/run.png");
+ f3.setIconPosition("left");
+ f3.setTop(350);
+ f3.setLeft(220);
+ f3.setPadding(2, 4);
+ f3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(f3);
+ f3.setIconPosition("bottom");
+
+
+
+
+ var g1 = new qx.ui.basic.Atom;
+ g1.setLabel("hello world");
+ g1.setIcon("icon/32/run.png");
+ g1.setIconPosition("top");
+ g1.setTop(450);
+ g1.setLeft(20);
+ g1.setPadding(2, 4);
+ g1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(g1);
+ g1.setIconPosition("right");
+
+ var g2 = new qx.ui.basic.Atom;
+ g2.setLabel("hello world");
+ g2.setIcon("icon/32/run.png");
+ g2.setIconPosition("top");
+ g2.setTop(450);
+ g2.setLeft(120);
+ g2.setPadding(2, 4);
+ g2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(g2);
+ g2.setIconPosition("bottom");
+
+ var g3 = new qx.ui.basic.Atom;
+ g3.setLabel("hello world");
+ g3.setIcon("icon/32/run.png");
+ g3.setIconPosition("top");
+ g3.setTop(450);
+ g3.setLeft(220);
+ g3.setPadding(2, 4);
+ g3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(g3);
+ g3.setIconPosition("left");
+
+
+
+
+
+
+ var h1 = new qx.ui.basic.Atom;
+ h1.setLabel("hello world");
+ h1.setIcon("icon/32/run.png");
+ h1.setIconPosition("left");
+ h1.setTop(520);
+ h1.setLeft(20);
+ h1.setPadding(2, 4);
+ h1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(h1);
+ h1.setSpacing(20);
+
+
+ var h2 = new qx.ui.basic.Atom;
+ h2.setLabel("hello world");
+ h2.setIcon("icon/32/run.png");
+ h2.setIconPosition("top");
+ h2.setTop(520);
+ h2.setLeft(150);
+ h2.setPadding(2, 4);
+ h2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(h2);
+ h2.setSpacing(20);
+
+
+
+
+
+
+ var i1 = new qx.ui.basic.Atom;
+ i1.setLabel("hello world");
+ i1.setIcon("icon/32/run.png");
+ i1.setIconPosition("left");
+ i1.setTop(600);
+ i1.setLeft(20);
+ i1.setPadding(2, 4);
+ i1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i1.setHeight(150);
+ i1.setWidth(150);
+ d.add(i1);
+
+ var i2 = new qx.ui.basic.Atom;
+ i2.setLabel("hello world");
+ i2.setIcon("icon/32/run.png");
+ i2.setIconPosition("top");
+ i2.setTop(600);
+ i2.setLeft(200);
+ i2.setPadding(2, 4);
+ i2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i2.setWidth(150);
+ i2.setHeight(150);
+ d.add(i2);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_4.html
new file mode 100644
index 0000000000..a25990b900
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_4.html
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var icons = [ "clock", "colors", "date", "folder", "locale", "penguin" ];
+ var sizes = [ 16, 22, 32, 48, 64, 48, 32, 22, 16 ];
+
+ var atom;
+ var toppos = 48;
+
+ for (var j=0; j<sizes.length; j++)
+ {
+ for (var i=0; i<icons.length; i++)
+ {
+ atom = new qx.ui.basic.Atom("Atom " + (i+1) + "." + (j+1), "icon/" + sizes[j] + "/" + icons[i] + ".png");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (120 *i));
+
+ d.add(atom);
+ };
+
+ toppos += sizes[j] + 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_5.html
new file mode 100644
index 0000000000..bc05b1ee56
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_5.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Adding many qx.ui.basic.Atom widgets without setting the icon-width and -height.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom("Date", "icon/16/date.png");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_6.html
new file mode 100644
index 0000000000..910226987e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_6.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Adding many qx.ui.basic.Atom widgets setting the icon-width and -height.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom("Date", "icon/16/date.png", 16, 16);
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_7.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_7.html
new file mode 100644
index 0000000000..5be132a228
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_7.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom(null, "icon/16/date.png", 16, 16);
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_8.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_8.html
new file mode 100644
index 0000000000..a08fa5423b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_8.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom("Date");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_9.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_9.html
new file mode 100644
index 0000000000..563816f7b2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Atom_9.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ This uses qx.ui.basic.Label instead of qx.ui.basic.Atom for text only display. Stored as Atom test file
+ because this way we could compare it to the previous test file.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Label("Date");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Border_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Border_1.html
new file mode 100644
index 0000000000..6aa6af6253
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Border_1.html
@@ -0,0 +1,177 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.renderer.border.Border, a cross-browser advanced border engine.
+ Each instance of qx.renderer.border.Border allows to affect multiple QxTerminators.
+ When the one property of the qx.renderer.border.Border change, it informs all bounded
+ QxTerminators to rerender the border.</p>
+
+ <p>The qx.renderer.border.Border constructor also allows you to convert a string
+ (css-like) into and qx.renderer.border.Border instance (last example).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var c1 = new qx.ui.basic.Terminator;
+ with(c1)
+ {
+ setTop(48);
+ setLeft(20);
+ setWidth(150);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.Color("#fff"));
+ };
+ d.add(c1);
+
+ var c2 = new qx.ui.basic.Terminator;
+ with(c2)
+ {
+ setTop(48);
+ setLeft(200);
+ setWidth(150);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.Color("#fff"));
+ };
+ d.add(c2);
+
+ var b1 = new qx.renderer.border.Border;
+
+ // before set border properties
+ c1.setBorder(b1);
+
+ b1.setWidth(2);
+ b1.setStyle("solid");
+ b1.setColor(new qx.renderer.color.Color("black"));
+ b1.setBottomStyle("dotted");
+ b1.setTopColor(new qx.renderer.color.Color("blue"));
+
+ // after set border properties
+ c2.setBorder(b1);
+
+
+
+
+
+
+
+
+ var c3 = new qx.ui.basic.Terminator;
+ with(c3)
+ {
+ setTop(110);
+ setLeft(20);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c3);
+
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+
+ var c4 = new qx.ui.basic.Terminator;
+ with(c4)
+ {
+ setTop(110);
+ setLeft(80);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c4);
+
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().thinOutset);
+
+ var c5 = new qx.ui.basic.Terminator;
+ with(c5)
+ {
+ setTop(110);
+ setLeft(140);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c5);
+
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+
+ var c6 = new qx.ui.basic.Terminator;
+ with(c6)
+ {
+ setTop(110);
+ setLeft(200);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c6);
+
+ c6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+
+
+ var c7 = new qx.ui.basic.Terminator;
+ with(c7)
+ {
+ setTop(110);
+ setLeft(260);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c7);
+
+ c7.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+
+ var c8 = new qx.ui.basic.Terminator;
+ with(c8)
+ {
+ setTop(110);
+ setLeft(320);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c8);
+
+ c8.setBorder(qx.renderer.border.BorderPresets.getInstance().ridge);
+
+
+
+ var c9 = new qx.ui.basic.Terminator;
+ with(c9)
+ {
+ setTop(110);
+ setLeft(380);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c9);
+
+ var b2 = qx.renderer.border.Border.fromString("2px solid red");
+ c9.setBorder(b2);
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_1.html
new file mode 100644
index 0000000000..36bcf5f9a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_1.html
@@ -0,0 +1,283 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="testCommand" class="manualFrame">
+ <style type="text/css">
+ #testCommand{
+ position: absolute;
+ right: 335px;
+ bottom: 48px;
+ width: 350px;
+ }
+
+ .setform select{
+ font-size: 11px;
+ min-width: 75px;
+ }
+
+ .setform button{
+ font-size: 11px;
+ }
+ </style>
+
+ <table class="setform"><tbody>
+
+ <tr>
+ <td>
+ <label for="sel_orientation">Orientation:</label>
+ </td>
+ <td>
+ <select id="sel_orientation">
+ <option selected="selected">horizontal</option>
+ <option>vertical</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Width/Height:</td>
+ <td>
+ <select id="sel_width">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ <select id="sel_height">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Spacing/Padding:</td>
+ <td>
+ <select id="sel_spacing">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ <select id="sel_padding">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <label for="sel_order">Order/Stretching:</label>
+ </td>
+ <td>
+ <select id="sel_order">
+ <option selected="selected">default</option>
+ <option>reverse</option>
+ </select>
+ <select id="sel_stretch">
+ <option selected="selected">enabled</option>
+ <option>disabled</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Horizontal/Vertical Align:</td>
+ <td>
+ <select id="sel_horalg">
+ <option selected="selected">left</option>
+ <option>center</option>
+ <option>right</option>
+ </select>
+ <select id="sel_veralg">
+ <option selected="selected">top</option>
+ <option>middle</option>
+ <option>bottom</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td>
+ <button id="btn_save">Apply</button>
+ </td>
+ </tr>
+
+ </tbody></table>
+
+ <p><b>Tests</b></p>
+ <ul>
+ <li><a href="javascript:test1()">Test 1: Remove blue widget</a></li>
+ <li><a href="javascript:test2()">Test 2: Add blue widget</a></li>
+ <li><a href="javascript:test3()">Test 3: Add blue widget at position 2</a></li>
+ <li><a href="javascript:test4()">Test 4: Add blue widget at position 4</a></li>
+ <li><a href="javascript:test5()">Test 5: Add green widget at before the cdrom</a></li>
+ <li><a href="javascript:test6()">Test 6: Add green widget at after the color palette</a></li>
+ <li><a href="javascript:test7()">Test 7: Add new widget to layout</a></li>
+ </ul>
+ </div>
+
+ <div id="demoDescription">
+ <p>Now something more complex. Try to configure multiple things and then press &lt;apply&gt;.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ var bl, w1, w2, w3, w4, w5, w6, w7, w8;
+
+ var _b = document.getElementById("btn_save");
+ var _t = document.getElementById("sel_orientation");
+ var _w = document.getElementById("sel_width");
+ var _h = document.getElementById("sel_height");
+ var _s = document.getElementById("sel_spacing");
+ var _p = document.getElementById("sel_padding");
+ var _o = document.getElementById("sel_order");
+ var _r = document.getElementById("sel_stretch");
+ var _l = document.getElementById("sel_horalg");
+ var _v = document.getElementById("sel_veralg");
+
+ function save()
+ {
+ var vt = _t.options[_t.selectedIndex].firstChild.nodeValue;
+ var vw = _w.options[_w.selectedIndex].firstChild.nodeValue;
+ var vh = _h.options[_h.selectedIndex].firstChild.nodeValue;
+ var vs = _s.options[_s.selectedIndex].firstChild.nodeValue;
+ var vp = _p.options[_p.selectedIndex].firstChild.nodeValue;
+ var vo = _o.options[_o.selectedIndex].firstChild.nodeValue;
+ var vr = _r.options[_r.selectedIndex].firstChild.nodeValue;
+ var vl = _l.options[_l.selectedIndex].firstChild.nodeValue;
+ var vv = _v.options[_v.selectedIndex].firstChild.nodeValue;
+
+ bl.setOrientation(vt);
+ bl.setWidth(vw == "auto" ? vw : parseInt(vw));
+ bl.setHeight(vh == "auto" ? vh : parseInt(vh));
+ bl.setSpacing(parseInt(vs));
+ bl.setPadding(parseInt(vp));
+ bl.setReverseChildrenOrder(vo == "reverse");
+ bl.setStretchChildrenOrthogonalAxis(vr == "enabled");
+ bl.setHorizontalChildrenAlign(vl);
+ bl.setVerticalChildrenAlign(vv);
+ };
+
+ if (_b.attachEvent)
+ _b.attachEvent("onclick", save);
+ else if (_b.addEventListener)
+ _b.addEventListener("click", save, false);
+
+
+ function test1()
+ {
+ bl.remove(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test2()
+ {
+ bl.add(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test3()
+ {
+ bl.addAt(w2, 2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test4()
+ {
+ bl.addAt(w2, 4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test5()
+ {
+ bl.addBefore(w3, w7);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test6()
+ {
+ bl.addAfter(w3, w4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test7()
+ {
+ bl.addAt(w8, 1);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ bl = new qx.ui.layout.BoxLayout("horizontal");
+ bl.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ bl.setBackgroundColor(new qx.renderer.color.Color("white"));
+ bl.setWidth(250);
+ bl.setHeight(250);
+ bl.setTop(48);
+ bl.setLeft(20);
+
+ w1 = new qx.ui.layout.CanvasLayout;
+ w1.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w1.setMinWidth(20);
+ w1.setMinHeight(20);
+ w1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w2 = new qx.ui.layout.CanvasLayout;
+ w2.setBackgroundColor(new qx.renderer.color.Color("blue"));
+ w2.setMinWidth(20);
+ w2.setMinHeight(20);
+ w2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w3 = new qx.ui.layout.CanvasLayout;
+ w3.setBackgroundColor(new qx.renderer.color.Color("green"));
+ w3.setMinWidth(20);
+ w3.setMinHeight(20);
+ w3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w4 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ w5 = new qx.ui.layout.CanvasLayout;
+ w5.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w5.setMinWidth(20);
+ w5.setMinHeight(20);
+ w5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w6 = new qx.ui.layout.CanvasLayout;
+ w6.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w6.setMinWidth(20);
+ w6.setMinHeight(20);
+ w6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w7 = new qx.ui.basic.Image("icon/64/cdrom.png");
+
+ w8 = new qx.ui.layout.CanvasLayout;
+ w8.setBackgroundColor(new qx.renderer.color.Color("fuchsia"));
+ w8.setMinWidth(20);
+ w8.setMinHeight(20);
+ w8.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ bl.add(w1, w2, w3, w4, w5, w6, w7);
+ d.add(bl);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_2.html
new file mode 100644
index 0000000000..ead48a1f0c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/BoxLayout_2.html
@@ -0,0 +1,324 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="testCommand" class="manualFrame">
+ <style type="text/css">
+ #testCommand{
+ position: absolute;
+ right: 335px;
+ bottom: 48px;
+ width: 350px;
+ }
+
+ .setform select{
+ font-size: 11px;
+ min-width: 75px;
+ }
+
+ .setform button{
+ font-size: 11px;
+ }
+ </style>
+
+ <table class="setform"><tbody>
+
+ <tr>
+ <td>
+ <label for="sel_orientation">Orientation:</label>
+ </td>
+ <td>
+ <select id="sel_orientation">
+ <option selected="selected">horizontal</option>
+ <option>vertical</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Width/Height:</td>
+ <td>
+ <select id="sel_width">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ <select id="sel_height">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Spacing/Padding:</td>
+ <td>
+ <select id="sel_spacing">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ <select id="sel_padding">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <label for="sel_order">Order/Stretching:</label>
+ </td>
+ <td>
+ <select id="sel_order">
+ <option selected="selected">default</option>
+ <option>reverse</option>
+ </select>
+ <select id="sel_stretch">
+ <option selected="selected">enabled</option>
+ <option>disabled</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Horizontal/Vertical Align:</td>
+ <td>
+ <select id="sel_horalg">
+ <option selected="selected">left</option>
+ <option>center</option>
+ <option>right</option>
+ </select>
+ <select id="sel_veralg">
+ <option selected="selected">top</option>
+ <option>middle</option>
+ <option>bottom</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td>
+ <button id="btn_save">Apply</button>
+ </td>
+ </tr>
+
+ </tbody></table>
+
+ <p><b>Tests</b></p>
+ <ul>
+ <li><a href="javascript:test1()">Test 1: Remove blue widget</a></li>
+ <li><a href="javascript:test2()">Test 2: Add blue widget</a></li>
+ <li><a href="javascript:test3()">Test 3: Add blue widget at position 2</a></li>
+ <li><a href="javascript:test4()">Test 4: Add blue widget at position 4</a></li>
+ <li><a href="javascript:test5()">Test 5: Add green widget at before the cdrom</a></li>
+ <li><a href="javascript:test6()">Test 6: Add green widget at after the color palette</a></li>
+ <li><a href="javascript:test7()">Test 7: Add new widget to layout</a></li>
+ </ul>
+ </div>
+
+ <div id="demoDescription">
+ <p>Now something more complex. Try to configure multiple things and then press &lt;apply&gt;.</p>
+ <p>Added initial support for children align override: Try to click on the color palette.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ var bl, w1, w2, w3, w4, w5, w6, w7, w8;
+
+ var _b = document.getElementById("btn_save");
+ var _t = document.getElementById("sel_orientation");
+ var _w = document.getElementById("sel_width");
+ var _h = document.getElementById("sel_height");
+ var _s = document.getElementById("sel_spacing");
+ var _p = document.getElementById("sel_padding");
+ var _o = document.getElementById("sel_order");
+ var _r = document.getElementById("sel_stretch");
+ var _l = document.getElementById("sel_horalg");
+ var _v = document.getElementById("sel_veralg");
+
+ function save()
+ {
+ var vt = _t.options[_t.selectedIndex].firstChild.nodeValue;
+ var vw = _w.options[_w.selectedIndex].firstChild.nodeValue;
+ var vh = _h.options[_h.selectedIndex].firstChild.nodeValue;
+ var vs = _s.options[_s.selectedIndex].firstChild.nodeValue;
+ var vp = _p.options[_p.selectedIndex].firstChild.nodeValue;
+ var vo = _o.options[_o.selectedIndex].firstChild.nodeValue;
+ var vr = _r.options[_r.selectedIndex].firstChild.nodeValue;
+ var vl = _l.options[_l.selectedIndex].firstChild.nodeValue;
+ var vv = _v.options[_v.selectedIndex].firstChild.nodeValue;
+
+ bl.setOrientation(vt);
+ bl.setWidth(vw == "auto" ? vw : parseInt(vw));
+ bl.setHeight(vh == "auto" ? vh : parseInt(vh));
+ bl.setSpacing(parseInt(vs));
+ bl.setPadding(parseInt(vp));
+ bl.setReverseChildrenOrder(vo == "reverse");
+ bl.setStretchChildrenOrthogonalAxis(vr == "enabled");
+ bl.setHorizontalChildrenAlign(vl);
+ bl.setVerticalChildrenAlign(vv);
+ };
+
+ if (_b.attachEvent)
+ _b.attachEvent("onclick", save);
+ else if (_b.addEventListener)
+ _b.addEventListener("click", save, false);
+
+
+ function test1()
+ {
+ bl.remove(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test2()
+ {
+ bl.add(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test3()
+ {
+ bl.addAt(w2, 2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test4()
+ {
+ bl.addAt(w2, 4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test5()
+ {
+ bl.addBefore(w3, w7);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test6()
+ {
+ bl.addAfter(w3, w4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test7()
+ {
+ bl.addAt(w8, 3);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ bl = new qx.ui.layout.BoxLayout("horizontal");
+ bl.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ bl.setBackgroundColor(new qx.renderer.color.Color("white"));
+ bl.setWidth(250);
+ bl.setHeight(250);
+ bl.setTop(48);
+ bl.setLeft(20);
+
+ w1 = new qx.ui.layout.CanvasLayout;
+ w1.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w1.setMinWidth(20);
+ w1.setMinHeight(20);
+ w1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1.setAllowStretchX(false);
+ w1.setAllowStretchY(false);
+ w1.setVerticalAlign("middle");
+ w1.setHorizontalAlign("center");
+
+ w2 = new qx.ui.layout.CanvasLayout;
+ w2.setBackgroundColor(new qx.renderer.color.Color("blue"));
+ w2.setMinWidth(20);
+ w2.setMinHeight(20);
+ w2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2.setAllowStretchX(false);
+ w2.setHorizontalAlign("center");
+
+ w3 = new qx.ui.layout.CanvasLayout;
+ w3.setBackgroundColor(new qx.renderer.color.Color("green"));
+ w3.setMinWidth(20);
+ w3.setMinHeight(20);
+ w3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3.setAllowStretchY(false);
+ w3.setVerticalAlign("middle");
+
+ w4 = new qx.ui.basic.Image("icon/32/colors.png");
+ w4.setVerticalAlign("bottom");
+ w4.setHorizontalAlign("right");
+
+ w5 = new qx.ui.layout.CanvasLayout;
+ w5.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w5.setMinWidth(20);
+ w5.setMinHeight(20);
+ w5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w6 = new qx.ui.layout.CanvasLayout;
+ w6.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w6.setMinWidth(20);
+ w6.setMinHeight(20);
+ w6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w7 = new qx.ui.basic.Image("icon/64/cdrom.png");
+ w7.setVerticalAlign("middle");
+ w7.setHorizontalAlign("center");
+
+ w8 = new qx.ui.layout.CanvasLayout;
+ w8.setBackgroundColor(new qx.renderer.color.Color("fuchsia"));
+ w8.setMinWidth(20);
+ w8.setMinHeight(20);
+ w8.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+
+ w4.addEventListener("click", function()
+ {
+ var h, v;
+
+ switch(this.getHorizontalAlign())
+ {
+ case "center":
+ h = "right";
+ v = "bottom";
+ break;
+
+ case "right":
+ h = "left";
+ v = "top";
+ break;
+
+ default:
+ h = "center";
+ v = "middle";
+ };
+
+ this.setHorizontalAlign(h);
+ this.setVerticalAlign(v);
+ });
+
+
+
+ bl.add(w1, w2, w3, w4, w5, w6, w7);
+ d.add(bl);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_1.html
new file mode 100644
index 0000000000..baa29c31aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.client.Builder().build(qx.ui.core.ClientDocument.getInstance(), document.getElementById('widgets'));
+ });
+
+ // test delegate object
+ var d = {
+ hello : 'world',
+ click : function(e) {
+ alert(e + '\n\nclick received at delegate object\n\n' + this.hello);
+ }
+ }
+
+ // test delegate function
+ var f = function(e) {
+ alert(e + '\n\nclick received at delegate function\n\n');
+ }
+ </script>
+ <div id="demoDescription">
+ <p>qx.client.Builder demo.</p>
+ <p>Build your web apps using qooxdooml.</p>
+ <p>Textarea example</p>
+ </div>
+ <textarea id='widgets' style='display:none'>
+ <qx.client.builder.Container>
+ <qx.ui.form.Button id='btn' label='Click Me!!!' location='20,50'>
+
+ <!-- function body event listener -->
+ <qx.client.builder.EventListener type='click' args='event'>
+ btn.setLabel(btn.getLabel() + ".");
+ alert(event + "\n\nClicked on: " + this.getLabel());
+ </qx.client.builder.EventListener>
+
+ <!--
+ global object.method delegation
+ when the button is clicked, d.click(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='d.click'/>
+
+ <!--
+ global function delegation
+ when the button is clicked, f(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='f'/>
+
+ </qx.ui.form.Button>
+ <qx.ui.basic.Atom id='atom1' label='Test No #1' icon='icon/16/penguin.png' border='qx.renderer.border.BorderPresets.getInstance().black' location='20,90'/>
+
+ <qx.ui.form.Button label='Test No #2' icon='icon/16/penguin.png' location='20,120'>
+ <qx.client.builder.EventListener type='click'>
+ atom1.setLabel(atom1.getLabel() + ".");
+ </qx.client.builder.EventListener>
+ </qx.ui.form.Button>
+ <qx.ui.basic.Atom label='Test No #3' icon='icon/16/penguin.png' location='20,160'/>
+ <qx.ui.basic.Atom label='a' icon='icon/16/penguin.png' location='20,200'/>
+ <qx.ui.basic.Atom label='b' icon='icon/16/penguin.png' location='20,240'/>
+ </qx.client.builder.Container>
+ </textarea>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.html
new file mode 100644
index 0000000000..720e02f5dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.client.Builder().buildFromUrl(qx.ui.core.ClientDocument.getInstance(), 'Builder_2.xml');
+ });
+ </script>
+ <div id="demoDescription">
+ <p>qx.client.Builder demo.</p>
+ <p>Build your web apps using qooxdooml.</p>
+ <p>XmlHttp Example</p>
+ </div>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.xml
new file mode 100644
index 0000000000..84b1adf62f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_2.xml
@@ -0,0 +1,51 @@
+<qx.client.builder.Container>
+ <qx.ui.form.Button id='btn' label='Click Me!!!' location='20,50'>
+
+ <!-- function body event listener -->
+ <qx.client.builder.EventListener type='click' args='event'>
+ btn.setLabel(btn.getLabel() + ".");
+ alert(event + "\n\nClicked on: " + this.getLabel());
+ </qx.client.builder.EventListener>
+
+ <!--
+ global object.method delegation
+ when the button is clicked, d.click(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='d.click'/>
+
+ <!--
+ global function delegation
+ when the button is clicked, f(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='f'/>
+
+ </qx.ui.form.Button>
+ <qx.ui.basic.Atom id='atom1' label='Test No #1' icon='icon/16/penguin.png' border='qx.renderer.border.Border.presets.black' location='20,90'/>
+
+ <qx.ui.form.Button label='Test No #2' icon='icon/16/penguin.png' location='20,120'>
+ <qx.client.builder.EventListener type='click'>
+ atom1.setLabel(atom1.getLabel() + ".");
+ </qx.client.builder.EventListener>
+ </qx.ui.form.Button>
+
+ <qx.ui.basic.Atom label='Test No #3' icon='icon/16/penguin.png' location='20,160'/>
+
+ <qx.ui.basic.Atom label='a' icon='icon/16/penguin.png' location='20,200'/>
+ <qx.ui.basic.Atom label='b' icon='icon/16/penguin.png' location='20,240'/>
+
+
+ <qx.client.builder.Script>
+ // test delegate function
+ var f = function(e) {
+ alert(e + '\n\nclick received at delegate function\n\n');
+ }
+
+ // test delegate object
+ var d = {
+ hello : 'world',
+ click : function(e) {
+ alert(e + '\n\nclick received at delegate object\n\n' + this.hello);
+ }
+ }
+ </qx.client.builder.Script>
+</qx.client.builder.Container>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.html
new file mode 100644
index 0000000000..e3d4b0b39e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.client.Builder().buildFromUrl(qx.ui.core.ClientDocument.getInstance(), 'Builder_3.xml');
+ });
+ </script>
+ <div id="demoDescription">
+ <p>qx.client.Builder demo.</p>
+ <p>Build your web apps using qooxdooml.</p>
+ <p>Property Editor Example</p>
+ </div>
+</body>
+</html>
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.xml
new file mode 100644
index 0000000000..b5fd8b331c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_3.xml
@@ -0,0 +1,33 @@
+<qx.client.builder.Container>
+ <qx.ui.menu.Menu id='m2'>
+ <qx.ui.menu.MenuButton label='New Window'/>
+ <qx.ui.menu.MenuButton label='Overlapping'/>
+ <qx.ui.menu.MenuButton label='Split Vertical'/>
+ <qx.ui.menu.MenuButton label='Split Horizontal'/>
+ <qx.ui.menu.MenuButton label='Next Window'/>
+ <qx.ui.menu.MenuButton label='Previous Window'/>
+ </qx.ui.menu.Menu>
+
+ <qx.ui.menu.Menu id='m1'>
+ <qx.ui.menu.MenuButton label='View/Lists'/>
+ <qx.ui.menu.MenuButton label='Syntax Highlighting'/>
+ <qx.ui.menu.MenuSeparator/>
+ <qx.ui.menu.MenuButton label='Window Font'/>
+ <qx.ui.menu.MenuButton label='Printer Font' menu='m2'/>
+ </qx.ui.menu.Menu>
+
+ <qx.ui.form.Button id='btn' label='Reference Property' location='20,48'>
+ <qx.client.builder.EventListener type='click' args='e'>
+ var el = this.getElement();
+ m1.setLeft(qx.dom.DomLocation.getPageBoxLeft(el));
+ m1.setTop(qx.dom.DomLocation.getPageBoxBottom(el)); ;
+ m1.show();
+ e.setPropagationStopped(true);
+ </qx.client.builder.EventListener>
+ <qx.client.builder.EventListener type='mousedown' args='e'>
+ e.setPropagationStopped(true);
+ </qx.client.builder.EventListener>
+ </qx.ui.form.Button>
+
+ <qx.ui.basic.Atom label='Comma Delimited Property &amp; Eval Property ' location='140,48' backgroundColor='#BDD2EF' dimension='220,220' border='qx.renderer.border.Border.presets.outset'/>
+</qx.client.builder.Container>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_4.html
new file mode 100644
index 0000000000..70dffb5345
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Builder_4.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.client.Builder().build(qx.ui.core.ClientDocument.getInstance(), document.getElementById('widgets'));
+ });
+ </script>
+ <div id="demoDescription">
+ <p>qx.client.Builder demo.</p>
+ <p>2 Format Example</p>
+ </div>
+ <textarea id='widgets' style='display:none'>
+ <qx.client.builder.Container>
+ <qx.ui.basic.Atom id="linfo" label="Current Value" icon="icon/16/forward.png" border="qx.renderer.border.BorderPresets.getInstance().black" padding="2,4" backgroundColor="white" top="48" left="20"/>
+ <qx.manager.selection.RadioManager id='_rm1' name="mygroup">
+ <qx.client.builder.EventListener type='changeSelected' args='e'>
+ linfo.setLabel("Current Value: \"" + e.getData().getLabel() + "\" (" + e.getData().getValue() + ")");
+ </qx.client.builder.EventListener>
+ </qx.manager.selection.RadioManager>
+ <qx.ui.form.RadioButton qxtype="radioButton" label="Option #1" value="rb1" location="20,80" manager="_rm1"/>
+ <qx.ui.form.RadioButton label="Option #2" value="rb2" location="20,110" manager="_rm1" checked="true"/>
+ <div qxtype="qx.ui.form.RadioButton" label="Top RadioButton" value="rb3" location="20,160" manager="_rm1" iconPosition="top"/>
+ <qx.ui.form.RadioButton label="Bottom RadioButton" value="rb4" location="160,160" manager="_rm1" iconPosition="bottom"/>
+ <qx.ui.form.RadioButton label="Left RadioButton" value="rb5" location="20,220" manager="_rm1" iconPosition="left"/>
+ <qx.ui.form.RadioButton label="Right RadioButton" value="rb6" location="160,220" manager="_rm1" iconPosition="right"/>
+ <qx.ui.form.RadioButton value="rb7" location="20,280" manager="_rm1"/>
+ </qx.client.builder.Container>
+ </textarea>
+</body>
+</html>
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Button_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Button_1.html
new file mode 100644
index 0000000000..b6c0368212
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Button_1.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the new flash support for QxButtons (inherited from qx.ui.basic.Atom).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var a;
+
+ for (var i=1; i<11; i++)
+ {
+ var b = new qx.ui.form.Button("Flash Button #" + i, "icon/16/reload.png", 16, 16, "./image/flash/color/file" + i + ".swf");
+
+ b.setTop(48 + ((i-1)*30));
+ b.setLeft(20);
+
+ d.add(b);
+ };
+
+ var b = new qx.ui.form.Button("Big Rotated", "icon/48/reload.png", 48, 48, "./image/flash/color/file3.swf");
+
+ b.setTop(48);
+ b.setLeft(200);
+ b.setIconPosition("top");
+
+ d.add(b);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CSS_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CSS_1.html
new file mode 100644
index 0000000000..c49016803d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CSS_1.html
@@ -0,0 +1,110 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+
+ <style type="text/css">
+
+ .box {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ left: 30px;
+ top: 40px;
+ color: white;
+ padding: 5px;
+ }
+
+ #box1 {
+ background-color: red;
+ }
+
+ #box2 {
+ background-color: blue;
+ top: 200px;
+ left: 100px;
+ }
+
+ </style>
+
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests of qx.dom.StyleSheet</p>
+ </div>
+
+
+ <div id="box1" class="box">
+ Box 1
+ </div>
+
+ <div id="box2" class="box">
+ Box 2
+ </div>
+
+ <div style="display:none" id="control">
+ <p>
+ <h3>Box 1</h3>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.addRule(sheet, '#box1', 'background-color:green !important');">qx.dom.StyleSheet.addRule(style, '#box1', 'background-color:green !important')</a> <br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.removeRule(sheet, '#box1');">qx.dom.StyleSheet.removeRule(sheet, '#box1')</a> <br>
+ </p>
+ <h3>Box 1</h3>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.addRule(sheet, '#box2', 'background-color:yellow !important');">qx.dom.StyleSheet.addRule(style, '#box2', 'background-color:yellow !important')</a> <br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.removeRule(sheet, '#box2');">qx.dom.StyleSheet.removeRule(sheet, '#box2')</a> <br>
+ <p>
+ <h3>All</h3>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.removeAllRules(sheet)">qx.dom.StyleSheet.removeAllRules(sheet)</a> <br>
+ </p>
+ <p>
+ <h3>Import</h3>
+ add Import <br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.addImport(sheet, 'bigFont.css')">qx.dom.StyleSheet.addImport(sheet, 'bigFont.css')</a> <br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.addImport(sheet, 'boldFont.css')">qx.dom.StyleSheet.addImport(sheet, 'boldFont.css')</a> <br>
+ remove Import<br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.removeImport(sheet, 'bigFont.css')">qx.dom.StyleSheet.removeImport(sheet, 'bigFont.css')</a> <br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.removeImport(sheet, 'boldFont.css')">qx.dom.StyleSheet.removeImport(sheet, 'boldFont.css')</a> <br>
+ remove all Imports<br>
+ <a href="javascript://" onclick="qx.dom.StyleSheet.removeAllImports(sheet)">qx.dom.StyleSheet.removeAllImports(sheet)</a> <br>
+ </p>
+
+ </div>
+
+ <script type="text/javascript">
+
+ var sheet = qx.dom.StyleSheet.createElement();
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var ct1 = new qx.ui.basic.Label(document.getElementById("control").innerHTML);
+
+ with(ct1)
+ {
+ setWidth(450);
+ setRight(335);
+
+ setHeight(null);
+ setTop(48);
+ setBottom(48);
+
+ setOverflow("auto");
+
+ setBackgroundColor(new qx.renderer.color.Color("white"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ setPadding(10);
+ };
+
+ d.add(ct1);
+ });
+
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_1.html
new file mode 100644
index 0000000000..99bea2215f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_1.html
@@ -0,0 +1,616 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.layout.CanvasLayout;
+
+ w1.setWidth(100);
+ w1.setHeight(100);
+ w1.setLeft(100);
+ w1.setTop(100);
+ w1.setBackgroundColor(new qx.renderer.color.Color("red"));
+
+ d.add(w1);
+
+
+
+
+
+
+ var w2 = new qx.ui.layout.CanvasLayout;
+
+ w2.setWidth("25%");
+ w2.setHeight(100);
+ w2.setLeft(200);
+ w2.setTop(200);
+ w2.setBackgroundColor(new qx.renderer.color.Color("blue"));
+
+ d.add(w2);
+
+
+
+ var w3 = new qx.ui.layout.CanvasLayout;
+
+ w3.setRight(400);
+ w3.setHeight(100);
+ w3.setLeft(300);
+ w3.setTop(300);
+ w3.setBackgroundColor(new qx.renderer.color.Color("green"));
+
+ d.add(w3);
+
+
+
+
+
+ var w4 = new qx.ui.layout.CanvasLayout;
+
+ w4.setLeft(10);
+ w4.setRight(10);
+ w4.setTop(10);
+ w4.setBottom(10);
+ w4.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ w2.add(w4);
+
+
+
+
+
+ var w5 = new qx.ui.layout.CanvasLayout;
+
+ w5.setLeft(0);
+ w5.setTop(0);
+ w5.setWidth("50%");
+ w5.setHeight(50);
+ w5.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ w3.add(w5);
+
+
+
+
+ var w6 = new qx.ui.layout.CanvasLayout;
+
+ w6.setBottom(50);
+ w6.setLeft(350);
+ w6.setHeight("30%");
+ w6.setWidth(50);
+ w6.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w6.setZIndex(100);
+ w6.setMinHeight(100);
+ w6.setMaxHeight(150);
+
+ d.add(w6);
+
+
+
+ var w7 = new qx.ui.layout.CanvasLayout;
+
+ w7.setTop(150);
+ w7.setLeft(20);
+ w7.setWidth(100);
+ w7.setHeight(100);
+ w7.setBackgroundColor(new qx.renderer.color.Color("aqua"));
+ w7.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ d.add(w7);
+
+
+
+ var w8 = new qx.ui.layout.CanvasLayout;
+
+ w8.setTop(280);
+ w8.setLeft(20);
+ w8.setWidth("auto");
+ w8.setHeight("auto");
+ w8.setBackgroundColor(new qx.renderer.color.Color("fuchsia"));
+ w8.setBorder(new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black")));
+ w8.setPaddingTop(10);
+
+ //w8.getBorder().setLeftWidth(20);
+ //w8.getBorder().setLeftWidth(0);
+
+ // d.add(w8);
+
+
+ var w9 = new qx.ui.layout.CanvasLayout;
+
+ w9.setTop(0);
+ w9.getLeft(0);
+ w9.setWidth(40);
+ w9.setHeight(20);
+ w9.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ w8.add(w9);
+
+
+
+ var w10 = new qx.ui.layout.CanvasLayout;
+
+ w10.setTop(0);
+ w10.getLeft(0);
+ w10.setWidth(10);
+ w10.setHeight(50);
+ w10.setBackgroundColor(new qx.renderer.color.Color("red"));
+
+ w8.add(w10);
+
+ d.add(w8);
+
+
+
+
+
+
+ var w11 = new qx.ui.layout.CanvasLayout;
+
+ w11.setTop(200);
+ w11.setLeft(40);
+ w11.setWidth("auto");
+ w11.setHeight("auto");
+ w11.setBackgroundColor(new qx.renderer.color.Color("green"));
+ w11.setDisplay(false);
+ w11.setBorder(qx.renderer.border.BorderPresets.getInstance().white);
+ w11.setPaddingLeft(20);
+
+ d.add(w11);
+
+ w8.addEventListener("click", function(e) {
+ w11.toggleDisplay();
+ });
+
+
+ /*
+ w11.addEventListener("show", function(e) {
+ this.debug("Show W11");
+ });
+
+ w11.addEventListener("hide", function(e) {
+ this.debug("Hide W11");
+ });
+ */
+
+
+ var w12 = new qx.ui.basic.Image("icon/64/energy.png");
+ w11.add(w12);
+
+
+
+
+ var w12 = new qx.ui.basic.Image("icon/48/clock.png");
+
+ w12.setTop(350);
+ w12.setLeft(20);
+
+ d.add(w12);
+
+
+ var w13 = new qx.ui.basic.Image("icon/48/alarm.png");
+
+ w13.setTop(350);
+ w13.setLeft(80);
+
+ d.add(w13);
+
+
+
+
+
+ var w14 = new qx.ui.layout.CanvasLayout;
+
+ w14.setTop(400);
+ w14.setLeft(20);
+ w14.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ //w14.setWidth("auto");
+ w14.setMinWidth("auto");
+ w14.setWidth("30%");
+
+ w14.setHeight("auto");
+ w14.setPadding(10);
+ w14.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ d.add(w14);
+
+
+ var w15 = new qx.ui.basic.Image("icon/48/clock.png");
+
+ w15.setTop(0);
+ w15.setLeft(20);
+
+ w14.add(w15);
+
+
+ var w16 = new qx.ui.basic.Image("icon/128/date.png");
+
+ w16.setTop(20);
+ w16.setLeft(80);
+
+ w14.add(w16);
+
+
+ var w16a = new qx.ui.layout.CanvasLayout;
+
+ w16a.setMarginTop(160);
+ w16a.setBottom(20);
+ w16a.setRight(20);
+
+ w16a.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+
+ w16a.setWidth(30);
+ w16a.setHeight(30);
+
+ w14.add(w16a);
+
+
+
+ w16a.addEventListener("click", function(e)
+ {
+ var v16Margin = w16a.getMarginTop() + 20;
+ if (v16Margin > 240) {
+ v16Margin = 100;
+ };
+
+ w16a.setMarginTop(v16Margin);
+ });
+
+
+
+
+ var w17_b1 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black"));
+ var w17_b2 = new qx.renderer.border.Border(10, "solid", new qx.renderer.color.Color("black"));
+
+ var w17_p1 = 10;
+ var w17_p2 = 5;
+
+ var w17 = new qx.ui.layout.CanvasLayout;
+
+ w17.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w17.setWidth(50);
+ w17.setHeight(50);
+ w17.setTop(50);
+ w17.setLeft(200);
+
+ w17.setBorder(w17_b1);
+ w17.setPadding(w17_p1);
+
+ d.add(w17);
+
+
+ w17.addEventListener("click", function(e)
+ {
+ if (w17.getBorder() == w17_b1)
+ {
+ w17.setBorder(w17_b2);
+ w17.setPadding(w17_p2);
+ }
+ else
+ {
+ w17.setBorder(w17_b1);
+ w17.setPadding(w17_p1);
+ };
+ });
+
+
+ var w18 = new qx.ui.layout.CanvasLayout;
+
+ w18.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w18.setWidth("100%");
+ w18.setHeight("100%");
+ w18.setLeft(0);
+ w18.setTop(0);
+
+ w17.add(w18);
+
+
+
+
+
+
+
+
+
+ var w19_b1 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black"));
+
+ var w19_p1 = 10;
+ var w19_p2 = 5;
+
+ var w19 = new qx.ui.layout.CanvasLayout;
+
+ w19.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w19.setWidth(50);
+ w19.setHeight(50);
+ w19.setTop(50);
+ w19.setLeft(270);
+
+ w19.setBorder(w19_b1);
+ w19.setPadding(w19_p1);
+
+ d.add(w19);
+
+
+ var _t22 = true;
+ w19.addEventListener("click", function(e)
+ {
+ if (_t22)
+ {
+ w19_b1.setWidth(10);
+ w19.setPadding(w19_p2);
+ }
+ else
+ {
+ w19_b1.setWidth(5);
+ w19.setPadding(w19_p1);
+ };
+
+ _t22 = !_t22;
+ });
+
+
+ var w20 = new qx.ui.layout.CanvasLayout;
+
+ w20.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w20.setWidth("100%");
+ w20.setHeight("100%");
+ w20.setLeft(0);
+ w20.setTop(0);
+
+ w19.add(w20);
+
+
+
+
+
+ var w21_b1 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black"));
+ var w21_b2 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("blue"));
+
+ var w21 = new qx.ui.layout.CanvasLayout;
+
+ w21.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w21.setWidth(50);
+ w21.setHeight(50);
+ w21.setTop(50);
+ w21.setLeft(340);
+
+ w21.setBorder(w21_b1);
+ w21.setPadding(10);
+
+ d.add(w21);
+
+
+ w21.addEventListener("click", function(e)
+ {
+ if (w21.getBorder() == w21_b1)
+ {
+ w21.setBorder(w21_b2);
+ }
+ else
+ {
+ w21.setBorder(w21_b1);
+ };
+ });
+
+
+ var w22 = new qx.ui.layout.CanvasLayout;
+
+ w22.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w22.setWidth("100%");
+ w22.setHeight("100%");
+ w22.setLeft(0);
+ w22.setTop(0);
+
+ w21.add(w22);
+
+
+
+
+
+
+
+ var w23_b1 = new qx.renderer.border.BorderObject(5, "solid", new qx.renderer.color.Color("black"));
+
+ var w23 = new qx.ui.layout.CanvasLayout;
+
+ w23.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w23.setWidth(50);
+ w23.setHeight(50);
+ w23.setTop(50);
+ w23.setLeft(410);
+
+ w23.setBorder(w23_b1);
+ w23.setPadding(10);
+
+ d.add(w23);
+
+ w23.addEventListener("mouseover", function(e)
+ {
+ w23_b1.setColor(new qx.renderer.color.Color("blue"));
+ w23_b1.setStyle("dotted");
+ });
+
+ w23.addEventListener("mouseout", function(e)
+ {
+ w23_b1.setColor(new qx.renderer.color.Color("black"));
+ w23_b1.setStyle("solid");
+ });
+
+ var w24 = new qx.ui.layout.CanvasLayout;
+
+ w24.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w24.setWidth("100%");
+ w24.setHeight("100%");
+ w24.setLeft(0);
+ w24.setTop(0);
+ w24.setAnonymous(true);
+
+ w23.add(w24);
+
+
+
+
+
+
+ var w25_b1 = qx.renderer.border.BorderPresets.getInstance().outset;
+ var w25_b2 = qx.renderer.border.BorderPresets.getInstance().inset;
+
+ var w25_p1 = 10;
+ var w25_p2 = 5;
+
+ var w25 = new qx.ui.layout.CanvasLayout;
+
+ w25.setBackgroundColor(new qx.renderer.color.ColorObject("ThreeDFace"));
+ w25.setWidth(50);
+ w25.setHeight(50);
+ w25.setTop(50);
+ w25.setLeft(480);
+
+ w25.setBorder(w25_b1);
+ w25.setPadding(w25_p1);
+
+ d.add(w25);
+
+
+ w25.addEventListener("click", function(e)
+ {
+ if (w25.getBorder() == w25_b1)
+ {
+ w25.setBorder(w25_b2);
+ w25.setPadding(w25_p2);
+ }
+ else
+ {
+ w25.setBorder(w25_b1);
+ w25.setPadding(w25_p1);
+ };
+ });
+
+
+ var w26 = new qx.ui.layout.CanvasLayout;
+
+ w26.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w26.setWidth("100%");
+ w26.setHeight("100%");
+ w26.setLeft(0);
+ w26.setTop(0);
+
+ w25.add(w26);
+
+
+
+
+
+
+
+ var w27 = new qx.ui.layout.CanvasLayout;
+
+ w27.setBackgroundColor(new qx.renderer.color.ColorObject("ThreeDFace"));
+ w27.setWidth(50);
+ w27.setHeight(50);
+ w27.setTop(50);
+ w27.setLeft(550);
+
+ w27.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ w27.setPadding(10, 10, 10, 10);
+
+ d.add(w27);
+
+
+ w27.addEventListener("click", function(e)
+ {
+ if (w27.getBorder() == qx.renderer.border.BorderPresets.getInstance().outset)
+ {
+ w27.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ w27.setPadding(12, 8, 8, 12);
+ }
+ else
+ {
+ w27.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ w27.setPadding(10, 10, 10, 10);
+ };
+ });
+
+
+ var w28 = new qx.ui.layout.CanvasLayout;
+
+ w28.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w28.setWidth("100%");
+ w28.setHeight("100%");
+ w28.setLeft(0);
+ w28.setTop(0);
+
+ w27.add(w28);
+
+
+
+
+
+
+
+ var w29_b1 = qx.renderer.border.BorderPresets.getInstance().outset;
+ var w29_b2 = qx.renderer.border.BorderPresets.getInstance().inset;
+
+ var w29_p1 = 10;
+ var w29_p2 = 5;
+
+ var w29 = new qx.ui.layout.CanvasLayout;
+
+ w29.setBackgroundColor(new qx.renderer.color.ColorObject("ThreeDFace"));
+ w29.setWidth(50);
+ w29.setHeight(50);
+ w29.setTop(50);
+ w29.setLeft(620);
+
+ w29.setBorder(w29_b1);
+ w29.setPadding(w29_p1);
+
+ d.add(w29);
+
+
+ w29.addEventListener("click", function(e)
+ {
+ if (w29.getBorder() == w29_b1)
+ {
+ w29.setBorder(w29_b2);
+ w29.setPadding(w29_p2);
+ }
+ else
+ {
+ w29.setBorder(w29_b1);
+ w29.setPadding(w29_p1);
+ };
+ });
+
+
+ var w30 = new qx.ui.layout.CanvasLayout;
+
+ w30.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w30.setLeft(0);
+ w30.setRight(0);
+ w30.setTop(0);
+ w30.setBottom(0);
+
+ w29.add(w30);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_3.html
new file mode 100644
index 0000000000..0ddf46f973
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This test is using multiple qx.ui.basic.Terminator</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w, s;
+
+
+
+ for (var i=1; i<=20; i++)
+ {
+ s = new Date().valueOf();
+
+ for (var j=1; j<=20; j++)
+ {
+ var w = new qx.ui.basic.Terminator;
+
+ w.setWidth(12);
+ w.setHeight(12);
+ w.setLeft(20+(12*i));
+ w.setTop(48+(12*j));
+ w.setBackgroundColor(new qx.renderer.color.Color(Math.round(20+(i*j)/2)));
+
+ d.add(w);
+ };
+
+ // this.debug("Col: " + ((new Date).valueOf()-s) + "ms");
+ };
+
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_4.html
new file mode 100644
index 0000000000..b516d2b528
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_4.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This test is using multiple div-Elements</p>
+ <p>Created with "createElement" and added via "appendChild" to the document.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w;
+ var v;
+
+ for (var i=1; i<=20; i++)
+ {
+ for (var j=1; j<=20; j++)
+ {
+ var w = document.createElement("div");
+
+ w.className = "qx_ui_core_Widget_QxWidgetCore";
+ w.id = "Auto" + i + "|" + j;
+
+ w.style.width = "12px";
+ w.style.height = "12px";
+ w.style.position = "absolute";
+ w.style.left = (20+(12*i)) + "px";
+ w.style.top = (48+(12*j)) + "px";
+
+ v = Math.round(20+(i*j)/2);
+ w.style.backgroundColor = "rgb(" + v + "," + v + "," + v + ")";
+
+ document.body.appendChild(w);
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_5.html
new file mode 100644
index 0000000000..6c2e0218ff
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CanvasLayout_5.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This test is using multiple div-Elements</p>
+ <p>Added to the document using the "innerHTML" property.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w;
+ var v;
+ var h = [];
+
+ for (var i=1; i<=20; i++)
+ {
+ for (var j=1; j<=20; j++)
+ {
+ h.push("<div style='width:12px;height:12px;position:absolute;");
+ h.push("left:" + (20+(12*i)) + "px;");
+ h.push("top:" + (48+(12*j)) + "px;");
+
+ v = Math.round(20+(i*j)/2);
+ h.push("background-color:" + "rgb(" + v + "," + v + "," + v + ")");
+ h.push("' class='qx_ui_core_Widget_QxWidgetCore' id='Auto" + i + "|" + j + "'></div>");
+ };
+ };
+
+ document.body.innerHTML += h.join("");
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clipping_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clipping_1.html
new file mode 100644
index 0000000000..4b37d81462
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clipping_1.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for clipping implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var t1 = new qx.ui.basic.Terminator;
+
+ t1.setBackgroundColor("red");
+ t1.setLocation(20, 48);
+ t1.setDimension(100, 100);
+ t1.setBorder(2, "solid", "black");
+ t1.setClipLocation(0, 0);
+ t1.setClipDimension(50, 50);
+
+ d.add(t1);
+
+
+
+ var t2 = new qx.ui.basic.Terminator;
+
+ t2.setBackgroundColor("yellow");
+ t2.setLocation(200, 48);
+ t2.setDimension(100, 100);
+ t2.setBorder(2, "solid", "black");
+ t2.setClipLocation(25, 25);
+ t2.setClipDimension(50, 50);
+
+ d.add(t2);
+
+
+
+ var t3 = new qx.ui.basic.Terminator;
+
+ t3.setBackgroundColor("blue");
+ t3.setLocation(20, 248);
+ t3.setDimension(100, 100);
+ t3.setBorder(2, "solid", "black");
+ t3.setClipLocation(50, 50);
+ t3.setClipDimension(50, 50);
+
+ d.add(t3);
+
+
+
+
+ var t4 = new qx.ui.basic.Terminator;
+
+ t4.setBackgroundColor("orange");
+ t4.setLocation(200, 248);
+ t4.setDimension(100, 100);
+ t4.setBorder(2, "solid", "black");
+ t4.setClip(25, 25, null, null);
+
+ d.add(t4);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_1.html
new file mode 100644
index 0000000000..4afdc392d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_1.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test widget cloning.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.layout.CanvasLayout;
+
+ with(c1)
+ {
+ setWidth(200);
+
+ setTop(48);
+ setLeft(20);
+
+ setHeight(100);
+ setBackgroundColor("orange");
+ };
+
+ d.add(c1);
+
+
+ var c2 = c1.clone();
+
+ with(c2)
+ {
+ setLeft(30);
+ setTop(58);
+
+ setBackgroundColor("green");
+ };
+ d.add(c2);
+
+ var c3 = c2.clone(false, ["top","left","width","height"]);
+
+ with(c3)
+ {
+ setLeft(40);
+ setTop(68);
+
+ setBackgroundColor("blue");
+ };
+ d.add(c3);
+
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("First Atom", "icon/48/clock.png");
+
+ with(a1)
+ {
+ setTop(200);
+ setLeft(20);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+
+ setPadding(5);
+ };
+
+ d.add(a1);
+
+
+
+ var a2 = a1.clone(true);
+
+ with(a2)
+ {
+ setLeft(200);
+ };
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_2.html
new file mode 100644
index 0000000000..4ef3adafa1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Clone_2.html
@@ -0,0 +1,108 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testfile for check cloning on QxFieldSets.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.GroupBox("My first Fieldset");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth(250);
+ };
+
+
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setTop(13);
+ setLeft(0);
+ setWidth("35%");
+ };
+
+ var i1 = new qx.ui.form.TextField();
+ with(i1)
+ {
+ setTop(10);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(a1, i1);
+
+
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/email.png");
+ with(a2)
+ {
+ setTop(43);
+ setLeft(0);
+ setWidth("35%");
+ };
+ fs.add(a2);
+
+ var i2 = new qx.ui.form.TextField();
+ with(i2)
+ {
+ setTop(40);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i2);
+
+
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setTop(73);
+ setLeft(0);
+ setWidth("35%");
+ };
+ fs.add(a3);
+
+ var i3 = new qx.ui.form.TextField();
+ with(i3)
+ {
+ setTop(70);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i3);
+
+
+ d.add(fs);
+
+
+ fsclone = fs.clone(true);
+ with(fsclone)
+ {
+ setLeft(400);
+ setLegend("My cloned Fieldset");
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_1.html
new file mode 100644
index 0000000000..badd4da9b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_1.html
@@ -0,0 +1,235 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Color Theme Test</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ w1.setWidth(100);
+ w1.setHeight(100);
+ w1.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ d.add(w1);
+
+
+
+ var w2 = new qx.ui.basic.Terminator;
+
+ w2.setWidth(100);
+ w2.setHeight(100);
+ w2.setBackgroundColor(new qx.renderer.color.ColorObject("activecaption"));
+ w2.setTop(48);
+ w2.setLeft(150);
+
+ d.add(w2);
+
+
+
+
+ var w3 = new qx.ui.basic.Terminator;
+
+ w3.setWidth(100);
+ w3.setHeight(100);
+ w3.setBackgroundColor("red");
+ w3.setTop(200);
+ w3.setLeft(20);
+
+ d.add(w3);
+
+
+
+ var w4 = new qx.ui.basic.Terminator;
+
+ w4.setWidth(100);
+ w4.setHeight(100);
+ w4.setBackgroundColor("red");
+ w4.setTop(200);
+ w4.setLeft(150);
+
+ d.add(w4);
+
+
+
+
+ var w5 = new qx.ui.basic.Label("Hello World");
+
+ w5.setTop(320);
+ w5.setLeft(20);
+ w5.setColor("red");
+
+ d.add(w5);
+
+
+
+
+
+ var w6 = new qx.ui.basic.Terminator;
+
+ w6.setWidth(100);
+ w6.setHeight(100);
+ w6.setBackgroundColor("activecaption");
+ w6.setTop(400);
+ w6.setLeft(20);
+
+ d.add(w6);
+
+
+
+ var w7 = new qx.ui.basic.Terminator;
+
+ w7.setWidth(100);
+ w7.setHeight(100);
+ w7.setBackgroundColor("activeCaption");
+ w7.setTop(400);
+ w7.setLeft(150);
+
+ d.add(w7);
+
+
+
+
+ var w8 = new qx.ui.basic.Label("Hello World");
+
+ w8.setTop(520);
+ w8.setLeft(20);
+ w8.setColor("ActiveCaption");
+
+ d.add(w8);
+
+
+
+
+
+
+
+ var w9 = new qx.ui.basic.Atom("Super qooxdoo", "icon/48/bell.png");
+
+ w9.setTop(520);
+ w9.setLeft(200);
+ w9.setBorder(new qx.renderer.border.BorderObject(2, "solid", "activeCaption"));
+ w9.setBackgroundColor("threedlightshadow");
+
+ d.add(w9);
+
+
+
+
+
+ var w10 = new qx.ui.basic.Atom("Super qooxdoo", "icon/48/bell.png");
+
+ w10.setTop(520);
+ w10.setLeft(400);
+ w10.setBorder(new qx.renderer.border.BorderObject(2, "solid", new qx.renderer.color.ColorObject("activeCaption")));
+ w10.setBackgroundColor("threedlightshadow");
+
+ d.add(w10);
+
+
+
+
+
+
+ var w11 = new qx.ui.basic.Label("Hello World");
+
+ w11.setTop(600);
+ w11.setLeft(20);
+ w11.setBackgroundColor([232,102,255]);
+ w11.setColor(20,30,60);
+ w11.setBorder(1, "solid", "red");
+
+ d.add(w11);
+
+
+
+ var w12 = new qx.ui.basic.Label("Hello World");
+
+ w12.setTop(600);
+ w12.setLeft(120);
+ w12.setBackgroundColor([232,102,255]);
+ w12.setColor(20,30,60);
+ w12.setBorder([1, "solid", "red"]);
+
+ d.add(w12);
+
+
+
+ var w13 = new qx.ui.basic.Label("Hello World");
+
+ w13.setLocation(220, 600);
+ w13.setBackgroundColor([232,102,255]);
+ w13.setColor(20,30,60);
+ w13.setBorder([1, "solid", "activeCaption"]);
+
+ d.add(w13);
+
+
+
+
+ var myBoundedBorder1 = new qx.renderer.border.Border(1, "solid", [200,10,20]);
+
+
+ var w14 = new qx.ui.basic.Terminator;
+
+ w14.setWidth(100);
+ w14.setHeight(100);
+ w14.setLeft(600);
+ w14.setTop(100);
+ w14.setBorder(myBoundedBorder1);
+
+ d.add(w14);
+
+ // should not work with qx.renderer.border.Border - use qx.renderer.border.BorderObject instead
+ w14.addEventListener("click", function(e) {
+ myBoundedBorder1.setTopColor([100,200,200]);
+ myBoundedBorder1.setTopWidth(10);
+ });
+
+
+
+ var myBoundedBorder2 = new qx.renderer.border.BorderObject(1, "solid", [200,10,20]);
+
+
+ var w15 = new qx.ui.basic.Terminator;
+
+ w15.setWidth(100);
+ w15.setHeight(100);
+ w15.setLeft(600);
+ w15.setTop(210);
+ w15.setBorder(myBoundedBorder2);
+
+ d.add(w15);
+
+ w15.addEventListener("click", function(e) {
+ myBoundedBorder2.setTopColor([100,200,200]);
+ myBoundedBorder2.setTopWidth(10);
+ });
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 350, 128);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_2.html
new file mode 100644
index 0000000000..8b5bf558a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_2.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Color Theme Test</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ // Create Default OS Color Table
+ var w;
+ var c=0;
+ for (var i in qx.renderer.color.Color.themedNames)
+ {
+ w = new qx.ui.basic.Label(i);
+
+ w.setWidth(120);
+ w.setTop(48+(c*18));
+ w.setLeft(20);
+ w.setPadding(1, 2);
+ w.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w.setStyleProperty("backgroundColor", i);
+
+ d.add(w);
+
+ c++;
+ };
+
+
+
+ // Create Default OS Color Table
+ var w;
+ var c=0;
+ for (var i in qx.renderer.color.Color.themedNames)
+ {
+ w = new qx.ui.basic.Label(i);
+
+ w.setWidth(120);
+ w.setTop(48+(c*18));
+ w.setLeft(150);
+ w.setPadding(1, 2);
+ w.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w.setBackgroundColor(new qx.renderer.color.ColorObject(i));
+
+ d.add(w);
+
+ c++;
+ };
+
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 400, 128);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_3.html
new file mode 100644
index 0000000000..c119de0a1c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ColorTheme_3.html
@@ -0,0 +1,176 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Color Theme Test for qx.renderer.border.BorderObject's</p>
+ <ul>
+ <li>First Col: qooxdoo solution for borders</li>
+ <li>Second Col: html solution without color value</li>
+ <li>Third Col: html solution with color value: white</li>
+ </ul>
+ <p>The default color Theme is: <em>OS Default</em></p>
+ </div>
+
+ <div style="position: absolute; left: 120px; top: 48px; width: 50px">
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px outset">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px inset">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px ridge">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px groove">&#160;</div>
+
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px outset">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px inset">&#160;</div>
+ </div>
+
+ <div style="position: absolute; left: 180px; top: 48px; width: 50px">
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px outset white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px inset white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px ridge white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px groove white">&#160;</div>
+
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px outset white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px inset white">&#160;</div>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var w1 = new qx.ui.basic.Terminator;
+ w1.setDimension(50, 50);
+ w1.setLocation(20, 48);
+ w1.setBorder(new qx.renderer.border.BorderObject(2, "outset"));
+ d.add(w1);
+
+ var w2 = new qx.ui.basic.Terminator;
+ w2.setDimension(50, 50);
+ w2.setLocation(20, 108);
+ w2.setBorder(new qx.renderer.border.BorderObject(2, "inset"));
+ d.add(w2);
+
+ var w3 = new qx.ui.basic.Terminator;
+ w3.setDimension(50, 50);
+ w3.setLocation(20, 168);
+ w3.setBorder(new qx.renderer.border.BorderObject(2, "ridge"));
+ d.add(w3);
+
+ var w4 = new qx.ui.basic.Terminator;
+ w4.setDimension(50, 50);
+ w4.setLocation(20, 228);
+ w4.setBorder(new qx.renderer.border.BorderObject(2, "groove"));
+ d.add(w4);
+
+ var w5 = new qx.ui.basic.Terminator;
+ w5.setDimension(50, 50);
+ w5.setLocation(20, 288);
+ w5.setBorder(new qx.renderer.border.BorderObject(1, "outset"));
+ d.add(w5);
+
+ var w6 = new qx.ui.basic.Terminator;
+ w6.setDimension(50, 50);
+ w6.setLocation(20, 348);
+ w6.setBorder(new qx.renderer.border.BorderObject(1, "inset"));
+ d.add(w6);
+
+
+
+ var border1 = new qx.renderer.border.BorderObject(2, "outset");
+ var border2 = new qx.renderer.border.BorderObject(1, "outset");
+
+ var w7 = new qx.ui.layout.CanvasLayout;
+ w7.setDimension(50, 50);
+ w7.setLocation(20, 408);
+ w7.setBorder(border1);
+ d.add(w7);
+
+ var w7c = new qx.ui.basic.Terminator;
+ w7c.setDimension("100%", "100%");
+ w7c.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w7.add(w7c);
+
+
+
+ var w8 = new qx.ui.layout.CanvasLayout;
+ w8.setDimension(50, 50);
+ w8.setLocation(20, 468);
+ w8.setBorder(border2);
+ d.add(w8);
+
+ var w8c = new qx.ui.basic.Terminator;
+ w8c.setDimension("100%", "100%");
+ w8c.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w8.add(w8c);
+
+
+
+
+ w7.addEventListener("click", function(e) {
+ this.setBorder(this.getBorder() == null ? border1 : this.getBorder() == border1 ? border2 : null)
+ });
+
+ w8.addEventListener("click", function(e) {
+ this.setBorder(this.getBorder() == null ? border1 : this.getBorder() == border1 ? border2 : null)
+ });
+
+
+
+
+
+
+ var w9 = new qx.ui.layout.CanvasLayout;
+
+ w9.setDimension(100, 100);
+ w9.setLocation(400, 400);
+ w9.setBorder(border1);
+ w9.setOverflow("scroll");
+
+ d.add(w9);
+
+ var w9c = new qx.ui.basic.Image("icon/32/colors.png");
+
+ w9c.setTop(150);
+ w9c.setLeft(300);
+
+ w9.add(w9c);
+
+
+
+ w9.addEventListener("click", function(e) {
+ this.setOverflow(this.getOverflow() == "scroll" ? "scrollX" : this.getOverflow() == "scrollX" ? "scrollY" : this.getOverflow() == "scrollY" ? "" : "scroll");
+ });
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 400, 128);
+
+
+
+
+
+
+ /*
+ var c1 = new qx.renderer.color.Color("gray");
+ this.debug("RGB-Transform I: " + c1.getRed() + "," + c1.getGreen() + "," + c1.getBlue());
+
+ // This could not work with the default theme "OS Default", as this does not define any rgb colors
+ var c2 = new qx.renderer.color.ColorObject("threedface");
+ this.debug("RGB-Transform II: " + c2.getRed() + "," + c2.getGreen() + "," + c2.getBlue());
+ */
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_1.html
new file mode 100644
index 0000000000..c79f556cf0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_1.html
@@ -0,0 +1,102 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox implementation.</p>
+ <p>Testing object creation (the list content will be filled then) on first open.</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setLocation(20, 48);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_2.html
new file mode 100644
index 0000000000..f44c525bd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_2.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox implementation.</p>
+ <p>Testing object creation (the list content will be filled then) on first open.</p>
+ <p>Added Color Theme Buttons</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setLocation(20, 48);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 20, 248);
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_3.html
new file mode 100644
index 0000000000..7fe9f3ff76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_3.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox implementation.</p>
+ <p>Testing object creation (the list content will be filled then) on first open.</p>
+ <p>Added Color Theme Buttons</p>
+ <p>Now with image inside the popup.</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setLocation(20, 48);
+
+ // this example seems to be buggy with auto-height
+ // c1.getPopup().setHeight(150);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+ var list = [ "archive", "binary", "card", "document", "html", "image", "manual", "multimedia", "pdf" ];
+
+ for(var i=0; i<list.length; i++)
+ {
+ item = new qx.ui.form.ListItem(list[i], "icon/48/mime-" + list[i] + ".png");
+ item.setShow("icon");
+
+ c1.add(item);
+ };
+
+ c1.setSelected(c1.getList().getFirstChild());
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 20, 248);
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_4.html
new file mode 100644
index 0000000000..3d698e9a19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ComboBox_4.html
@@ -0,0 +1,41 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox behaviour when inside a container with scroll bars and the popup list goes off the screen.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ var box = new qx.ui.layout.BoxLayout('vertical');
+ box.set({left: 5, right: 300, top: 30, bottom: 20, overflow: 'scroll', backgroundColor: '#FFE'});
+ for (var row = 0; row < 8; row++) {
+ var rowBox = new qx.ui.layout.BoxLayout;
+ rowBox.set({ marginBottom: 100, width: 'auto', height: 'auto' });
+ for (var col = 0; col < 8; col++) {
+ var cb = new qx.ui.form.ComboBox;
+ for (var i = 0; i < 15; i++) {
+ cb.add(new qx.ui.form.ListItem('Item '+i));
+ }
+ cb.setEditable(true);
+ cb.setValue('Row '+row+', col '+col);
+ cb.setMarginRight(100);
+ rowBox.add(cb);
+ }
+ box.add(rowBox);
+ }
+ box.addToDocument();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_1.html
new file mode 100644
index 0000000000..e02a221064
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_1.html
@@ -0,0 +1,415 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ </div>
+
+ <textarea id="resultjs" style="position:absolute;width:600px;height:400px;background:white;top:120px;left:20px;border:1px solid black;overflow:auto"></textarea>
+ <textarea id="resulthtml" style="position:absolute;width:600px;height:100px;background:white;top:530px;left:20px;border:1px solid black;overflow:auto"></textarea>
+
+ <script type="text/javascript">
+ jsout = document.getElementById("resultjs");
+ htmlout = document.getElementById("resulthtml");
+
+ var _emptyTags = {
+ "IMG": true,
+ "BR": true,
+ "INPUT": true,
+ "META": true,
+ "LINK": true,
+ "PARAM": true,
+ "HR": true
+ };
+
+ HTMLElement.prototype.__defineGetter__("outerHTML", function () {
+ var attrs = this.attributes;
+ var str = "<" + this.tagName.toLowerCase();
+ for (var i = 0; i < attrs.length; i++)
+ str += " " + attrs[i].name + "=\"" + attrs[i].value + "\"";
+
+ if (_emptyTags[this.tagName])
+ return str + ">";
+
+ return str + ">" + this.innerHTML + "</" + this.tagName.toLowerCase() + ">";
+ });
+
+
+
+
+
+
+
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ a1 = new qx.ui.form.Button("Hello World", "icon/32/penguin.png");
+ a1.setLocation(20, 50);
+ qx.ui.core.ClientDocument.getInstance().add(a1);
+
+ a2 = new qx.ui.form.Button("Hello World", "icon/32/appearance.png");
+ a2.setLocation(220, 50);
+ qx.ui.core.ClientDocument.getInstance().add(a2);
+ });
+
+ qx.core.Init.getInstance().defineFinalize(function()
+ {
+ var str = "qx.core.Init.getInstance().defineMain(function()\n{\n";
+
+
+
+
+ qx.core.Init.getInstance().debug("Updating HTML");
+
+ htmlout.value = a1.getElement().outerHTML + a2.getElement().outerHTML;
+
+
+
+
+
+
+
+
+ qx.core.Init.getInstance().debug("Serialize...");
+ var vBase1 = serializeMain(a1);
+ var vBase2 = serializeMain(a2);
+
+ qx.core.Init.getInstance().debug("Base1: " + vBase1);
+ qx.core.Init.getInstance().debug("Base2: " + vBase2);
+ qx.core.Init.getInstance().debug("Tree Size: " + vObjectCache.length);
+ qx.core.Init.getInstance().debug("Generating Code...");
+
+ for (var i=0, n, v, c, cv, l=vObjectCache.length; i<l; i++)
+ {
+ v = vObjectCache[i].value;
+ c = vObjectCache[i].compiled;
+
+ switch(typeof v)
+ {
+ case "object":
+ if (v == null)
+ {
+ str += "$" + i + " = null;\n";
+ }
+ else if (v instanceof qx.core.Object)
+ {
+ // qx.core.Init.getInstance().debug("QXOBJECT: " + i + "=" + vObjectCache[i].value);
+
+ if (typeof c == "string" && c.indexOf("$OBJECTMAPPER-") == 0)
+ {
+ cv = c.replace("$OBJECTMAPPER-", "");
+
+ switch(cv)
+ {
+ case "qx.ui.core.ClientDocument":
+ str += "$" + i + " = qx.core.Init.getComponent().getClientWindow()().getClientDocument();\n";
+ break;
+
+ case "qx.manager.object.ImageManager":
+ str += "$" + i + " = new qx.manager.object.ImageManager;\n";
+ break;
+ };
+ }
+ else
+ {
+ str += "var f = new Function();\n";
+ str += "f.prototype = " + v.classname + ".prototype;\n";
+ str += "$" + i + " = new f;\n";
+ str += "QxObjectDataBase[" + v._hashCode + "] = $" + i + ";\n";
+
+ // constructor call
+ // str += v.classname + ".call($" + i + ");\n";
+
+ if (v instanceof qx.ui.core.Widget && v.isCreated())
+ {
+ // map elements
+ str += "$" + i + "._valueElement = cssQuery(\"[qxhashcode=" + v._hashCode + "]\")[0];\n";
+ str += "$" + i + "._element = $" + i + "._valueElement;\n";
+ str += "$" + i + "._style = $" + i + "._valueElement.style;\n";
+
+ // map qx_Widget attribute of node to widget
+ str += "$" + i + "._valueElement.qx_Widget = $" + i + ";\n";
+
+ if (v instanceof qx.ui.basic.Image)
+ {
+ // assign _image
+ str += "$" + i + "._image = $" + i + "._valueElement.getElementsByTagName(\"img\")[0];\n";
+ };
+ }
+ else if (v instanceof qx.io.image.Preloader)
+ {
+ str += "$" + i + "._element = new Image;\n";
+ str += "$" + i + "._element.src = \"" + v.getSource() + "\";\n";
+ };
+ };
+ }
+ else if (v instanceof Array)
+ {
+ // qx.core.Init.getInstance().debug("JSARRAY: " + i + "=" + vObjectCache[i].value);
+
+ str += "$" + i + " = [];\n";
+ }
+ else
+ {
+ // qx.core.Init.getInstance().debug("JSHASHTABLE: " + i + "=" + vObjectCache[i].value);
+
+ str += "$" + i + " = {};\n";
+ };
+
+ break;
+
+ case "string":
+ str += "$" + i + " = \"" + vObjectCache[i].value + "\";\n";
+ break;
+
+ case "number":
+ case "boolean":
+ str += "$" + i + " = " + v + ";\n";
+ break;
+
+ case "undefined":
+ // qx.core.Init.getInstance().debug("Undefined value found: " + v);
+ str += "$" + i + " = null;\n";
+ break;
+
+ case "function":
+ if (typeof c == "string" && c.indexOf("$FUNCTIONMAPPER-") == 0)
+ {
+ cv = c.replace("$FUNCTIONMAPPER-", "").split("|");
+ str += "$" + i + "= QxObjectDataBase[" + cv[1] + "]." + cv[0] + ";\n";
+ };
+ break;
+
+ default:
+ qx.core.Init.getInstance().debug("Unsupported value: " + v);
+ str += "var $" + i + " = \"UNSUPPORTED VALUE\";\n";
+
+ };
+ };
+
+
+
+
+
+
+
+ for (var i=0, n, c, v, cv, l=vObjectCache.length; i<l; i++)
+ {
+ v = vObjectCache[i].value;
+ c = vObjectCache[i].compiled;
+
+ if (typeof v == "object" && v != null)
+ {
+ if (v instanceof qx.core.Object)
+ {
+ if (typeof c == "string" && c.indexOf("$OBJECTMAPPER-") == 0)
+ {
+ continue;
+ };
+
+ for (vKey in vObjectCache[i].compiled)
+ {
+ if (vObjectCache[i].compiled[vKey] != null)
+ {
+ str += "$" + i + "." + vKey + " = $" + vObjectCache[i].compiled[vKey] + ";\n";
+ };
+ };
+ }
+ else if (v instanceof Array)
+ {
+ for (var ia=0, la=vObjectCache[i].compiled.length; ia<la; ia++)
+ {
+ str += "$" + i + "[" + ia + "] = $" + vObjectCache[i].compiled[ia] + ";\n";
+ };
+ }
+ else
+ {
+ for (vKey in vObjectCache[i].compiled)
+ {
+ if (vObjectCache[i].compiled[vKey] != null)
+ {
+ str += "$" + i + "[\"" + vKey + "\"] = $" + vObjectCache[i].compiled[vKey] + ";\n";
+ };
+ };
+ };
+ };
+ };
+
+
+
+
+
+ str += "};";
+
+ jsout.value = str;
+
+ qx.core.Init.getInstance().debug("Done");
+ });
+
+
+
+
+ var vObjectCache = [];
+ var vLastListenerContext = null;
+
+ function serializeMain(vValue)
+ {
+ var vValue, vIter, vLength;
+
+ // Completly ignore the window and document built-in object
+ if (vValue == window || vValue == document) {
+ return null;
+ };
+
+ // Completly ignore DOM nodes
+ if (qx.util.Validation.isValid(vValue) && typeof vValue.nodeType != "undefined") {
+ return null;
+ };
+
+ for (vIter=0, vLength=vObjectCache.length; vIter<vLength; vIter++)
+ {
+ if (vObjectCache[vIter].value === vValue)
+ {
+ return vIter;
+ };
+ };
+
+ //QxDebug("Serializer", "Known: " + vObjectCache);
+ //QxDebug("Serializer", "Serialize: " + vValue + "(" + typeof vValue + ")");
+
+ var vPos = vObjectCache.length;
+
+ vObjectCache[vPos] = { value : vValue };
+ vObjectCache[vPos].compiled = serializeWrapper(vValue);
+
+ return vPos;
+ };
+
+ function serializeWrapper(vInput)
+ {
+ switch(typeof vInput)
+ {
+ case "string":
+ case "number":
+ case "boolean":
+ return serializeSimple(vInput);
+
+ case "object":
+ if (vInput == null)
+ {
+ return serializeSimple(vInput);
+ }
+ else if (vInput instanceof Array)
+ {
+ return serializeArray(vInput);
+ }
+ else
+ {
+ return serializeObject(vInput);
+ };
+
+ case "function":
+ //QxDebug("Serializer", "FUNCTION: " + vInput);
+ return null;
+ };
+
+ return null;
+ };
+
+ function serializeSimple(vSimple) {
+ return vSimple;
+ };
+
+ function serializeObject(vObject)
+ {
+ if (vObject instanceof qx.ui.core.ClientDocument) {
+ return "$OBJECTMAPPER-qx.ui.core.ClientDocument";
+ }
+ else if (vObject instanceof qx.manager.object.ImageManager) {
+ return "$OBJECTMAPPER-qx.manager.object.ImageManager";
+ };
+
+ var vKey;
+ var vOut = {};
+
+ for (vKey in vObject)
+ {
+ // ignore css reference
+ switch(vKey)
+ {
+ case "_style":
+ continue;
+
+ case "_listeners":
+ // QxDebug("Serializer", "Found Listeners: " + vKey + "::" + vObject);
+ vLastListenerContext = vObject;
+ break;
+ };
+
+ if (typeof vObject[vKey] == "function")
+ {
+ if (!(vObject instanceof qx.core.Object) && vLastListenerContext)
+ {
+ var to = new vLastListenerContext.constructor;
+ var tm = null;
+
+ for (vSubKey in to)
+ {
+ if (to[vSubKey] === vObject[vKey])
+ {
+ tm = vSubKey;
+ break;
+ };
+ };
+
+ if (tm)
+ {
+ qx.core.Init.getInstance().debug("Serializer", "Function Mapped: " + tm);
+ var ts = { value : vObject[vKey], compiled : "$FUNCTIONMAPPER-" + tm + "|" + vLastListenerContext._hashCode };
+ vObjectCache.push(ts);
+ vOut[vKey] = vObjectCache.length-1;
+ continue;
+ }
+ else
+ {
+ qx.core.Init.getInstance().debug("Serializer", "Could not map function: " + vKey + "[" + vLastListenerContext + "]");
+ };
+
+ continue;
+ }
+ else
+ {
+ continue;
+ };
+ };
+
+ vOut[vKey] = serializeMain(vObject[vKey]);
+ };
+
+ return vOut;
+ };
+
+ function serializeArray(vArray)
+ {
+ var vKey;
+ var vOut = [];
+
+ for (var vIter=0, vLength=vArray.length; vIter<vLength; vIter++) {
+ vOut.push(serializeMain(vArray[vIter]));
+ };
+
+ return vOut;
+ };
+
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.html
new file mode 100644
index 0000000000..472c237945
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.html
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ </div>
+
+ <div style="border: 2px outset ; -moz-user-select: none; -moz-user-focus: normal; cursor: default; background-color: buttonface; -moz-border-left-colors: 37 36; -moz-border-right-colors: 34 38; -moz-border-top-colors: 37 36; -moz-border-bottom-colors: 34 38; width: 102px; height: 42px; left: 20px; top: 50px;" class="QxWidgetCore qx.ui.form.Button" qxhashcode="74"><div qxhashcode="78" title="" class="QxWidgetCore qx.ui.basic.Image" style="-moz-user-select: none; left: 4px; top: 3px;"><img src="../../image/icons/crystalsvg/32/penguin.png" height="32" width="32"></div><div qxhashcode="77" class="QxWidgetCore qx.ui.basic.Label" style="-moz-user-select: none; left: 40px; top: 13px;">Hello World</div></div><div style="border: 2px outset ; -moz-user-select: none; -moz-user-focus: normal; cursor: default; background-color: buttonface; -moz-border-left-colors: 37 36; -moz-border-right-colors: 34 38; -moz-border-top-colors: 37 36; -moz-border-bottom-colors: 34 38; width: 102px; height: 42px; left: 220px; top: 50px;" class="QxWidgetCore qx.ui.form.Button" qxhashcode="86"><div qxhashcode="90" title="" class="QxWidgetCore qx.ui.basic.Image" style="-moz-user-select: none; left: 4px; top: 3px;"><img src="../../image/icons/crystalsvg/32/appearance.png" height="32" width="32"></div><div qxhashcode="89" class="QxWidgetCore qx.ui.basic.Label" style="-moz-user-select: none; left: 40px; top: 13px;">Hello World</div></div>
+ <script type="text/javascript" src="cssQuery-p.js"></script>
+ <script type="text/javascript" src="Compile_2.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineInitialize(function() //window.application.pre = function()
+ {
+ qx.core.Init.getInstance().debug("Pre-Execute");
+ qx.core.Init.getInstance().debug("Object DB Length: " + qx.core.Object._db.length);
+ });
+
+ qx.core.Init.getInstance().defineFinalize(function() //window.application.post = function()
+ {
+ qx.core.Init.getInstance().debug("Post-Execute");
+
+ qx.core.Init.getInstance().debug("Children: " + $0.getChildren());
+ qx.core.Init.getInstance().debug("Element: " + $0.getElement());
+ qx.core.Init.getInstance().debug("Parent: " + $0.getParent());
+ qx.core.Init.getInstance().debug("Box Width: " + $0.getBoxWidth());
+ qx.core.Init.getInstance().debug("Has Mouse Down Event: " + $0.hasEventListeners("mousedown"));
+ qx.core.Init.getInstance().debug("Icon Preferred Width: " + $0.getChildren()[0].getPreferredBoxWidth());
+
+ qx.core.Init.getInstance().debug("Object DB Length: " + qx.core.Object._db.length);
+
+ $0.setIconPosition("top");
+ qx.ui.core.Widget.flushGlobalQueues();
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.js
new file mode 100644
index 0000000000..10c9ac628a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Compile_2.js
@@ -0,0 +1,3867 @@
+qx.core.Init.getInstance().defineMain(function()
+{
+var f = new Function();
+f.prototype = qx.ui.form.Button.prototype;
+$0 = new f;
+qx.core.Object._db[74] = $0;
+$0._valueElement = cssQuery("[qxhashcode=74]")[0];
+$0._element = $0._valueElement;
+$0._style = $0._valueElement.style;
+$0._valueElement.qx_Widget = $0;
+$1 = 74;
+$2 = {}
+$3 = "QxWidgetCore qx.ui.form.Button";
+$4 = {}
+$5 = {}
+$6 = "none";
+$7 = "normal";
+$8 = "default";
+$9 = "buttonface";
+$10 = {}
+$11 = {}
+$12 = true;
+$13 = false;
+$14 = 1;
+$15 = 4;
+$16 = "auto";
+$17 = 3;
+$18 = 102;
+$19 = null;
+$20 = 42;
+$21 = "center";
+$22 = "middle";
+$23 = [];
+var f = new Function();
+f.prototype = qx.ui.basic.Image.prototype;
+$24 = new f;
+qx.core.Object._db[78] = $24;
+$24._valueElement = cssQuery("[qxhashcode=78]")[0];
+$24._element = $24._valueElement;
+$24._style = $24._valueElement.style;
+$24._valueElement.qx_Widget = $24;
+$24._image = $24._valueElement.getElementsByTagName("img")[0];
+$25 = 78;
+$26 = {}
+$27 = "QxWidgetCore qx.ui.basic.Image";
+$28 = "";
+$29 = {}
+$30 = {}
+$31 = {}
+$32 = {}
+$33 = new qx.manager.object.ImageManager;
+$34 = "icon/32/penguin.png";
+$35 = 32;
+var f = new Function();
+f.prototype = qx.io.image.Preloader.prototype;
+$36 = new f;
+qx.core.Object._db[91] = $36;
+$36._element = new Image;
+$36._element.src = "../../images/icons/crystalsvg/32/penguin.png";
+$37 = 91;
+$38 = "../../images/icons/crystalsvg/32/penguin.png";
+$39 = "qx.io.image.Preloader";
+var f = new Function();
+f.prototype = qx.manager.object.ImagePreloaderManager.prototype;
+$40 = new f;
+qx.core.Object._db[31] = $40;
+$41 = 31;
+$42 = {}
+var f = new Function();
+f.prototype = qx.io.image.Preloader.prototype;
+$43 = new f;
+qx.core.Object._db[92] = $43;
+$43._element = new Image;
+$43._element.src = "../../images/icons/crystalsvg/32/appearance.png";
+$44 = 92;
+$45 = "../../images/icons/crystalsvg/32/appearance.png";
+$46 = "enabled";
+$47 = "qx.manager.object.ImagePreloaderManager";
+$48 = 0;
+$49 = "qx.ui.basic.Image";
+$50 = "enabled,parent,element,visibility,display,anonymous,tagName,horizontalAlign,verticalAlign,allowStretchX,allowStretchY,zIndex,backgroundColor,color,border,font,opacity,cursor,backgroundImage,overflow,clipLeft,clipTop,clipWidth,clipHeight,tabIndex,hideFocus,enableElementFocus,focused,selectable,toolTip,contextMenu,capture,dropDataTypes,command,appearance,marginTop,marginRight,marginBottom,marginLeft,paddingTop,paddingRight,paddingBottom,paddingLeft,left,right,width,minWidth,maxWidth,top,bottom,height,minHeight,maxHeight,source,preloader,loaded,resizeToInner";
+$51 = "div";
+$52 = -1;
+$53 = "parent,element,visible";
+var f = new Function();
+f.prototype = qx.ui.basic.Label.prototype;
+$54 = new f;
+qx.core.Object._db[77] = $54;
+$54._valueElement = cssQuery("[qxhashcode=77]")[0];
+$54._element = $54._valueElement;
+$54._style = $54._valueElement.style;
+$54._valueElement.qx_Widget = $54;
+$55 = 77;
+$56 = {}
+$57 = "QxWidgetCore qx.ui.basic.Label";
+$58 = {}
+$59 = {}
+$60 = {}
+$61 = {}
+$62 = 54;
+$63 = 13;
+$64 = "Hello World";
+$65 = 40;
+$66 = "qx.ui.basic.Label";
+$67 = "enabled,parent,element,visibility,display,anonymous,tagName,horizontalAlign,verticalAlign,allowStretchX,allowStretchY,zIndex,backgroundColor,color,border,font,opacity,cursor,backgroundImage,overflow,clipLeft,clipTop,clipWidth,clipHeight,tabIndex,hideFocus,enableElementFocus,focused,selectable,toolTip,contextMenu,capture,dropDataTypes,command,appearance,marginTop,marginRight,marginBottom,marginLeft,paddingTop,paddingRight,paddingBottom,paddingLeft,left,right,width,minWidth,maxWidth,top,bottom,height,minHeight,maxHeight,html,fontPropertiesProfile,measureMode,mnemonic";
+$68 = "styleproperty";
+var f = new Function();
+f.prototype = qx.renderer.layout.HorizontalBoxLayoutImpl.prototype;
+$69 = new f;
+qx.core.Object._db[76] = $69;
+$70 = 76;
+$71 = "qx.renderer.layout.HorizontalBoxLayoutImpl";
+$72 = "enabled,enableFlexSupport";
+$73 = "horizontal";
+$74 = {}
+$75 = {}
+$76 = {}
+$77= qx.core.Object._db[74]._onmouseover;
+$78 = null;
+$79 = {}
+$80 = {}
+$81= qx.core.Object._db[74]._onmouseout;
+$82 = {}
+$83 = {}
+$84= qx.core.Object._db[74]._onmousedown;
+$85 = {}
+$86 = {}
+$87= qx.core.Object._db[74]._onmouseup;
+$88 = {}
+$89 = {}
+$90= qx.core.Object._db[74]._onkeydown;
+$91 = {}
+$92 = {}
+$93= qx.core.Object._db[74]._onkeyup;
+$94 = 20;
+$95 = 50;
+$96 = qx.core.Init.getInstance().getComponent();
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$97 = new f;
+qx.core.Object._db[33] = $97;
+$98 = 33;
+$99 = {}
+var f = new Function();
+f.prototype = qx.ui.form.Button.prototype;
+$100 = new f;
+qx.core.Object._db[86] = $100;
+$100._valueElement = cssQuery("[qxhashcode=86]")[0];
+$100._element = $100._valueElement;
+$100._style = $100._valueElement.style;
+$100._valueElement.qx_Widget = $100;
+$101 = 86;
+$102 = {}
+$103 = {}
+$104 = {}
+$105 = {}
+$106 = {}
+$107 = [];
+var f = new Function();
+f.prototype = qx.ui.basic.Image.prototype;
+$108 = new f;
+qx.core.Object._db[90] = $108;
+$108._valueElement = cssQuery("[qxhashcode=90]")[0];
+$108._element = $108._valueElement;
+$108._style = $108._valueElement.style;
+$108._valueElement.qx_Widget = $108;
+$108._image = $108._valueElement.getElementsByTagName("img")[0];
+$109 = 90;
+$110 = {}
+$111 = {}
+$112 = {}
+$113 = {}
+$114 = {}
+$115 = "icon/32/appearance.png";
+var f = new Function();
+f.prototype = qx.ui.basic.Label.prototype;
+$116 = new f;
+qx.core.Object._db[89] = $116;
+$116._valueElement = cssQuery("[qxhashcode=89]")[0];
+$116._element = $116._valueElement;
+$116._style = $116._valueElement.style;
+$116._valueElement.qx_Widget = $116;
+$117 = 89;
+$118 = {}
+$119 = {}
+$120 = {}
+$121 = {}
+$122 = {}
+var f = new Function();
+f.prototype = qx.renderer.layout.HorizontalBoxLayoutImpl.prototype;
+$123 = new f;
+qx.core.Object._db[88] = $123;
+$124 = 88;
+$125 = {}
+$126 = {}
+$127 = {}
+$128= qx.core.Object._db[86]._onmouseover;
+$129 = {}
+$130 = {}
+$131= qx.core.Object._db[86]._onmouseout;
+$132 = {}
+$133 = {}
+$134= qx.core.Object._db[86]._onmousedown;
+$135 = {}
+$136 = {}
+$137= qx.core.Object._db[86]._onmouseup;
+$138 = {}
+$139 = {}
+$140= qx.core.Object._db[86]._onkeydown;
+$141 = {}
+$142 = {}
+$143= qx.core.Object._db[86]._onkeyup;
+$144 = 220;
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$145 = new f;
+qx.core.Object._db[18] = $145;
+$146 = {}
+$147 = 18;
+$148 = {}
+$149 = {}
+$150 = "2px outset";
+$151 = "threedlightshadow threedhighlight";
+$152 = "threeddarkshadow threedshadow";
+$153 = {}
+$154 = 2;
+$155 = "outset";
+$156 = "qx.renderer.border.BorderObject";
+$157 = "enabled,topWidth,rightWidth,bottomWidth,leftWidth,topStyle,rightStyle,bottomStyle,leftStyle,topColor,rightColor,bottomColor,leftColor";
+$158 = [];
+$159 = 12;
+$160 = 10;
+$161 = "qx.ui.form.Button";
+$162 = "enabled,parent,element,visibility,display,anonymous,tagName,horizontalAlign,verticalAlign,allowStretchX,allowStretchY,zIndex,backgroundColor,color,border,font,opacity,cursor,backgroundImage,overflow,clipLeft,clipTop,clipWidth,clipHeight,tabIndex,hideFocus,enableElementFocus,focused,selectable,toolTip,contextMenu,capture,dropDataTypes,command,appearance,marginTop,marginRight,marginBottom,marginLeft,paddingTop,paddingRight,paddingBottom,paddingLeft,left,right,width,minWidth,maxWidth,top,bottom,height,minHeight,maxHeight,focusManager,activeWidget,orientation,spacing,horizontalChildrenAlign,verticalChildrenAlign,reverseChildrenOrder,stretchChildrenOrthogonalAxis,useAdvancedFlexAllocation,label,icon,show,iconPosition,iconWidth,iconHeight";
+$163 = "both";
+$164 = "left";
+$165 = [];
+$166 = "add";
+$167 = "remove";
+$168 = "addAt";
+$169 = "addAtBegin";
+$170 = "addAtEnd";
+$171 = "removeAt";
+$172 = "addBefore";
+$173 = "addAfter";
+$174 = "removeAll";
+$175 = "getFirstChild";
+$176 = "getLastChild";
+$177 = "getFirstActiveChild";
+$178 = "getLastActiveChild";
+$179 = "getFirstVisibleChild";
+$180 = "getLastVisibleChild";
+$181 = "qx.renderer.color.ColorObject";
+var f = new Function();
+f.prototype = qx.manager.object.ColorManager.prototype;
+$182 = new f;
+qx.core.Object._db[1] = $182;
+$183 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$184 = new f;
+qx.core.Object._db[9] = $184;
+$185 = "threeddarkshadow";
+$186 = 9;
+$187 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$188 = new f;
+qx.core.Object._db[17] = $188;
+$189 = {}
+$190 = 17;
+$191 = {}
+$192 = {}
+$193 = {}
+$194 = "inset";
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$195 = new f;
+qx.core.Object._db[19] = $195;
+$196 = {}
+$197 = 19;
+$198 = {}
+$199 = {}
+$200 = {}
+$201 = "groove";
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$202 = new f;
+qx.core.Object._db[20] = $202;
+$203 = {}
+$204 = {}
+$205 = {}
+$206 = {}
+$207 = "ridge";
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$208 = new f;
+qx.core.Object._db[21] = $208;
+$209 = {}
+$210 = 21;
+$211 = {}
+$212 = {}
+$213 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$214 = new f;
+qx.core.Object._db[22] = $214;
+$215 = {}
+$216 = 22;
+$217 = {}
+$218 = {}
+$219 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$220 = new f;
+qx.core.Object._db[23] = $220;
+$221 = {}
+$222 = 23;
+$223 = {}
+$224 = {}
+$225 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$226 = new f;
+qx.core.Object._db[24] = $226;
+$227 = {}
+$228 = 24;
+$229 = {}
+$230 = {}
+$231 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$232 = new f;
+qx.core.Object._db[10] = $232;
+$233 = "threedshadow";
+$234 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$235 = new f;
+qx.core.Object._db[25] = $235;
+$236 = {}
+$237 = 25;
+$238 = {}
+$239 = {}
+$240 = {}
+$241 = "solid";
+var f = new Function();
+f.prototype = qx.renderer.border.Border.prototype;
+$242 = new f;
+qx.core.Object._db[40] = $242;
+$243 = {}
+$244 = {}
+$245 = {}
+$246 = "qx.renderer.border.Border";
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$247 = new f;
+qx.core.Object._db[53] = $247;
+$248 = {}
+$249 = 53;
+$250 = {}
+$251 = {}
+$252 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$253 = new f;
+qx.core.Object._db[54] = $253;
+$254 = {}
+$255 = {}
+$256 = {}
+$257 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$258 = new f;
+qx.core.Object._db[55] = $258;
+$259 = {}
+$260 = 55;
+$261 = {}
+$262 = {}
+$263 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$264 = new f;
+qx.core.Object._db[56] = $264;
+$265 = {}
+$266 = 56;
+$267 = {}
+$268 = {}
+$269 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.Border.prototype;
+$270 = new f;
+qx.core.Object._db[58] = $270;
+$271 = 58;
+$272 = {}
+$273 = {}
+$274 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$275 = new f;
+qx.core.Object._db[57] = $275;
+$276 = "#fec83c";
+$277 = 254;
+$278 = 200;
+$279 = 60;
+$280 = 57;
+$281 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.Border.prototype;
+$282 = new f;
+qx.core.Object._db[59] = $282;
+$283 = 59;
+$284 = {}
+$285 = {}
+$286 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.Border.prototype;
+$287 = new f;
+qx.core.Object._db[60] = $287;
+$288 = {}
+$289 = {}
+$290 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.Border.prototype;
+$291 = new f;
+qx.core.Object._db[61] = $291;
+$292 = 61;
+$293 = {}
+$294 = {}
+$295 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$296 = new f;
+qx.core.Object._db[11] = $296;
+$297 = "threedlightshadow";
+$298 = 11;
+$299 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$300 = new f;
+qx.core.Object._db[26] = $300;
+$301 = {}
+$302 = 26;
+$303 = {}
+$304 = {}
+$305 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$306 = new f;
+qx.core.Object._db[12] = $306;
+$307 = "threedhighlight";
+$308 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$309 = new f;
+qx.core.Object._db[28] = $309;
+$310 = "infotext";
+$311 = 28;
+$312 = {}
+var f = new Function();
+f.prototype = qx.renderer.border.BorderObject.prototype;
+$313 = new f;
+qx.core.Object._db[27] = $313;
+$314 = {}
+$315 = 27;
+$316 = {}
+$317 = {}
+$318 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$319 = new f;
+qx.core.Object._db[29] = $319;
+$320 = "graytext";
+$321 = 29;
+$322 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$323 = new f;
+qx.core.Object._db[36] = $323;
+$324 = "highlight";
+$325 = 36;
+$326 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$327 = new f;
+qx.core.Object._db[37] = $327;
+$328 = "highlighttext";
+$329 = 37;
+$330 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$331 = new f;
+qx.core.Object._db[41] = $331;
+$332 = "inactivecaption";
+$333 = 41;
+$334 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$335 = new f;
+qx.core.Object._db[42] = $335;
+$336 = "inactivecaptiontext";
+$337 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$338 = new f;
+qx.core.Object._db[43] = $338;
+$339 = "activecaption";
+$340 = 43;
+$341 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$342 = new f;
+qx.core.Object._db[44] = $342;
+$343 = "captiontext";
+$344 = 44;
+$345 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$346 = new f;
+qx.core.Object._db[45] = $346;
+$347 = "#e1eeff";
+$348 = 225;
+$349 = 238;
+$350 = 255;
+$351 = 45;
+$352 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$353 = new f;
+qx.core.Object._db[46] = $353;
+$354 = "#fafbfe";
+$355 = 250;
+$356 = 251;
+$357 = 46;
+$358 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$359 = new f;
+qx.core.Object._db[65] = $359;
+$360 = "threedface";
+$361 = 65;
+$362 = {}
+var f = new Function();
+f.prototype = qx.renderer.color.ColorObject.prototype;
+$363 = new f;
+qx.core.Object._db[66] = $363;
+$364 = "windowtext";
+$365 = 66;
+$366 = {}
+$367 = {}
+var f = new Function();
+f.prototype = qx.renderer.theme.ColorTheme.prototype;
+$368 = new f;
+qx.core.Object._db[2] = $368;
+$369 = "systemDefault";
+$370 = "Inherit Operating System";
+$371 = {}
+$372 = {}
+$373 = "activeborder";
+$374 = "appworkspace";
+$375 = "background";
+$376 = "buttonhighlight";
+$377 = "buttonshadow";
+$378 = "buttontext";
+$379 = "inactiveborder";
+$380 = "infobackground";
+$381 = "menu";
+$382 = "menutext";
+$383 = "scrollbar";
+$384 = "window";
+$385 = "windowframe";
+$386 = "qx.renderer.theme.ColorTheme";
+$387 = "enabled,id,title";
+var f = new Function();
+f.prototype = qx.renderer.theme.ColorTheme.prototype;
+$388 = new f;
+qx.core.Object._db[3] = $388;
+$389 = "windowsRoyale";
+$390 = "Windows XP Media Center";
+$391 = {}
+$392 = [];
+$393 = 212;
+$394 = 208;
+$395 = [];
+$396 = 51;
+$397 = 94;
+$398 = 168;
+$399 = [];
+$400 = 128;
+$401 = [];
+$402 = 64;
+$403 = [];
+$404 = 235;
+$405 = 233;
+$406 = 237;
+$407 = [];
+$408 = [];
+$409 = 167;
+$410 = 166;
+$411 = 170;
+$412 = [];
+$413 = [];
+$414 = [];
+$415 = [];
+$416 = [];
+$417 = [];
+$418 = [];
+$419 = 111;
+$420 = 161;
+$421 = 217;
+$422 = [];
+$423 = [];
+$424 = [];
+$425 = [];
+$426 = [];
+$427 = [];
+$428 = [];
+$429 = 133;
+$430 = 135;
+$431 = 140;
+$432 = [];
+$433 = [];
+$434 = [];
+$435 = 223;
+$436 = 228;
+$437 = [];
+$438 = [];
+$439 = [];
+$440 = [];
+$441 = {}
+var f = new Function();
+f.prototype = qx.renderer.theme.ColorTheme.prototype;
+$442 = new f;
+qx.core.Object._db[4] = $442;
+$443 = "windowsClassic";
+$444 = "Windows 2000";
+$445 = {}
+$446 = [];
+$447 = [];
+$448 = 106;
+$449 = [];
+$450 = [];
+$451 = 110;
+$452 = 165;
+$453 = [];
+$454 = [];
+$455 = [];
+$456 = [];
+$457 = [];
+$458 = [];
+$459 = [];
+$460 = [];
+$461 = [];
+$462 = [];
+$463 = [];
+$464 = [];
+$465 = [];
+$466 = [];
+$467 = [];
+$468 = [];
+$469 = [];
+$470 = [];
+$471 = [];
+$472 = [];
+$473 = [];
+$474 = [];
+$475 = [];
+$476 = [];
+$477 = {}
+var f = new Function();
+f.prototype = qx.renderer.theme.ColorTheme.prototype;
+$478 = new f;
+qx.core.Object._db[5] = $478;
+$479 = 5;
+$480 = "windowsLunaBlue";
+$481 = "Windows XP Luna Blue";
+$482 = {}
+$483 = [];
+$484 = [];
+$485 = 84;
+$486 = 227;
+$487 = [];
+$488 = [];
+$489 = 152;
+$490 = [];
+$491 = 236;
+$492 = 216;
+$493 = [];
+$494 = [];
+$495 = 172;
+$496 = 153;
+$497 = [];
+$498 = [];
+$499 = [];
+$500 = [];
+$501 = 49;
+$502 = 197;
+$503 = [];
+$504 = [];
+$505 = [];
+$506 = 122;
+$507 = 150;
+$508 = [];
+$509 = 248;
+$510 = [];
+$511 = [];
+$512 = [];
+$513 = [];
+$514 = [];
+$515 = [];
+$516 = 113;
+$517 = 100;
+$518 = [];
+$519 = [];
+$520 = [];
+$521 = 241;
+$522 = 239;
+$523 = 226;
+$524 = [];
+$525 = [];
+$526 = [];
+$527 = [];
+$528 = {}
+var f = new Function();
+f.prototype = qx.renderer.theme.ColorTheme.prototype;
+$529 = new f;
+qx.core.Object._db[6] = $529;
+$530 = 6;
+$531 = "windowsLunaGreen";
+$532 = "Windows XP Luna Green";
+$533 = {}
+$534 = [];
+$535 = [];
+$536 = 139;
+$537 = 105;
+$538 = [];
+$539 = [];
+$540 = 157;
+$541 = 189;
+$542 = [];
+$543 = [];
+$544 = [];
+$545 = [];
+$546 = [];
+$547 = [];
+$548 = [];
+$549 = 147;
+$550 = 160;
+$551 = 112;
+$552 = [];
+$553 = [];
+$554 = [];
+$555 = 214;
+$556 = 186;
+$557 = [];
+$558 = [];
+$559 = [];
+$560 = [];
+$561 = [];
+$562 = [];
+$563 = [];
+$564 = [];
+$565 = [];
+$566 = [];
+$567 = [];
+$568 = [];
+$569 = [];
+$570 = [];
+$571 = {}
+var f = new Function();
+f.prototype = qx.renderer.theme.ColorTheme.prototype;
+$572 = new f;
+qx.core.Object._db[7] = $572;
+$573 = 7;
+$574 = "windowsLunaSilver";
+$575 = "Windows XP Luna Silver";
+$576 = {}
+$577 = [];
+$578 = [];
+$579 = 192;
+$580 = [];
+$581 = [];
+$582 = 87;
+$583 = 104;
+$584 = [];
+$585 = 224;
+$586 = [];
+$587 = [];
+$588 = [];
+$589 = [];
+$590 = 14;
+$591 = 16;
+$592 = [];
+$593 = [];
+$594 = 178;
+$595 = 180;
+$596 = 191;
+$597 = [];
+$598 = [];
+$599 = [];
+$600 = [];
+$601 = 162;
+$602 = [];
+$603 = [];
+$604 = [];
+$605 = [];
+$606 = [];
+$607 = [];
+$608 = [];
+$609 = [];
+$610 = [];
+$611 = [];
+$612 = [];
+$613 = [];
+$614 = [];
+$615 = {}
+$616 = {}
+$617 = "qx.manager.object.ColorManager";
+$618 = "enabled,theme";
+$619 = [];
+$0._hashCode = $1;
+$0._htmlProperties = $2;
+$0._htmlAttributes = $4;
+$0._styleProperties = $5;
+$0._layoutChanges = $10;
+$0._states = $11;
+$0._valueSelectable = $13;
+$0._valueTabIndex = $14;
+$0._valueSpacing = $15;
+$0._valueWidth = $16;
+$0._computedWidthType = $17;
+$0._computedWidthTypeAuto = $12;
+$0._computedWidthTypeNull = $13;
+$0._computedWidthTypeFlex = $13;
+$0._computedWidthTypePercent = $13;
+$0._computedWidthTypePixel = $13;
+$0._computedWidthValue = $18;
+$0._computedWidthParsed = $19;
+$0._cachedHasAutoX = $19;
+$0._valueHeight = $16;
+$0._computedHeightType = $17;
+$0._computedHeightTypeAuto = $12;
+$0._computedHeightTypeNull = $13;
+$0._computedHeightTypeFlex = $13;
+$0._computedHeightTypePercent = $13;
+$0._computedHeightTypePixel = $13;
+$0._computedHeightValue = $20;
+$0._computedHeightParsed = $19;
+$0._cachedHasAutoY = $19;
+$0._valueHorizontalChildrenAlign = $21;
+$0._layoutMode = $21;
+$0._valueVerticalChildrenAlign = $22;
+$0._valueStretchChildrenOrthogonalAxis = $13;
+$0._valuePaddingTop = $17;
+$0._valuePaddingRight = $15;
+$0._valuePaddingBottom = $17;
+$0._valuePaddingLeft = $15;
+$0._children = $23;
+$0._layoutImpl = $69;
+$0._valueOrientation = $73;
+$0._layoutHorizontal = $12;
+$0._layoutVertical = $13;
+$0._valueCursor = $8;
+$0._valueLabel = $64;
+$0._labelIsVisible = $12;
+$0._label = $54;
+$0._valueIcon = $34;
+$0._iconIsVisible = $12;
+$0._icon = $24;
+$0._listeners = $74;
+$0._valueLeft = $94;
+$0._computedLeftType = $14;
+$0._computedLeftTypePixel = $12;
+$0._computedLeftTypeNull = $13;
+$0._computedLeftTypePercent = $13;
+$0._computedLeftValue = $94;
+$0._computedLeftParsed = $94;
+$0._valueTop = $95;
+$0._computedTopType = $14;
+$0._computedTopTypePixel = $12;
+$0._computedTopTypeNull = $13;
+$0._computedTopTypePercent = $13;
+$0._computedTopValue = $95;
+$0._computedTopParsed = $95;
+$0._valueParent = $96;
+$0._hasParent = $12;
+$0._isDisplayable = $12;
+$0._isCreated = $12;
+$0._valueBackgroundColor = $97;
+$0._valueBorder = $145;
+$0._cachedBorderTop = $154;
+$0._cachedBorderRight = $154;
+$0._cachedBorderBottom = $154;
+$0._cachedBorderLeft = $154;
+$0._cachedVisibleChildren = $619;
+$0._cachedPreferredInnerWidth = $109;
+$0._cachedFrameWidth = $159;
+$0._cachedPreferredBoxWidth = $18;
+$0._cachedPreferredInnerHeight = $35;
+$0._cachedFrameHeight = $160;
+$0._cachedPreferredBoxHeight = $20;
+$0._initialLayoutDone = $12;
+$0._cachedBoxWidth = $18;
+$0._cachedInnerWidth = $109;
+$0._cachedAccumulatedChildrenOuterWidth = $109;
+$0._cachedBoxHeight = $20;
+$0._cachedInnerHeight = $35;
+$0._isSeeable = $12;
+$0.classname = $161;
+$0._properties = $162;
+$0._valueShow = $163;
+$0._valueIconPosition = $164;
+$0._valueIconWidth = $19;
+$0._valueIconHeight = $19;
+$0._flashMode = $13;
+$0._valueReverseChildrenOrder = $13;
+$0._valueUseAdvancedFlexAllocation = $13;
+$0._cachedAccumulatedChildrenOuterHeight = $19;
+$0._valueFocusManager = $19;
+$0._valueActiveChild = $19;
+$0._remappingChildTable = $165;
+$0._valueVisibility = $12;
+$0._valueDisplay = $12;
+$0._valueAnonymous = $13;
+$0._valueTagName = $51;
+$0._valueHorizontalAlign = $19;
+$0._valueVerticalAlign = $19;
+$0._valueAllowStretchX = $12;
+$0._valueAllowStretchY = $12;
+$0._valueZIndex = $19;
+$0._valueColor = $19;
+$0._valueFont = $19;
+$0._valueOpacity = $19;
+$0._valueBackgroundImage = $19;
+$0._valueOverflow = $19;
+$0._valueClipLeft = $19;
+$0._valueClipTop = $19;
+$0._valueClipWidth = $19;
+$0._valueClipHeight = $19;
+$0._valueHideFocus = $13;
+$0._valueEnableElementFocus = $12;
+$0._valueFocused = $13;
+$0._valueToolTip = $19;
+$0._valueContextMenu = $19;
+$0._valueCapture = $13;
+$0._valueDropDataTypes = $19;
+$0._valueCommand = $19;
+$0._valueAppearance = $19;
+$0._valueMarginTop = $48;
+$0._valueMarginRight = $48;
+$0._valueMarginBottom = $48;
+$0._valueMarginLeft = $48;
+$0._computedLeftTypeAuto = $13;
+$0._computedLeftTypeFlex = $13;
+$0._computedRightValue = $19;
+$0._computedRightParsed = $19;
+$0._computedRightType = $19;
+$0._computedRightTypeNull = $12;
+$0._computedRightTypePixel = $13;
+$0._computedRightTypePercent = $13;
+$0._computedRightTypeAuto = $13;
+$0._computedRightTypeFlex = $13;
+$0._valueRight = $19;
+$0._computedMinWidthValue = $19;
+$0._computedMinWidthParsed = $19;
+$0._computedMinWidthType = $19;
+$0._computedMinWidthTypeNull = $12;
+$0._computedMinWidthTypePixel = $13;
+$0._computedMinWidthTypePercent = $13;
+$0._computedMinWidthTypeAuto = $13;
+$0._computedMinWidthTypeFlex = $13;
+$0._valueMinWidth = $19;
+$0._computedMaxWidthValue = $19;
+$0._computedMaxWidthParsed = $19;
+$0._computedMaxWidthType = $19;
+$0._computedMaxWidthTypeNull = $12;
+$0._computedMaxWidthTypePixel = $13;
+$0._computedMaxWidthTypePercent = $13;
+$0._computedMaxWidthTypeAuto = $13;
+$0._computedMaxWidthTypeFlex = $13;
+$0._valueMaxWidth = $19;
+$0._computedTopTypeAuto = $13;
+$0._computedTopTypeFlex = $13;
+$0._computedBottomValue = $19;
+$0._computedBottomParsed = $19;
+$0._computedBottomType = $19;
+$0._computedBottomTypeNull = $12;
+$0._computedBottomTypePixel = $13;
+$0._computedBottomTypePercent = $13;
+$0._computedBottomTypeAuto = $13;
+$0._computedBottomTypeFlex = $13;
+$0._valueBottom = $19;
+$0._computedMinHeightValue = $19;
+$0._computedMinHeightParsed = $19;
+$0._computedMinHeightType = $19;
+$0._computedMinHeightTypeNull = $12;
+$0._computedMinHeightTypePixel = $13;
+$0._computedMinHeightTypePercent = $13;
+$0._computedMinHeightTypeAuto = $13;
+$0._computedMinHeightTypeFlex = $13;
+$0._valueMinHeight = $19;
+$0._computedMaxHeightValue = $19;
+$0._computedMaxHeightParsed = $19;
+$0._computedMaxHeightType = $19;
+$0._computedMaxHeightTypeNull = $12;
+$0._computedMaxHeightTypePixel = $13;
+$0._computedMaxHeightTypePercent = $13;
+$0._computedMaxHeightTypeAuto = $13;
+$0._computedMaxHeightTypeFlex = $13;
+$0._valueMaxHeight = $19;
+$0._isDisplayed = $12;
+$0._cachedOuterWidth = $19;
+$0._cachedOuterHeight = $19;
+$0._cachedHasPercentX = $13;
+$0._cachedHasPercentY = $13;
+$0._cachedHasFlexX = $13;
+$0._cachedHasFlexY = $13;
+$0._clonePropertyIgnoreList = $53;
+$0._valueEnabled = $12;
+$0._disposed = $13;
+$2["className"] = $3;
+$4["qxhashcode"] = $1;
+$5["MozUserSelect"] = $6;
+$5["userSelect"] = $6;
+$5["MozUserFocus"] = $7;
+$5["userFocus"] = $7;
+$5["cursor"] = $8;
+$5["backgroundColor"] = $9;
+$11["out"] = $12;
+$11["blurred"] = $12;
+$11["enabled"] = $12;
+$11["inactive"] = $12;
+$11["unchecked"] = $12;
+$11["notpressed"] = $12;
+$11["notselected"] = $12;
+$11["notanchor"] = $12;
+$11["notlead"] = $12;
+$23[0] = $24;
+$23[1] = $54;
+$24._hashCode = $25;
+$24._htmlProperties = $26;
+$24._htmlAttributes = $29;
+$24._styleProperties = $30;
+$24._layoutChanges = $31;
+$24._states = $32;
+$24._manager = $33;
+$24._valueSelectable = $13;
+$24._valueAllowStretchX = $13;
+$24._valueAllowStretchY = $13;
+$24._valueSource = $34;
+$24._valueWidth = $16;
+$24._computedWidthType = $17;
+$24._computedWidthTypeAuto = $12;
+$24._computedWidthTypeNull = $13;
+$24._computedWidthTypeFlex = $13;
+$24._computedWidthTypePercent = $13;
+$24._computedWidthTypePixel = $13;
+$24._computedWidthValue = $35;
+$24._computedWidthParsed = $19;
+$24._cachedHasAutoX = $19;
+$24._valueHeight = $16;
+$24._computedHeightType = $17;
+$24._computedHeightTypeAuto = $12;
+$24._computedHeightTypeNull = $13;
+$24._computedHeightTypeFlex = $13;
+$24._computedHeightTypePercent = $13;
+$24._computedHeightTypePixel = $13;
+$24._computedHeightValue = $35;
+$24._computedHeightParsed = $19;
+$24._cachedHasAutoY = $19;
+$24._valueAnonymous = $12;
+$24._valueParent = $0;
+$24._hasParent = $12;
+$24._isDisplayable = $12;
+$24._isCreated = $12;
+$24._valuePreloader = $36;
+$24._valueLoaded = $12;
+$24._cachedPreferredInnerWidth = $35;
+$24._cachedFrameWidth = $48;
+$24._cachedPreferredBoxWidth = $35;
+$24._cachedPreferredInnerHeight = $35;
+$24._cachedFrameHeight = $48;
+$24._cachedPreferredBoxHeight = $35;
+$24._cachedBoxWidth = $35;
+$24._cachedOuterWidth = $35;
+$24._cachedLocationHorizontal = $15;
+$24._cachedBoxHeight = $35;
+$24._cachedOuterHeight = $35;
+$24._initialLayoutDone = $12;
+$24._isSeeable = $12;
+$24.classname = $49;
+$24._properties = $50;
+$24._valueResizeToInner = $13;
+$24._valueVisibility = $12;
+$24._valueDisplay = $12;
+$24._valueTagName = $51;
+$24._valueHorizontalAlign = $19;
+$24._valueVerticalAlign = $19;
+$24._valueZIndex = $19;
+$24._valueBackgroundColor = $19;
+$24._valueColor = $19;
+$24._valueBorder = $19;
+$24._valueFont = $19;
+$24._valueOpacity = $19;
+$24._valueCursor = $19;
+$24._valueBackgroundImage = $19;
+$24._valueOverflow = $19;
+$24._valueClipLeft = $19;
+$24._valueClipTop = $19;
+$24._valueClipWidth = $19;
+$24._valueClipHeight = $19;
+$24._valueTabIndex = $52;
+$24._valueHideFocus = $13;
+$24._valueEnableElementFocus = $12;
+$24._valueFocused = $13;
+$24._valueToolTip = $19;
+$24._valueContextMenu = $19;
+$24._valueCapture = $13;
+$24._valueDropDataTypes = $19;
+$24._valueCommand = $19;
+$24._valueAppearance = $19;
+$24._valueMarginTop = $48;
+$24._valueMarginRight = $48;
+$24._valueMarginBottom = $48;
+$24._valueMarginLeft = $48;
+$24._valuePaddingTop = $48;
+$24._valuePaddingRight = $48;
+$24._valuePaddingBottom = $48;
+$24._valuePaddingLeft = $48;
+$24._computedLeftValue = $19;
+$24._computedLeftParsed = $19;
+$24._computedLeftType = $19;
+$24._computedLeftTypeNull = $12;
+$24._computedLeftTypePixel = $13;
+$24._computedLeftTypePercent = $13;
+$24._computedLeftTypeAuto = $13;
+$24._computedLeftTypeFlex = $13;
+$24._valueLeft = $19;
+$24._computedRightValue = $19;
+$24._computedRightParsed = $19;
+$24._computedRightType = $19;
+$24._computedRightTypeNull = $12;
+$24._computedRightTypePixel = $13;
+$24._computedRightTypePercent = $13;
+$24._computedRightTypeAuto = $13;
+$24._computedRightTypeFlex = $13;
+$24._valueRight = $19;
+$24._computedMinWidthValue = $19;
+$24._computedMinWidthParsed = $19;
+$24._computedMinWidthType = $19;
+$24._computedMinWidthTypeNull = $12;
+$24._computedMinWidthTypePixel = $13;
+$24._computedMinWidthTypePercent = $13;
+$24._computedMinWidthTypeAuto = $13;
+$24._computedMinWidthTypeFlex = $13;
+$24._valueMinWidth = $19;
+$24._computedMaxWidthValue = $19;
+$24._computedMaxWidthParsed = $19;
+$24._computedMaxWidthType = $19;
+$24._computedMaxWidthTypeNull = $12;
+$24._computedMaxWidthTypePixel = $13;
+$24._computedMaxWidthTypePercent = $13;
+$24._computedMaxWidthTypeAuto = $13;
+$24._computedMaxWidthTypeFlex = $13;
+$24._valueMaxWidth = $19;
+$24._computedTopValue = $19;
+$24._computedTopParsed = $19;
+$24._computedTopType = $19;
+$24._computedTopTypeNull = $12;
+$24._computedTopTypePixel = $13;
+$24._computedTopTypePercent = $13;
+$24._computedTopTypeAuto = $13;
+$24._computedTopTypeFlex = $13;
+$24._valueTop = $19;
+$24._computedBottomValue = $19;
+$24._computedBottomParsed = $19;
+$24._computedBottomType = $19;
+$24._computedBottomTypeNull = $12;
+$24._computedBottomTypePixel = $13;
+$24._computedBottomTypePercent = $13;
+$24._computedBottomTypeAuto = $13;
+$24._computedBottomTypeFlex = $13;
+$24._valueBottom = $19;
+$24._computedMinHeightValue = $19;
+$24._computedMinHeightParsed = $19;
+$24._computedMinHeightType = $19;
+$24._computedMinHeightTypeNull = $12;
+$24._computedMinHeightTypePixel = $13;
+$24._computedMinHeightTypePercent = $13;
+$24._computedMinHeightTypeAuto = $13;
+$24._computedMinHeightTypeFlex = $13;
+$24._valueMinHeight = $19;
+$24._computedMaxHeightValue = $19;
+$24._computedMaxHeightParsed = $19;
+$24._computedMaxHeightType = $19;
+$24._computedMaxHeightTypeNull = $12;
+$24._computedMaxHeightTypePixel = $13;
+$24._computedMaxHeightTypePercent = $13;
+$24._computedMaxHeightTypeAuto = $13;
+$24._computedMaxHeightTypeFlex = $13;
+$24._valueMaxHeight = $19;
+$24._isDisplayed = $12;
+$24._cachedInnerWidth = $19;
+$24._cachedInnerHeight = $19;
+$24._cachedHasPercentX = $13;
+$24._cachedHasPercentY = $13;
+$24._cachedHasFlexX = $13;
+$24._cachedHasFlexY = $13;
+$24._cachedBorderTop = $48;
+$24._cachedBorderRight = $48;
+$24._cachedBorderBottom = $48;
+$24._cachedBorderLeft = $48;
+$24._clonePropertyIgnoreList = $53;
+$24._valueEnabled = $12;
+$24._disposed = $13;
+$26["className"] = $27;
+$26["alt"] = $28;
+$26["title"] = $28;
+$29["qxhashcode"] = $25;
+$30["MozUserSelect"] = $6;
+$30["userSelect"] = $6;
+$32["out"] = $12;
+$32["blurred"] = $12;
+$32["enabled"] = $12;
+$32["inactive"] = $12;
+$32["unchecked"] = $12;
+$32["notpressed"] = $12;
+$32["notselected"] = $12;
+$32["notanchor"] = $12;
+$32["notlead"] = $12;
+$36._hashCode = $37;
+$36._source = $38;
+$36._isLoaded = $12;
+$36._isError = $13;
+$36.classname = $39;
+$36._manager = $40;
+$36._isPng = $13;
+$36._valueEnabled = $12;
+$36._properties = $46;
+$36._disposed = $13;
+$40._hashCode = $41;
+$40._objects = $42;
+$40.classname = $47;
+$40._valueEnabled = $12;
+$40._properties = $46;
+$40._disposed = $13;
+$42["../../images/icons/crystalsvg/32/penguin.png"] = $36;
+$42["../../images/icons/crystalsvg/32/appearance.png"] = $43;
+$43._hashCode = $44;
+$43._source = $45;
+$43._isLoaded = $12;
+$43._isError = $13;
+$43.classname = $39;
+$43._manager = $40;
+$43._isPng = $13;
+$43._valueEnabled = $12;
+$43._properties = $46;
+$43._disposed = $13;
+$54._hashCode = $55;
+$54._htmlProperties = $56;
+$54._htmlAttributes = $58;
+$54._styleProperties = $59;
+$54._layoutChanges = $60;
+$54._states = $61;
+$54._valueAllowStretchX = $13;
+$54._valueAllowStretchY = $13;
+$54._valueWidth = $16;
+$54._computedWidthType = $17;
+$54._computedWidthTypeAuto = $12;
+$54._computedWidthTypeNull = $13;
+$54._computedWidthTypeFlex = $13;
+$54._computedWidthTypePercent = $13;
+$54._computedWidthTypePixel = $13;
+$54._computedWidthValue = $62;
+$54._computedWidthParsed = $19;
+$54._cachedHasAutoX = $19;
+$54._valueHeight = $16;
+$54._computedHeightType = $17;
+$54._computedHeightTypeAuto = $12;
+$54._computedHeightTypeNull = $13;
+$54._computedHeightTypeFlex = $13;
+$54._computedHeightTypePercent = $13;
+$54._computedHeightTypePixel = $13;
+$54._computedHeightValue = $63;
+$54._computedHeightParsed = $19;
+$54._cachedHasAutoY = $19;
+$54._valueAnonymous = $12;
+$54._valueSelectable = $13;
+$54._valueHtml = $64;
+$54._htmlMode = $19;
+$54._valueParent = $0;
+$54._hasParent = $12;
+$54._isDisplayable = $12;
+$54._isCreated = $12;
+$54._cachedPreferredInnerWidth = $62;
+$54._cachedPreferredInnerHeight = $63;
+$54._cachedFrameWidth = $48;
+$54._cachedPreferredBoxWidth = $62;
+$54._cachedFrameHeight = $48;
+$54._cachedPreferredBoxHeight = $63;
+$54._cachedBoxWidth = $62;
+$54._cachedOuterWidth = $62;
+$54._cachedLocationHorizontal = $65;
+$54._cachedBoxHeight = $63;
+$54._cachedOuterHeight = $63;
+$54._initialLayoutDone = $12;
+$54._isSeeable = $12;
+$54.classname = $66;
+$54._properties = $67;
+$54._valueFontPropertiesProfile = $8;
+$54._valueMeasureMode = $68;
+$54._valueMnemonic = $19;
+$54._hasMnemonic = $13;
+$54._mnemonicHtml = $28;
+$54._mnemonicTest = $19;
+$54._valueVisibility = $12;
+$54._valueDisplay = $12;
+$54._valueTagName = $51;
+$54._valueHorizontalAlign = $19;
+$54._valueVerticalAlign = $19;
+$54._valueZIndex = $19;
+$54._valueBackgroundColor = $19;
+$54._valueColor = $19;
+$54._valueBorder = $19;
+$54._valueFont = $19;
+$54._valueOpacity = $19;
+$54._valueCursor = $19;
+$54._valueBackgroundImage = $19;
+$54._valueOverflow = $19;
+$54._valueClipLeft = $19;
+$54._valueClipTop = $19;
+$54._valueClipWidth = $19;
+$54._valueClipHeight = $19;
+$54._valueTabIndex = $52;
+$54._valueHideFocus = $13;
+$54._valueEnableElementFocus = $12;
+$54._valueFocused = $13;
+$54._valueToolTip = $19;
+$54._valueContextMenu = $19;
+$54._valueCapture = $13;
+$54._valueDropDataTypes = $19;
+$54._valueCommand = $19;
+$54._valueAppearance = $19;
+$54._valueMarginTop = $48;
+$54._valueMarginRight = $48;
+$54._valueMarginBottom = $48;
+$54._valueMarginLeft = $48;
+$54._valuePaddingTop = $48;
+$54._valuePaddingRight = $48;
+$54._valuePaddingBottom = $48;
+$54._valuePaddingLeft = $48;
+$54._computedLeftValue = $19;
+$54._computedLeftParsed = $19;
+$54._computedLeftType = $19;
+$54._computedLeftTypeNull = $12;
+$54._computedLeftTypePixel = $13;
+$54._computedLeftTypePercent = $13;
+$54._computedLeftTypeAuto = $13;
+$54._computedLeftTypeFlex = $13;
+$54._valueLeft = $19;
+$54._computedRightValue = $19;
+$54._computedRightParsed = $19;
+$54._computedRightType = $19;
+$54._computedRightTypeNull = $12;
+$54._computedRightTypePixel = $13;
+$54._computedRightTypePercent = $13;
+$54._computedRightTypeAuto = $13;
+$54._computedRightTypeFlex = $13;
+$54._valueRight = $19;
+$54._computedMinWidthValue = $19;
+$54._computedMinWidthParsed = $19;
+$54._computedMinWidthType = $19;
+$54._computedMinWidthTypeNull = $12;
+$54._computedMinWidthTypePixel = $13;
+$54._computedMinWidthTypePercent = $13;
+$54._computedMinWidthTypeAuto = $13;
+$54._computedMinWidthTypeFlex = $13;
+$54._valueMinWidth = $19;
+$54._computedMaxWidthValue = $19;
+$54._computedMaxWidthParsed = $19;
+$54._computedMaxWidthType = $19;
+$54._computedMaxWidthTypeNull = $12;
+$54._computedMaxWidthTypePixel = $13;
+$54._computedMaxWidthTypePercent = $13;
+$54._computedMaxWidthTypeAuto = $13;
+$54._computedMaxWidthTypeFlex = $13;
+$54._valueMaxWidth = $19;
+$54._computedTopValue = $19;
+$54._computedTopParsed = $19;
+$54._computedTopType = $19;
+$54._computedTopTypeNull = $12;
+$54._computedTopTypePixel = $13;
+$54._computedTopTypePercent = $13;
+$54._computedTopTypeAuto = $13;
+$54._computedTopTypeFlex = $13;
+$54._valueTop = $19;
+$54._computedBottomValue = $19;
+$54._computedBottomParsed = $19;
+$54._computedBottomType = $19;
+$54._computedBottomTypeNull = $12;
+$54._computedBottomTypePixel = $13;
+$54._computedBottomTypePercent = $13;
+$54._computedBottomTypeAuto = $13;
+$54._computedBottomTypeFlex = $13;
+$54._valueBottom = $19;
+$54._computedMinHeightValue = $19;
+$54._computedMinHeightParsed = $19;
+$54._computedMinHeightType = $19;
+$54._computedMinHeightTypeNull = $12;
+$54._computedMinHeightTypePixel = $13;
+$54._computedMinHeightTypePercent = $13;
+$54._computedMinHeightTypeAuto = $13;
+$54._computedMinHeightTypeFlex = $13;
+$54._valueMinHeight = $19;
+$54._computedMaxHeightValue = $19;
+$54._computedMaxHeightParsed = $19;
+$54._computedMaxHeightType = $19;
+$54._computedMaxHeightTypeNull = $12;
+$54._computedMaxHeightTypePixel = $13;
+$54._computedMaxHeightTypePercent = $13;
+$54._computedMaxHeightTypeAuto = $13;
+$54._computedMaxHeightTypeFlex = $13;
+$54._valueMaxHeight = $19;
+$54._isDisplayed = $12;
+$54._cachedInnerWidth = $19;
+$54._cachedInnerHeight = $19;
+$54._cachedHasPercentX = $13;
+$54._cachedHasPercentY = $13;
+$54._cachedHasFlexX = $13;
+$54._cachedHasFlexY = $13;
+$54._cachedBorderTop = $48;
+$54._cachedBorderRight = $48;
+$54._cachedBorderBottom = $48;
+$54._cachedBorderLeft = $48;
+$54._clonePropertyIgnoreList = $53;
+$54._valueEnabled = $12;
+$54._disposed = $13;
+$56["className"] = $57;
+$58["qxhashcode"] = $55;
+$59["MozUserSelect"] = $6;
+$59["userSelect"] = $6;
+$61["out"] = $12;
+$61["blurred"] = $12;
+$61["enabled"] = $12;
+$61["inactive"] = $12;
+$61["unchecked"] = $12;
+$61["notpressed"] = $12;
+$61["notselected"] = $12;
+$61["notanchor"] = $12;
+$61["notlead"] = $12;
+$69._hashCode = $70;
+$69._widget = $0;
+$69.classname = $71;
+$69._valueEnableFlexSupport = $12;
+$69._properties = $72;
+$69._valueEnabled = $12;
+$69._disposed = $13;
+$74["mouseover"] = $75;
+$74["mouseout"] = $79;
+$74["mousedown"] = $82;
+$74["mouseup"] = $85;
+$74["keydown"] = $88;
+$74["keyup"] = $91;
+$75["evt80"] = $76;
+$76["handler"] = $77;
+$76["object"] = $78;
+$79["evt81"] = $80;
+$80["handler"] = $81;
+$80["object"] = $78;
+$82["evt82"] = $83;
+$83["handler"] = $84;
+$83["object"] = $78;
+$85["evt83"] = $86;
+$86["handler"] = $87;
+$86["object"] = $78;
+$88["evt84"] = $89;
+$89["handler"] = $90;
+$89["object"] = $78;
+$91["evt85"] = $92;
+$92["handler"] = $93;
+$92["object"] = $78;
+$97._isHtmlColor = $13;
+$97._isRgbColor = $13;
+$97._isThemedColor = $12;
+$97._hex = $19;
+$97._blue = $19;
+$97._green = $19;
+$97._red = $19;
+$97._value = $9;
+$97._hashCode = $98;
+$97._dependentObjects = $99;
+$97.classname = $181;
+$97._manager = $182;
+$97._valueEnabled = $12;
+$97._properties = $46;
+$97._disposed = $13;
+$99["74"] = $0;
+$99["86"] = $100;
+$100._hashCode = $101;
+$100._htmlProperties = $102;
+$100._htmlAttributes = $103;
+$100._styleProperties = $104;
+$100._layoutChanges = $105;
+$100._states = $106;
+$100._valueSelectable = $13;
+$100._valueTabIndex = $14;
+$100._valueSpacing = $15;
+$100._valueWidth = $16;
+$100._computedWidthType = $17;
+$100._computedWidthTypeAuto = $12;
+$100._computedWidthTypeNull = $13;
+$100._computedWidthTypeFlex = $13;
+$100._computedWidthTypePercent = $13;
+$100._computedWidthTypePixel = $13;
+$100._computedWidthValue = $18;
+$100._computedWidthParsed = $19;
+$100._cachedHasAutoX = $19;
+$100._valueHeight = $16;
+$100._computedHeightType = $17;
+$100._computedHeightTypeAuto = $12;
+$100._computedHeightTypeNull = $13;
+$100._computedHeightTypeFlex = $13;
+$100._computedHeightTypePercent = $13;
+$100._computedHeightTypePixel = $13;
+$100._computedHeightValue = $20;
+$100._computedHeightParsed = $19;
+$100._cachedHasAutoY = $19;
+$100._valueHorizontalChildrenAlign = $21;
+$100._layoutMode = $21;
+$100._valueVerticalChildrenAlign = $22;
+$100._valueStretchChildrenOrthogonalAxis = $13;
+$100._valuePaddingTop = $17;
+$100._valuePaddingRight = $15;
+$100._valuePaddingBottom = $17;
+$100._valuePaddingLeft = $15;
+$100._children = $107;
+$100._layoutImpl = $123;
+$100._valueOrientation = $73;
+$100._layoutHorizontal = $12;
+$100._layoutVertical = $13;
+$100._valueCursor = $8;
+$100._valueLabel = $64;
+$100._labelIsVisible = $12;
+$100._label = $116;
+$100._valueIcon = $115;
+$100._iconIsVisible = $12;
+$100._icon = $108;
+$100._listeners = $125;
+$100._valueLeft = $144;
+$100._computedLeftType = $14;
+$100._computedLeftTypePixel = $12;
+$100._computedLeftTypeNull = $13;
+$100._computedLeftTypePercent = $13;
+$100._computedLeftValue = $144;
+$100._computedLeftParsed = $144;
+$100._valueTop = $95;
+$100._computedTopType = $14;
+$100._computedTopTypePixel = $12;
+$100._computedTopTypeNull = $13;
+$100._computedTopTypePercent = $13;
+$100._computedTopValue = $95;
+$100._computedTopParsed = $95;
+$100._valueParent = $96;
+$100._hasParent = $12;
+$100._isDisplayable = $12;
+$100._isCreated = $12;
+$100._valueBackgroundColor = $97;
+$100._valueBorder = $145;
+$100._cachedBorderTop = $154;
+$100._cachedBorderRight = $154;
+$100._cachedBorderBottom = $154;
+$100._cachedBorderLeft = $154;
+$100._cachedVisibleChildren = $158;
+$100._cachedPreferredInnerWidth = $109;
+$100._cachedFrameWidth = $159;
+$100._cachedPreferredBoxWidth = $18;
+$100._cachedPreferredInnerHeight = $35;
+$100._cachedFrameHeight = $160;
+$100._cachedPreferredBoxHeight = $20;
+$100._initialLayoutDone = $12;
+$100._cachedBoxWidth = $18;
+$100._cachedInnerWidth = $109;
+$100._cachedAccumulatedChildrenOuterWidth = $109;
+$100._cachedBoxHeight = $20;
+$100._cachedInnerHeight = $35;
+$100._isSeeable = $12;
+$100.classname = $161;
+$100._properties = $162;
+$100._valueShow = $163;
+$100._valueIconPosition = $164;
+$100._valueIconWidth = $19;
+$100._valueIconHeight = $19;
+$100._flashMode = $13;
+$100._valueReverseChildrenOrder = $13;
+$100._valueUseAdvancedFlexAllocation = $13;
+$100._cachedAccumulatedChildrenOuterHeight = $19;
+$100._valueFocusManager = $19;
+$100._valueActiveChild = $19;
+$100._remappingChildTable = $165;
+$100._valueVisibility = $12;
+$100._valueDisplay = $12;
+$100._valueAnonymous = $13;
+$100._valueTagName = $51;
+$100._valueHorizontalAlign = $19;
+$100._valueVerticalAlign = $19;
+$100._valueAllowStretchX = $12;
+$100._valueAllowStretchY = $12;
+$100._valueZIndex = $19;
+$100._valueColor = $19;
+$100._valueFont = $19;
+$100._valueOpacity = $19;
+$100._valueBackgroundImage = $19;
+$100._valueOverflow = $19;
+$100._valueClipLeft = $19;
+$100._valueClipTop = $19;
+$100._valueClipWidth = $19;
+$100._valueClipHeight = $19;
+$100._valueHideFocus = $13;
+$100._valueEnableElementFocus = $12;
+$100._valueFocused = $13;
+$100._valueToolTip = $19;
+$100._valueContextMenu = $19;
+$100._valueCapture = $13;
+$100._valueDropDataTypes = $19;
+$100._valueCommand = $19;
+$100._valueAppearance = $19;
+$100._valueMarginTop = $48;
+$100._valueMarginRight = $48;
+$100._valueMarginBottom = $48;
+$100._valueMarginLeft = $48;
+$100._computedLeftTypeAuto = $13;
+$100._computedLeftTypeFlex = $13;
+$100._computedRightValue = $19;
+$100._computedRightParsed = $19;
+$100._computedRightType = $19;
+$100._computedRightTypeNull = $12;
+$100._computedRightTypePixel = $13;
+$100._computedRightTypePercent = $13;
+$100._computedRightTypeAuto = $13;
+$100._computedRightTypeFlex = $13;
+$100._valueRight = $19;
+$100._computedMinWidthValue = $19;
+$100._computedMinWidthParsed = $19;
+$100._computedMinWidthType = $19;
+$100._computedMinWidthTypeNull = $12;
+$100._computedMinWidthTypePixel = $13;
+$100._computedMinWidthTypePercent = $13;
+$100._computedMinWidthTypeAuto = $13;
+$100._computedMinWidthTypeFlex = $13;
+$100._valueMinWidth = $19;
+$100._computedMaxWidthValue = $19;
+$100._computedMaxWidthParsed = $19;
+$100._computedMaxWidthType = $19;
+$100._computedMaxWidthTypeNull = $12;
+$100._computedMaxWidthTypePixel = $13;
+$100._computedMaxWidthTypePercent = $13;
+$100._computedMaxWidthTypeAuto = $13;
+$100._computedMaxWidthTypeFlex = $13;
+$100._valueMaxWidth = $19;
+$100._computedTopTypeAuto = $13;
+$100._computedTopTypeFlex = $13;
+$100._computedBottomValue = $19;
+$100._computedBottomParsed = $19;
+$100._computedBottomType = $19;
+$100._computedBottomTypeNull = $12;
+$100._computedBottomTypePixel = $13;
+$100._computedBottomTypePercent = $13;
+$100._computedBottomTypeAuto = $13;
+$100._computedBottomTypeFlex = $13;
+$100._valueBottom = $19;
+$100._computedMinHeightValue = $19;
+$100._computedMinHeightParsed = $19;
+$100._computedMinHeightType = $19;
+$100._computedMinHeightTypeNull = $12;
+$100._computedMinHeightTypePixel = $13;
+$100._computedMinHeightTypePercent = $13;
+$100._computedMinHeightTypeAuto = $13;
+$100._computedMinHeightTypeFlex = $13;
+$100._valueMinHeight = $19;
+$100._computedMaxHeightValue = $19;
+$100._computedMaxHeightParsed = $19;
+$100._computedMaxHeightType = $19;
+$100._computedMaxHeightTypeNull = $12;
+$100._computedMaxHeightTypePixel = $13;
+$100._computedMaxHeightTypePercent = $13;
+$100._computedMaxHeightTypeAuto = $13;
+$100._computedMaxHeightTypeFlex = $13;
+$100._valueMaxHeight = $19;
+$100._isDisplayed = $12;
+$100._cachedOuterWidth = $19;
+$100._cachedOuterHeight = $19;
+$100._cachedHasPercentX = $13;
+$100._cachedHasPercentY = $13;
+$100._cachedHasFlexX = $13;
+$100._cachedHasFlexY = $13;
+$100._clonePropertyIgnoreList = $53;
+$100._valueEnabled = $12;
+$100._disposed = $13;
+$102["className"] = $3;
+$103["qxhashcode"] = $101;
+$104["MozUserSelect"] = $6;
+$104["userSelect"] = $6;
+$104["MozUserFocus"] = $7;
+$104["userFocus"] = $7;
+$104["cursor"] = $8;
+$104["backgroundColor"] = $9;
+$106["out"] = $12;
+$106["blurred"] = $12;
+$106["enabled"] = $12;
+$106["inactive"] = $12;
+$106["unchecked"] = $12;
+$106["notpressed"] = $12;
+$106["notselected"] = $12;
+$106["notanchor"] = $12;
+$106["notlead"] = $12;
+$107[0] = $108;
+$107[1] = $116;
+$108._hashCode = $109;
+$108._htmlProperties = $110;
+$108._htmlAttributes = $111;
+$108._styleProperties = $112;
+$108._layoutChanges = $113;
+$108._states = $114;
+$108._manager = $33;
+$108._valueSelectable = $13;
+$108._valueAllowStretchX = $13;
+$108._valueAllowStretchY = $13;
+$108._valueSource = $115;
+$108._valueWidth = $16;
+$108._computedWidthType = $17;
+$108._computedWidthTypeAuto = $12;
+$108._computedWidthTypeNull = $13;
+$108._computedWidthTypeFlex = $13;
+$108._computedWidthTypePercent = $13;
+$108._computedWidthTypePixel = $13;
+$108._computedWidthValue = $35;
+$108._computedWidthParsed = $19;
+$108._cachedHasAutoX = $19;
+$108._valueHeight = $16;
+$108._computedHeightType = $17;
+$108._computedHeightTypeAuto = $12;
+$108._computedHeightTypeNull = $13;
+$108._computedHeightTypeFlex = $13;
+$108._computedHeightTypePercent = $13;
+$108._computedHeightTypePixel = $13;
+$108._computedHeightValue = $35;
+$108._computedHeightParsed = $19;
+$108._cachedHasAutoY = $19;
+$108._valueAnonymous = $12;
+$108._valueParent = $100;
+$108._hasParent = $12;
+$108._isDisplayable = $12;
+$108._isCreated = $12;
+$108._valuePreloader = $43;
+$108._valueLoaded = $12;
+$108._cachedPreferredInnerWidth = $35;
+$108._cachedFrameWidth = $48;
+$108._cachedPreferredBoxWidth = $35;
+$108._cachedPreferredInnerHeight = $35;
+$108._cachedFrameHeight = $48;
+$108._cachedPreferredBoxHeight = $35;
+$108._cachedBoxWidth = $35;
+$108._cachedOuterWidth = $35;
+$108._cachedLocationHorizontal = $15;
+$108._cachedBoxHeight = $35;
+$108._cachedOuterHeight = $35;
+$108._initialLayoutDone = $12;
+$108._isSeeable = $12;
+$108.classname = $49;
+$108._properties = $50;
+$108._valueResizeToInner = $13;
+$108._valueVisibility = $12;
+$108._valueDisplay = $12;
+$108._valueTagName = $51;
+$108._valueHorizontalAlign = $19;
+$108._valueVerticalAlign = $19;
+$108._valueZIndex = $19;
+$108._valueBackgroundColor = $19;
+$108._valueColor = $19;
+$108._valueBorder = $19;
+$108._valueFont = $19;
+$108._valueOpacity = $19;
+$108._valueCursor = $19;
+$108._valueBackgroundImage = $19;
+$108._valueOverflow = $19;
+$108._valueClipLeft = $19;
+$108._valueClipTop = $19;
+$108._valueClipWidth = $19;
+$108._valueClipHeight = $19;
+$108._valueTabIndex = $52;
+$108._valueHideFocus = $13;
+$108._valueEnableElementFocus = $12;
+$108._valueFocused = $13;
+$108._valueToolTip = $19;
+$108._valueContextMenu = $19;
+$108._valueCapture = $13;
+$108._valueDropDataTypes = $19;
+$108._valueCommand = $19;
+$108._valueAppearance = $19;
+$108._valueMarginTop = $48;
+$108._valueMarginRight = $48;
+$108._valueMarginBottom = $48;
+$108._valueMarginLeft = $48;
+$108._valuePaddingTop = $48;
+$108._valuePaddingRight = $48;
+$108._valuePaddingBottom = $48;
+$108._valuePaddingLeft = $48;
+$108._computedLeftValue = $19;
+$108._computedLeftParsed = $19;
+$108._computedLeftType = $19;
+$108._computedLeftTypeNull = $12;
+$108._computedLeftTypePixel = $13;
+$108._computedLeftTypePercent = $13;
+$108._computedLeftTypeAuto = $13;
+$108._computedLeftTypeFlex = $13;
+$108._valueLeft = $19;
+$108._computedRightValue = $19;
+$108._computedRightParsed = $19;
+$108._computedRightType = $19;
+$108._computedRightTypeNull = $12;
+$108._computedRightTypePixel = $13;
+$108._computedRightTypePercent = $13;
+$108._computedRightTypeAuto = $13;
+$108._computedRightTypeFlex = $13;
+$108._valueRight = $19;
+$108._computedMinWidthValue = $19;
+$108._computedMinWidthParsed = $19;
+$108._computedMinWidthType = $19;
+$108._computedMinWidthTypeNull = $12;
+$108._computedMinWidthTypePixel = $13;
+$108._computedMinWidthTypePercent = $13;
+$108._computedMinWidthTypeAuto = $13;
+$108._computedMinWidthTypeFlex = $13;
+$108._valueMinWidth = $19;
+$108._computedMaxWidthValue = $19;
+$108._computedMaxWidthParsed = $19;
+$108._computedMaxWidthType = $19;
+$108._computedMaxWidthTypeNull = $12;
+$108._computedMaxWidthTypePixel = $13;
+$108._computedMaxWidthTypePercent = $13;
+$108._computedMaxWidthTypeAuto = $13;
+$108._computedMaxWidthTypeFlex = $13;
+$108._valueMaxWidth = $19;
+$108._computedTopValue = $19;
+$108._computedTopParsed = $19;
+$108._computedTopType = $19;
+$108._computedTopTypeNull = $12;
+$108._computedTopTypePixel = $13;
+$108._computedTopTypePercent = $13;
+$108._computedTopTypeAuto = $13;
+$108._computedTopTypeFlex = $13;
+$108._valueTop = $19;
+$108._computedBottomValue = $19;
+$108._computedBottomParsed = $19;
+$108._computedBottomType = $19;
+$108._computedBottomTypeNull = $12;
+$108._computedBottomTypePixel = $13;
+$108._computedBottomTypePercent = $13;
+$108._computedBottomTypeAuto = $13;
+$108._computedBottomTypeFlex = $13;
+$108._valueBottom = $19;
+$108._computedMinHeightValue = $19;
+$108._computedMinHeightParsed = $19;
+$108._computedMinHeightType = $19;
+$108._computedMinHeightTypeNull = $12;
+$108._computedMinHeightTypePixel = $13;
+$108._computedMinHeightTypePercent = $13;
+$108._computedMinHeightTypeAuto = $13;
+$108._computedMinHeightTypeFlex = $13;
+$108._valueMinHeight = $19;
+$108._computedMaxHeightValue = $19;
+$108._computedMaxHeightParsed = $19;
+$108._computedMaxHeightType = $19;
+$108._computedMaxHeightTypeNull = $12;
+$108._computedMaxHeightTypePixel = $13;
+$108._computedMaxHeightTypePercent = $13;
+$108._computedMaxHeightTypeAuto = $13;
+$108._computedMaxHeightTypeFlex = $13;
+$108._valueMaxHeight = $19;
+$108._isDisplayed = $12;
+$108._cachedInnerWidth = $19;
+$108._cachedInnerHeight = $19;
+$108._cachedHasPercentX = $13;
+$108._cachedHasPercentY = $13;
+$108._cachedHasFlexX = $13;
+$108._cachedHasFlexY = $13;
+$108._cachedBorderTop = $48;
+$108._cachedBorderRight = $48;
+$108._cachedBorderBottom = $48;
+$108._cachedBorderLeft = $48;
+$108._clonePropertyIgnoreList = $53;
+$108._valueEnabled = $12;
+$108._disposed = $13;
+$110["className"] = $27;
+$110["alt"] = $28;
+$110["title"] = $28;
+$111["qxhashcode"] = $109;
+$112["MozUserSelect"] = $6;
+$112["userSelect"] = $6;
+$114["out"] = $12;
+$114["blurred"] = $12;
+$114["enabled"] = $12;
+$114["inactive"] = $12;
+$114["unchecked"] = $12;
+$114["notpressed"] = $12;
+$114["notselected"] = $12;
+$114["notanchor"] = $12;
+$114["notlead"] = $12;
+$116._hashCode = $117;
+$116._htmlProperties = $118;
+$116._htmlAttributes = $119;
+$116._styleProperties = $120;
+$116._layoutChanges = $121;
+$116._states = $122;
+$116._valueAllowStretchX = $13;
+$116._valueAllowStretchY = $13;
+$116._valueWidth = $16;
+$116._computedWidthType = $17;
+$116._computedWidthTypeAuto = $12;
+$116._computedWidthTypeNull = $13;
+$116._computedWidthTypeFlex = $13;
+$116._computedWidthTypePercent = $13;
+$116._computedWidthTypePixel = $13;
+$116._computedWidthValue = $62;
+$116._computedWidthParsed = $19;
+$116._cachedHasAutoX = $19;
+$116._valueHeight = $16;
+$116._computedHeightType = $17;
+$116._computedHeightTypeAuto = $12;
+$116._computedHeightTypeNull = $13;
+$116._computedHeightTypeFlex = $13;
+$116._computedHeightTypePercent = $13;
+$116._computedHeightTypePixel = $13;
+$116._computedHeightValue = $63;
+$116._computedHeightParsed = $19;
+$116._cachedHasAutoY = $19;
+$116._valueAnonymous = $12;
+$116._valueSelectable = $13;
+$116._valueHtml = $64;
+$116._htmlMode = $19;
+$116._valueParent = $100;
+$116._hasParent = $12;
+$116._isDisplayable = $12;
+$116._isCreated = $12;
+$116._cachedPreferredInnerWidth = $62;
+$116._cachedPreferredInnerHeight = $63;
+$116._cachedFrameWidth = $48;
+$116._cachedPreferredBoxWidth = $62;
+$116._cachedFrameHeight = $48;
+$116._cachedPreferredBoxHeight = $63;
+$116._cachedBoxWidth = $62;
+$116._cachedOuterWidth = $62;
+$116._cachedLocationHorizontal = $65;
+$116._cachedBoxHeight = $63;
+$116._cachedOuterHeight = $63;
+$116._initialLayoutDone = $12;
+$116._isSeeable = $12;
+$116.classname = $66;
+$116._properties = $67;
+$116._valueFontPropertiesProfile = $8;
+$116._valueMeasureMode = $68;
+$116._valueMnemonic = $19;
+$116._hasMnemonic = $13;
+$116._mnemonicHtml = $28;
+$116._mnemonicTest = $19;
+$116._valueVisibility = $12;
+$116._valueDisplay = $12;
+$116._valueTagName = $51;
+$116._valueHorizontalAlign = $19;
+$116._valueVerticalAlign = $19;
+$116._valueZIndex = $19;
+$116._valueBackgroundColor = $19;
+$116._valueColor = $19;
+$116._valueBorder = $19;
+$116._valueFont = $19;
+$116._valueOpacity = $19;
+$116._valueCursor = $19;
+$116._valueBackgroundImage = $19;
+$116._valueOverflow = $19;
+$116._valueClipLeft = $19;
+$116._valueClipTop = $19;
+$116._valueClipWidth = $19;
+$116._valueClipHeight = $19;
+$116._valueTabIndex = $52;
+$116._valueHideFocus = $13;
+$116._valueEnableElementFocus = $12;
+$116._valueFocused = $13;
+$116._valueToolTip = $19;
+$116._valueContextMenu = $19;
+$116._valueCapture = $13;
+$116._valueDropDataTypes = $19;
+$116._valueCommand = $19;
+$116._valueAppearance = $19;
+$116._valueMarginTop = $48;
+$116._valueMarginRight = $48;
+$116._valueMarginBottom = $48;
+$116._valueMarginLeft = $48;
+$116._valuePaddingTop = $48;
+$116._valuePaddingRight = $48;
+$116._valuePaddingBottom = $48;
+$116._valuePaddingLeft = $48;
+$116._computedLeftValue = $19;
+$116._computedLeftParsed = $19;
+$116._computedLeftType = $19;
+$116._computedLeftTypeNull = $12;
+$116._computedLeftTypePixel = $13;
+$116._computedLeftTypePercent = $13;
+$116._computedLeftTypeAuto = $13;
+$116._computedLeftTypeFlex = $13;
+$116._valueLeft = $19;
+$116._computedRightValue = $19;
+$116._computedRightParsed = $19;
+$116._computedRightType = $19;
+$116._computedRightTypeNull = $12;
+$116._computedRightTypePixel = $13;
+$116._computedRightTypePercent = $13;
+$116._computedRightTypeAuto = $13;
+$116._computedRightTypeFlex = $13;
+$116._valueRight = $19;
+$116._computedMinWidthValue = $19;
+$116._computedMinWidthParsed = $19;
+$116._computedMinWidthType = $19;
+$116._computedMinWidthTypeNull = $12;
+$116._computedMinWidthTypePixel = $13;
+$116._computedMinWidthTypePercent = $13;
+$116._computedMinWidthTypeAuto = $13;
+$116._computedMinWidthTypeFlex = $13;
+$116._valueMinWidth = $19;
+$116._computedMaxWidthValue = $19;
+$116._computedMaxWidthParsed = $19;
+$116._computedMaxWidthType = $19;
+$116._computedMaxWidthTypeNull = $12;
+$116._computedMaxWidthTypePixel = $13;
+$116._computedMaxWidthTypePercent = $13;
+$116._computedMaxWidthTypeAuto = $13;
+$116._computedMaxWidthTypeFlex = $13;
+$116._valueMaxWidth = $19;
+$116._computedTopValue = $19;
+$116._computedTopParsed = $19;
+$116._computedTopType = $19;
+$116._computedTopTypeNull = $12;
+$116._computedTopTypePixel = $13;
+$116._computedTopTypePercent = $13;
+$116._computedTopTypeAuto = $13;
+$116._computedTopTypeFlex = $13;
+$116._valueTop = $19;
+$116._computedBottomValue = $19;
+$116._computedBottomParsed = $19;
+$116._computedBottomType = $19;
+$116._computedBottomTypeNull = $12;
+$116._computedBottomTypePixel = $13;
+$116._computedBottomTypePercent = $13;
+$116._computedBottomTypeAuto = $13;
+$116._computedBottomTypeFlex = $13;
+$116._valueBottom = $19;
+$116._computedMinHeightValue = $19;
+$116._computedMinHeightParsed = $19;
+$116._computedMinHeightType = $19;
+$116._computedMinHeightTypeNull = $12;
+$116._computedMinHeightTypePixel = $13;
+$116._computedMinHeightTypePercent = $13;
+$116._computedMinHeightTypeAuto = $13;
+$116._computedMinHeightTypeFlex = $13;
+$116._valueMinHeight = $19;
+$116._computedMaxHeightValue = $19;
+$116._computedMaxHeightParsed = $19;
+$116._computedMaxHeightType = $19;
+$116._computedMaxHeightTypeNull = $12;
+$116._computedMaxHeightTypePixel = $13;
+$116._computedMaxHeightTypePercent = $13;
+$116._computedMaxHeightTypeAuto = $13;
+$116._computedMaxHeightTypeFlex = $13;
+$116._valueMaxHeight = $19;
+$116._isDisplayed = $12;
+$116._cachedInnerWidth = $19;
+$116._cachedInnerHeight = $19;
+$116._cachedHasPercentX = $13;
+$116._cachedHasPercentY = $13;
+$116._cachedHasFlexX = $13;
+$116._cachedHasFlexY = $13;
+$116._cachedBorderTop = $48;
+$116._cachedBorderRight = $48;
+$116._cachedBorderBottom = $48;
+$116._cachedBorderLeft = $48;
+$116._clonePropertyIgnoreList = $53;
+$116._valueEnabled = $12;
+$116._disposed = $13;
+$118["className"] = $57;
+$119["qxhashcode"] = $117;
+$120["MozUserSelect"] = $6;
+$120["userSelect"] = $6;
+$122["out"] = $12;
+$122["blurred"] = $12;
+$122["enabled"] = $12;
+$122["inactive"] = $12;
+$122["unchecked"] = $12;
+$122["notpressed"] = $12;
+$122["notselected"] = $12;
+$122["notanchor"] = $12;
+$122["notlead"] = $12;
+$123._hashCode = $124;
+$123._widget = $100;
+$123.classname = $71;
+$123._valueEnableFlexSupport = $12;
+$123._properties = $72;
+$123._valueEnabled = $12;
+$123._disposed = $13;
+$125["mouseover"] = $126;
+$125["mouseout"] = $129;
+$125["mousedown"] = $132;
+$125["mouseup"] = $135;
+$125["keydown"] = $138;
+$125["keyup"] = $141;
+$126["evt80"] = $127;
+$127["handler"] = $128;
+$127["object"] = $78;
+$129["evt81"] = $130;
+$130["handler"] = $131;
+$130["object"] = $78;
+$132["evt82"] = $133;
+$133["handler"] = $134;
+$133["object"] = $78;
+$135["evt83"] = $136;
+$136["handler"] = $137;
+$136["object"] = $78;
+$138["evt84"] = $139;
+$139["handler"] = $140;
+$139["object"] = $78;
+$141["evt85"] = $142;
+$142["handler"] = $143;
+$142["object"] = $78;
+$145._dependentObjects = $146;
+$145._hashCode = $147;
+$145._themedEdges = $148;
+$145._defsX = $149;
+$145._defsY = $153;
+$145._valueTopWidth = $154;
+$145._needsCompilationTop = $13;
+$145._useEnhancedCrossBrowserMode = $19;
+$145._valueRightWidth = $154;
+$145._needsCompilationRight = $13;
+$145._valueBottomWidth = $154;
+$145._needsCompilationBottom = $13;
+$145._valueLeftWidth = $154;
+$145._needsCompilationLeft = $13;
+$145._valueTopStyle = $155;
+$145._valueRightStyle = $155;
+$145._valueBottomStyle = $155;
+$145._valueLeftStyle = $155;
+$145.classname = $156;
+$145._properties = $157;
+$145._valueTopColor = $19;
+$145._valueRightColor = $19;
+$145._valueBottomColor = $19;
+$145._valueLeftColor = $19;
+$145._valueEnabled = $12;
+$145._disposed = $13;
+$146["74"] = $0;
+$146["86"] = $100;
+$148["topStyle"] = $12;
+$148["rightStyle"] = $12;
+$148["bottomStyle"] = $12;
+$148["leftStyle"] = $12;
+$149["borderLeft"] = $150;
+$149["borderRight"] = $150;
+$149["MozBorderLeftColors"] = $151;
+$149["MozBorderRightColors"] = $152;
+$153["borderTop"] = $150;
+$153["borderBottom"] = $150;
+$153["MozBorderTopColors"] = $151;
+$153["MozBorderBottomColors"] = $152;
+$158[0] = $108;
+$158[1] = $116;
+$165[0] = $166;
+$165[1] = $167;
+$165[2] = $168;
+$165[3] = $169;
+$165[4] = $170;
+$165[5] = $171;
+$165[6] = $172;
+$165[7] = $173;
+$165[8] = $174;
+$165[9] = $175;
+$165[10] = $176;
+$165[11] = $177;
+$165[12] = $178;
+$165[13] = $179;
+$165[14] = $180;
+$182._hashCode = $14;
+$182._objects = $183;
+$182._themes = $367;
+$182._dependentObjects = $616;
+$182._valueTheme = $368;
+$182.classname = $617;
+$182._properties = $618;
+$182._valueEnabled = $12;
+$182._disposed = $13;
+$183["threeddarkshadow"] = $184;
+$183["threedshadow"] = $232;
+$183["threedlightshadow"] = $296;
+$183["threedhighlight"] = $306;
+$183["infotext"] = $309;
+$183["graytext"] = $319;
+$183["buttonface"] = $97;
+$183["highlight"] = $323;
+$183["highlighttext"] = $327;
+$183["inactivecaption"] = $331;
+$183["inactivecaptiontext"] = $335;
+$183["activecaption"] = $338;
+$183["captiontext"] = $342;
+$183["#e1eeff"] = $346;
+$183["#fafbfe"] = $353;
+$183["#fec83c"] = $275;
+$183["threedface"] = $359;
+$183["windowtext"] = $363;
+$184._isHtmlColor = $13;
+$184._isRgbColor = $13;
+$184._isThemedColor = $12;
+$184._hex = $19;
+$184._blue = $19;
+$184._green = $19;
+$184._red = $19;
+$184._value = $185;
+$184._hashCode = $186;
+$184._dependentObjects = $187;
+$184.classname = $181;
+$184._manager = $182;
+$184._valueEnabled = $12;
+$184._properties = $46;
+$184._disposed = $13;
+$187["17"] = $188;
+$187["18"] = $145;
+$187["19"] = $195;
+$187["20"] = $202;
+$187["21"] = $208;
+$187["22"] = $214;
+$187["23"] = $220;
+$187["24"] = $226;
+$188._dependentObjects = $189;
+$188._hashCode = $190;
+$188._themedEdges = $191;
+$188._defsX = $192;
+$188._defsY = $193;
+$188._valueTopWidth = $154;
+$188._needsCompilationTop = $12;
+$188._useEnhancedCrossBrowserMode = $19;
+$188._valueRightWidth = $154;
+$188._needsCompilationRight = $12;
+$188._valueBottomWidth = $154;
+$188._needsCompilationBottom = $12;
+$188._valueLeftWidth = $154;
+$188._needsCompilationLeft = $12;
+$188._valueTopStyle = $194;
+$188._valueRightStyle = $194;
+$188._valueBottomStyle = $194;
+$188._valueLeftStyle = $194;
+$188.classname = $156;
+$188._properties = $157;
+$188._valueTopColor = $19;
+$188._valueRightColor = $19;
+$188._valueBottomColor = $19;
+$188._valueLeftColor = $19;
+$188._valueEnabled = $12;
+$188._disposed = $13;
+$191["topStyle"] = $12;
+$191["rightStyle"] = $12;
+$191["bottomStyle"] = $12;
+$191["leftStyle"] = $12;
+$192["borderLeft"] = $28;
+$192["borderRight"] = $28;
+$192["MozBorderLeftColors"] = $28;
+$192["MozBorderRightColors"] = $28;
+$193["borderTop"] = $28;
+$193["borderBottom"] = $28;
+$193["MozBorderTopColors"] = $28;
+$193["MozBorderBottomColors"] = $28;
+$195._dependentObjects = $196;
+$195._hashCode = $197;
+$195._themedEdges = $198;
+$195._defsX = $199;
+$195._defsY = $200;
+$195._valueTopWidth = $154;
+$195._needsCompilationTop = $12;
+$195._useEnhancedCrossBrowserMode = $19;
+$195._valueRightWidth = $154;
+$195._needsCompilationRight = $12;
+$195._valueBottomWidth = $154;
+$195._needsCompilationBottom = $12;
+$195._valueLeftWidth = $154;
+$195._needsCompilationLeft = $12;
+$195._valueTopStyle = $201;
+$195._valueRightStyle = $201;
+$195._valueBottomStyle = $201;
+$195._valueLeftStyle = $201;
+$195.classname = $156;
+$195._properties = $157;
+$195._valueTopColor = $19;
+$195._valueRightColor = $19;
+$195._valueBottomColor = $19;
+$195._valueLeftColor = $19;
+$195._valueEnabled = $12;
+$195._disposed = $13;
+$198["topStyle"] = $12;
+$198["rightStyle"] = $12;
+$198["bottomStyle"] = $12;
+$198["leftStyle"] = $12;
+$199["borderLeft"] = $28;
+$199["borderRight"] = $28;
+$199["MozBorderLeftColors"] = $28;
+$199["MozBorderRightColors"] = $28;
+$200["borderTop"] = $28;
+$200["borderBottom"] = $28;
+$200["MozBorderTopColors"] = $28;
+$200["MozBorderBottomColors"] = $28;
+$202._dependentObjects = $203;
+$202._hashCode = $94;
+$202._themedEdges = $204;
+$202._defsX = $205;
+$202._defsY = $206;
+$202._valueTopWidth = $154;
+$202._needsCompilationTop = $12;
+$202._useEnhancedCrossBrowserMode = $19;
+$202._valueRightWidth = $154;
+$202._needsCompilationRight = $12;
+$202._valueBottomWidth = $154;
+$202._needsCompilationBottom = $12;
+$202._valueLeftWidth = $154;
+$202._needsCompilationLeft = $12;
+$202._valueTopStyle = $207;
+$202._valueRightStyle = $207;
+$202._valueBottomStyle = $207;
+$202._valueLeftStyle = $207;
+$202.classname = $156;
+$202._properties = $157;
+$202._valueTopColor = $19;
+$202._valueRightColor = $19;
+$202._valueBottomColor = $19;
+$202._valueLeftColor = $19;
+$202._valueEnabled = $12;
+$202._disposed = $13;
+$204["topStyle"] = $12;
+$204["rightStyle"] = $12;
+$204["bottomStyle"] = $12;
+$204["leftStyle"] = $12;
+$205["borderLeft"] = $28;
+$205["borderRight"] = $28;
+$205["MozBorderLeftColors"] = $28;
+$205["MozBorderRightColors"] = $28;
+$206["borderTop"] = $28;
+$206["borderBottom"] = $28;
+$206["MozBorderTopColors"] = $28;
+$206["MozBorderBottomColors"] = $28;
+$208._dependentObjects = $209;
+$208._hashCode = $210;
+$208._themedEdges = $211;
+$208._defsX = $212;
+$208._defsY = $213;
+$208._valueTopWidth = $14;
+$208._needsCompilationTop = $12;
+$208._useEnhancedCrossBrowserMode = $19;
+$208._valueRightWidth = $14;
+$208._needsCompilationRight = $12;
+$208._valueBottomWidth = $14;
+$208._needsCompilationBottom = $12;
+$208._valueLeftWidth = $14;
+$208._needsCompilationLeft = $12;
+$208._valueTopStyle = $194;
+$208._valueRightStyle = $194;
+$208._valueBottomStyle = $194;
+$208._valueLeftStyle = $194;
+$208.classname = $156;
+$208._properties = $157;
+$208._valueTopColor = $19;
+$208._valueRightColor = $19;
+$208._valueBottomColor = $19;
+$208._valueLeftColor = $19;
+$208._valueEnabled = $12;
+$208._disposed = $13;
+$211["topStyle"] = $12;
+$211["rightStyle"] = $12;
+$211["bottomStyle"] = $12;
+$211["leftStyle"] = $12;
+$212["borderLeft"] = $28;
+$212["borderRight"] = $28;
+$212["MozBorderLeftColors"] = $28;
+$212["MozBorderRightColors"] = $28;
+$213["borderTop"] = $28;
+$213["borderBottom"] = $28;
+$213["MozBorderTopColors"] = $28;
+$213["MozBorderBottomColors"] = $28;
+$214._dependentObjects = $215;
+$214._hashCode = $216;
+$214._themedEdges = $217;
+$214._defsX = $218;
+$214._defsY = $219;
+$214._valueTopWidth = $14;
+$214._needsCompilationTop = $12;
+$214._useEnhancedCrossBrowserMode = $19;
+$214._valueRightWidth = $14;
+$214._needsCompilationRight = $12;
+$214._valueBottomWidth = $14;
+$214._needsCompilationBottom = $12;
+$214._valueLeftWidth = $14;
+$214._needsCompilationLeft = $12;
+$214._valueTopStyle = $155;
+$214._valueRightStyle = $155;
+$214._valueBottomStyle = $155;
+$214._valueLeftStyle = $155;
+$214.classname = $156;
+$214._properties = $157;
+$214._valueTopColor = $19;
+$214._valueRightColor = $19;
+$214._valueBottomColor = $19;
+$214._valueLeftColor = $19;
+$214._valueEnabled = $12;
+$214._disposed = $13;
+$217["topStyle"] = $12;
+$217["rightStyle"] = $12;
+$217["bottomStyle"] = $12;
+$217["leftStyle"] = $12;
+$218["borderLeft"] = $28;
+$218["borderRight"] = $28;
+$218["MozBorderLeftColors"] = $28;
+$218["MozBorderRightColors"] = $28;
+$219["borderTop"] = $28;
+$219["borderBottom"] = $28;
+$219["MozBorderTopColors"] = $28;
+$219["MozBorderBottomColors"] = $28;
+$220._dependentObjects = $221;
+$220._hashCode = $222;
+$220._themedEdges = $223;
+$220._defsX = $224;
+$220._defsY = $225;
+$220._valueTopWidth = $14;
+$220._needsCompilationTop = $12;
+$220._useEnhancedCrossBrowserMode = $19;
+$220._valueRightWidth = $48;
+$220._needsCompilationRight = $12;
+$220._valueBottomWidth = $14;
+$220._needsCompilationBottom = $12;
+$220._valueLeftWidth = $48;
+$220._needsCompilationLeft = $12;
+$220._valueTopStyle = $194;
+$220._valueRightStyle = $194;
+$220._valueBottomStyle = $194;
+$220._valueLeftStyle = $194;
+$220.classname = $156;
+$220._properties = $157;
+$220._valueTopColor = $19;
+$220._valueRightColor = $19;
+$220._valueBottomColor = $19;
+$220._valueLeftColor = $19;
+$220._valueEnabled = $12;
+$220._disposed = $13;
+$223["topStyle"] = $12;
+$223["rightStyle"] = $12;
+$223["bottomStyle"] = $12;
+$223["leftStyle"] = $12;
+$224["borderLeft"] = $28;
+$224["borderRight"] = $28;
+$224["MozBorderLeftColors"] = $28;
+$224["MozBorderRightColors"] = $28;
+$225["borderTop"] = $28;
+$225["borderBottom"] = $28;
+$225["MozBorderTopColors"] = $28;
+$225["MozBorderBottomColors"] = $28;
+$226._dependentObjects = $227;
+$226._hashCode = $228;
+$226._themedEdges = $229;
+$226._defsX = $230;
+$226._defsY = $231;
+$226._valueTopWidth = $48;
+$226._needsCompilationTop = $12;
+$226._useEnhancedCrossBrowserMode = $19;
+$226._valueRightWidth = $14;
+$226._needsCompilationRight = $12;
+$226._valueBottomWidth = $48;
+$226._needsCompilationBottom = $12;
+$226._valueLeftWidth = $14;
+$226._needsCompilationLeft = $12;
+$226._valueTopStyle = $194;
+$226._valueRightStyle = $194;
+$226._valueBottomStyle = $194;
+$226._valueLeftStyle = $194;
+$226.classname = $156;
+$226._properties = $157;
+$226._valueTopColor = $19;
+$226._valueRightColor = $19;
+$226._valueBottomColor = $19;
+$226._valueLeftColor = $19;
+$226._valueEnabled = $12;
+$226._disposed = $13;
+$229["topStyle"] = $12;
+$229["rightStyle"] = $12;
+$229["bottomStyle"] = $12;
+$229["leftStyle"] = $12;
+$230["borderLeft"] = $28;
+$230["borderRight"] = $28;
+$230["MozBorderLeftColors"] = $28;
+$230["MozBorderRightColors"] = $28;
+$231["borderTop"] = $28;
+$231["borderBottom"] = $28;
+$231["MozBorderTopColors"] = $28;
+$231["MozBorderBottomColors"] = $28;
+$232._isHtmlColor = $13;
+$232._isRgbColor = $13;
+$232._isThemedColor = $12;
+$232._hex = $19;
+$232._blue = $19;
+$232._green = $19;
+$232._red = $19;
+$232._value = $233;
+$232._hashCode = $160;
+$232._dependentObjects = $234;
+$232.classname = $181;
+$232._manager = $182;
+$232._valueEnabled = $12;
+$232._properties = $46;
+$232._disposed = $13;
+$234["17"] = $188;
+$234["18"] = $145;
+$234["19"] = $195;
+$234["20"] = $202;
+$234["21"] = $208;
+$234["22"] = $214;
+$234["23"] = $220;
+$234["24"] = $226;
+$234["25"] = $235;
+$234["40"] = $242;
+$234["53"] = $247;
+$234["54"] = $253;
+$234["55"] = $258;
+$234["56"] = $264;
+$234["58"] = $270;
+$234["59"] = $282;
+$234["60"] = $287;
+$234["61"] = $291;
+$235._dependentObjects = $236;
+$235._hashCode = $237;
+$235._themedEdges = $238;
+$235._defsX = $239;
+$235._defsY = $240;
+$235._valueTopWidth = $14;
+$235._needsCompilationTop = $12;
+$235._useEnhancedCrossBrowserMode = $19;
+$235._valueRightWidth = $14;
+$235._needsCompilationRight = $12;
+$235._valueBottomWidth = $14;
+$235._needsCompilationBottom = $12;
+$235._valueLeftWidth = $14;
+$235._needsCompilationLeft = $12;
+$235._valueTopStyle = $241;
+$235._valueRightStyle = $241;
+$235._valueBottomStyle = $241;
+$235._valueLeftStyle = $241;
+$235._valueTopColor = $232;
+$235._valueRightColor = $232;
+$235._valueBottomColor = $232;
+$235._valueLeftColor = $232;
+$235.classname = $156;
+$235._properties = $157;
+$235._valueEnabled = $12;
+$235._disposed = $13;
+$239["borderLeft"] = $28;
+$239["borderRight"] = $28;
+$239["MozBorderLeftColors"] = $28;
+$239["MozBorderRightColors"] = $28;
+$240["borderTop"] = $28;
+$240["borderBottom"] = $28;
+$240["MozBorderTopColors"] = $28;
+$240["MozBorderBottomColors"] = $28;
+$242._hashCode = $65;
+$242._themedEdges = $243;
+$242._defsX = $244;
+$242._defsY = $245;
+$242._valueTopWidth = $14;
+$242._needsCompilationTop = $12;
+$242._useEnhancedCrossBrowserMode = $19;
+$242._valueRightWidth = $14;
+$242._needsCompilationRight = $12;
+$242._valueBottomWidth = $14;
+$242._needsCompilationBottom = $12;
+$242._valueLeftWidth = $14;
+$242._needsCompilationLeft = $12;
+$242._valueTopStyle = $241;
+$242._valueRightStyle = $241;
+$242._valueBottomStyle = $241;
+$242._valueLeftStyle = $241;
+$242._valueTopColor = $232;
+$242._valueRightColor = $232;
+$242._valueBottomColor = $232;
+$242._valueLeftColor = $232;
+$242.classname = $246;
+$242._properties = $157;
+$242._valueEnabled = $12;
+$242._disposed = $13;
+$244["borderLeft"] = $28;
+$244["borderRight"] = $28;
+$244["MozBorderLeftColors"] = $28;
+$244["MozBorderRightColors"] = $28;
+$245["borderTop"] = $28;
+$245["borderBottom"] = $28;
+$245["MozBorderTopColors"] = $28;
+$245["MozBorderBottomColors"] = $28;
+$247._dependentObjects = $248;
+$247._hashCode = $249;
+$247._themedEdges = $250;
+$247._defsX = $251;
+$247._defsY = $252;
+$247._valueBottomWidth = $14;
+$247._needsCompilationBottom = $12;
+$247._useEnhancedCrossBrowserMode = $19;
+$247._valueBottomStyle = $241;
+$247._valueBottomColor = $232;
+$247.classname = $156;
+$247._needsCompilationTop = $12;
+$247._needsCompilationRight = $12;
+$247._needsCompilationLeft = $12;
+$247._valueTopWidth = $48;
+$247._properties = $157;
+$247._valueRightWidth = $48;
+$247._valueLeftWidth = $48;
+$247._valueTopStyle = $6;
+$247._valueRightStyle = $6;
+$247._valueLeftStyle = $6;
+$247._valueTopColor = $19;
+$247._valueRightColor = $19;
+$247._valueLeftColor = $19;
+$247._valueEnabled = $12;
+$247._disposed = $13;
+$251["borderLeft"] = $28;
+$251["borderRight"] = $28;
+$251["MozBorderLeftColors"] = $28;
+$251["MozBorderRightColors"] = $28;
+$252["borderTop"] = $28;
+$252["borderBottom"] = $28;
+$252["MozBorderTopColors"] = $28;
+$252["MozBorderBottomColors"] = $28;
+$253._dependentObjects = $254;
+$253._hashCode = $62;
+$253._themedEdges = $255;
+$253._defsX = $256;
+$253._defsY = $257;
+$253._valueTopWidth = $14;
+$253._needsCompilationTop = $12;
+$253._useEnhancedCrossBrowserMode = $19;
+$253._valueTopStyle = $241;
+$253._valueTopColor = $232;
+$253.classname = $156;
+$253._needsCompilationRight = $12;
+$253._needsCompilationBottom = $12;
+$253._needsCompilationLeft = $12;
+$253._properties = $157;
+$253._valueRightWidth = $48;
+$253._valueBottomWidth = $48;
+$253._valueLeftWidth = $48;
+$253._valueRightStyle = $6;
+$253._valueBottomStyle = $6;
+$253._valueLeftStyle = $6;
+$253._valueRightColor = $19;
+$253._valueBottomColor = $19;
+$253._valueLeftColor = $19;
+$253._valueEnabled = $12;
+$253._disposed = $13;
+$256["borderLeft"] = $28;
+$256["borderRight"] = $28;
+$256["MozBorderLeftColors"] = $28;
+$256["MozBorderRightColors"] = $28;
+$257["borderTop"] = $28;
+$257["borderBottom"] = $28;
+$257["MozBorderTopColors"] = $28;
+$257["MozBorderBottomColors"] = $28;
+$258._dependentObjects = $259;
+$258._hashCode = $260;
+$258._themedEdges = $261;
+$258._defsX = $262;
+$258._defsY = $263;
+$258._valueRightWidth = $14;
+$258._needsCompilationRight = $12;
+$258._useEnhancedCrossBrowserMode = $19;
+$258._valueRightStyle = $241;
+$258._valueRightColor = $232;
+$258.classname = $156;
+$258._needsCompilationTop = $12;
+$258._needsCompilationBottom = $12;
+$258._needsCompilationLeft = $12;
+$258._valueTopWidth = $48;
+$258._properties = $157;
+$258._valueBottomWidth = $48;
+$258._valueLeftWidth = $48;
+$258._valueTopStyle = $6;
+$258._valueBottomStyle = $6;
+$258._valueLeftStyle = $6;
+$258._valueTopColor = $19;
+$258._valueBottomColor = $19;
+$258._valueLeftColor = $19;
+$258._valueEnabled = $12;
+$258._disposed = $13;
+$262["borderLeft"] = $28;
+$262["borderRight"] = $28;
+$262["MozBorderLeftColors"] = $28;
+$262["MozBorderRightColors"] = $28;
+$263["borderTop"] = $28;
+$263["borderBottom"] = $28;
+$263["MozBorderTopColors"] = $28;
+$263["MozBorderBottomColors"] = $28;
+$264._dependentObjects = $265;
+$264._hashCode = $266;
+$264._themedEdges = $267;
+$264._defsX = $268;
+$264._defsY = $269;
+$264._valueLeftWidth = $14;
+$264._needsCompilationLeft = $12;
+$264._useEnhancedCrossBrowserMode = $19;
+$264._valueLeftStyle = $241;
+$264._valueLeftColor = $232;
+$264.classname = $156;
+$264._needsCompilationTop = $12;
+$264._needsCompilationRight = $12;
+$264._needsCompilationBottom = $12;
+$264._valueTopWidth = $48;
+$264._properties = $157;
+$264._valueRightWidth = $48;
+$264._valueBottomWidth = $48;
+$264._valueTopStyle = $6;
+$264._valueRightStyle = $6;
+$264._valueBottomStyle = $6;
+$264._valueTopColor = $19;
+$264._valueRightColor = $19;
+$264._valueBottomColor = $19;
+$264._valueEnabled = $12;
+$264._disposed = $13;
+$268["borderLeft"] = $28;
+$268["borderRight"] = $28;
+$268["MozBorderLeftColors"] = $28;
+$268["MozBorderRightColors"] = $28;
+$269["borderTop"] = $28;
+$269["borderBottom"] = $28;
+$269["MozBorderTopColors"] = $28;
+$269["MozBorderBottomColors"] = $28;
+$270._hashCode = $271;
+$270._themedEdges = $272;
+$270._defsX = $273;
+$270._defsY = $274;
+$270._valueTopWidth = $14;
+$270._needsCompilationTop = $12;
+$270._useEnhancedCrossBrowserMode = $19;
+$270._valueRightWidth = $14;
+$270._needsCompilationRight = $12;
+$270._valueBottomWidth = $17;
+$270._needsCompilationBottom = $12;
+$270._valueLeftWidth = $14;
+$270._needsCompilationLeft = $12;
+$270._valueTopStyle = $241;
+$270._valueRightStyle = $241;
+$270._valueBottomStyle = $241;
+$270._valueLeftStyle = $241;
+$270._valueTopColor = $232;
+$270._valueRightColor = $232;
+$270._valueBottomColor = $275;
+$270._valueLeftColor = $232;
+$270.classname = $246;
+$270._properties = $157;
+$270._valueEnabled = $12;
+$270._disposed = $13;
+$273["borderLeft"] = $28;
+$273["borderRight"] = $28;
+$273["MozBorderLeftColors"] = $28;
+$273["MozBorderRightColors"] = $28;
+$274["borderTop"] = $28;
+$274["borderBottom"] = $28;
+$274["MozBorderTopColors"] = $28;
+$274["MozBorderBottomColors"] = $28;
+$275._isHtmlColor = $13;
+$275._isRgbColor = $12;
+$275._isThemedColor = $13;
+$275._hex = $276;
+$275._red = $277;
+$275._green = $278;
+$275._blue = $279;
+$275._value = $276;
+$275._hashCode = $280;
+$275._dependentObjects = $281;
+$275.classname = $181;
+$275._manager = $182;
+$275._valueEnabled = $12;
+$275._properties = $46;
+$275._disposed = $13;
+$281["58"] = $270;
+$281["59"] = $282;
+$281["60"] = $287;
+$281["61"] = $291;
+$282._hashCode = $283;
+$282._themedEdges = $284;
+$282._defsX = $285;
+$282._defsY = $286;
+$282._valueTopWidth = $17;
+$282._needsCompilationTop = $12;
+$282._useEnhancedCrossBrowserMode = $19;
+$282._valueRightWidth = $14;
+$282._needsCompilationRight = $12;
+$282._valueBottomWidth = $14;
+$282._needsCompilationBottom = $12;
+$282._valueLeftWidth = $14;
+$282._needsCompilationLeft = $12;
+$282._valueTopStyle = $241;
+$282._valueRightStyle = $241;
+$282._valueBottomStyle = $241;
+$282._valueLeftStyle = $241;
+$282._valueTopColor = $275;
+$282._valueRightColor = $232;
+$282._valueBottomColor = $232;
+$282._valueLeftColor = $232;
+$282.classname = $246;
+$282._properties = $157;
+$282._valueEnabled = $12;
+$282._disposed = $13;
+$285["borderLeft"] = $28;
+$285["borderRight"] = $28;
+$285["MozBorderLeftColors"] = $28;
+$285["MozBorderRightColors"] = $28;
+$286["borderTop"] = $28;
+$286["borderBottom"] = $28;
+$286["MozBorderTopColors"] = $28;
+$286["MozBorderBottomColors"] = $28;
+$287._hashCode = $279;
+$287._themedEdges = $288;
+$287._defsX = $289;
+$287._defsY = $290;
+$287._valueTopWidth = $14;
+$287._needsCompilationTop = $12;
+$287._useEnhancedCrossBrowserMode = $19;
+$287._valueRightWidth = $17;
+$287._needsCompilationRight = $12;
+$287._valueBottomWidth = $14;
+$287._needsCompilationBottom = $12;
+$287._valueLeftWidth = $14;
+$287._needsCompilationLeft = $12;
+$287._valueTopStyle = $241;
+$287._valueRightStyle = $241;
+$287._valueBottomStyle = $241;
+$287._valueLeftStyle = $241;
+$287._valueTopColor = $232;
+$287._valueRightColor = $275;
+$287._valueBottomColor = $232;
+$287._valueLeftColor = $232;
+$287.classname = $246;
+$287._properties = $157;
+$287._valueEnabled = $12;
+$287._disposed = $13;
+$289["borderLeft"] = $28;
+$289["borderRight"] = $28;
+$289["MozBorderLeftColors"] = $28;
+$289["MozBorderRightColors"] = $28;
+$290["borderTop"] = $28;
+$290["borderBottom"] = $28;
+$290["MozBorderTopColors"] = $28;
+$290["MozBorderBottomColors"] = $28;
+$291._hashCode = $292;
+$291._themedEdges = $293;
+$291._defsX = $294;
+$291._defsY = $295;
+$291._valueTopWidth = $14;
+$291._needsCompilationTop = $12;
+$291._useEnhancedCrossBrowserMode = $19;
+$291._valueRightWidth = $14;
+$291._needsCompilationRight = $12;
+$291._valueBottomWidth = $14;
+$291._needsCompilationBottom = $12;
+$291._valueLeftWidth = $17;
+$291._needsCompilationLeft = $12;
+$291._valueTopStyle = $241;
+$291._valueRightStyle = $241;
+$291._valueBottomStyle = $241;
+$291._valueLeftStyle = $241;
+$291._valueTopColor = $232;
+$291._valueRightColor = $232;
+$291._valueBottomColor = $232;
+$291._valueLeftColor = $275;
+$291.classname = $246;
+$291._properties = $157;
+$291._valueEnabled = $12;
+$291._disposed = $13;
+$294["borderLeft"] = $28;
+$294["borderRight"] = $28;
+$294["MozBorderLeftColors"] = $28;
+$294["MozBorderRightColors"] = $28;
+$295["borderTop"] = $28;
+$295["borderBottom"] = $28;
+$295["MozBorderTopColors"] = $28;
+$295["MozBorderBottomColors"] = $28;
+$296._isHtmlColor = $13;
+$296._isRgbColor = $13;
+$296._isThemedColor = $12;
+$296._hex = $19;
+$296._blue = $19;
+$296._green = $19;
+$296._red = $19;
+$296._value = $297;
+$296._hashCode = $298;
+$296._dependentObjects = $299;
+$296.classname = $181;
+$296._manager = $182;
+$296._valueEnabled = $12;
+$296._properties = $46;
+$296._disposed = $13;
+$299["17"] = $188;
+$299["18"] = $145;
+$299["19"] = $195;
+$299["20"] = $202;
+$299["21"] = $208;
+$299["22"] = $214;
+$299["23"] = $220;
+$299["24"] = $226;
+$299["26"] = $300;
+$300._dependentObjects = $301;
+$300._hashCode = $302;
+$300._themedEdges = $303;
+$300._defsX = $304;
+$300._defsY = $305;
+$300._valueTopWidth = $14;
+$300._needsCompilationTop = $12;
+$300._useEnhancedCrossBrowserMode = $19;
+$300._valueRightWidth = $14;
+$300._needsCompilationRight = $12;
+$300._valueBottomWidth = $14;
+$300._needsCompilationBottom = $12;
+$300._valueLeftWidth = $14;
+$300._needsCompilationLeft = $12;
+$300._valueTopStyle = $241;
+$300._valueRightStyle = $241;
+$300._valueBottomStyle = $241;
+$300._valueLeftStyle = $241;
+$300._valueTopColor = $296;
+$300._valueRightColor = $296;
+$300._valueBottomColor = $296;
+$300._valueLeftColor = $296;
+$300.classname = $156;
+$300._properties = $157;
+$300._valueEnabled = $12;
+$300._disposed = $13;
+$304["borderLeft"] = $28;
+$304["borderRight"] = $28;
+$304["MozBorderLeftColors"] = $28;
+$304["MozBorderRightColors"] = $28;
+$305["borderTop"] = $28;
+$305["borderBottom"] = $28;
+$305["MozBorderTopColors"] = $28;
+$305["MozBorderBottomColors"] = $28;
+$306._isHtmlColor = $13;
+$306._isRgbColor = $13;
+$306._isThemedColor = $12;
+$306._hex = $19;
+$306._blue = $19;
+$306._green = $19;
+$306._red = $19;
+$306._value = $307;
+$306._hashCode = $159;
+$306._dependentObjects = $308;
+$306.classname = $181;
+$306._manager = $182;
+$306._valueEnabled = $12;
+$306._properties = $46;
+$306._disposed = $13;
+$308["17"] = $188;
+$308["18"] = $145;
+$308["19"] = $195;
+$308["20"] = $202;
+$308["21"] = $208;
+$308["22"] = $214;
+$308["23"] = $220;
+$308["24"] = $226;
+$309._isHtmlColor = $13;
+$309._isRgbColor = $13;
+$309._isThemedColor = $12;
+$309._hex = $19;
+$309._blue = $19;
+$309._green = $19;
+$309._red = $19;
+$309._value = $310;
+$309._hashCode = $311;
+$309._dependentObjects = $312;
+$309.classname = $181;
+$309._manager = $182;
+$309._valueEnabled = $12;
+$309._properties = $46;
+$309._disposed = $13;
+$312["27"] = $313;
+$313._dependentObjects = $314;
+$313._hashCode = $315;
+$313._themedEdges = $316;
+$313._defsX = $317;
+$313._defsY = $318;
+$313._valueTopWidth = $14;
+$313._needsCompilationTop = $12;
+$313._useEnhancedCrossBrowserMode = $19;
+$313._valueRightWidth = $14;
+$313._needsCompilationRight = $12;
+$313._valueBottomWidth = $14;
+$313._needsCompilationBottom = $12;
+$313._valueLeftWidth = $14;
+$313._needsCompilationLeft = $12;
+$313._valueTopStyle = $241;
+$313._valueRightStyle = $241;
+$313._valueBottomStyle = $241;
+$313._valueLeftStyle = $241;
+$313._valueTopColor = $309;
+$313._valueRightColor = $309;
+$313._valueBottomColor = $309;
+$313._valueLeftColor = $309;
+$313.classname = $156;
+$313._properties = $157;
+$313._valueEnabled = $12;
+$313._disposed = $13;
+$317["borderLeft"] = $28;
+$317["borderRight"] = $28;
+$317["MozBorderLeftColors"] = $28;
+$317["MozBorderRightColors"] = $28;
+$318["borderTop"] = $28;
+$318["borderBottom"] = $28;
+$318["MozBorderTopColors"] = $28;
+$318["MozBorderBottomColors"] = $28;
+$319._isHtmlColor = $13;
+$319._isRgbColor = $13;
+$319._isThemedColor = $12;
+$319._hex = $19;
+$319._blue = $19;
+$319._green = $19;
+$319._red = $19;
+$319._value = $320;
+$319._hashCode = $321;
+$319._dependentObjects = $322;
+$319.classname = $181;
+$319._manager = $182;
+$319._valueEnabled = $12;
+$319._properties = $46;
+$319._disposed = $13;
+$323._isHtmlColor = $13;
+$323._isRgbColor = $13;
+$323._isThemedColor = $12;
+$323._hex = $19;
+$323._blue = $19;
+$323._green = $19;
+$323._red = $19;
+$323._value = $324;
+$323._hashCode = $325;
+$323._dependentObjects = $326;
+$323.classname = $181;
+$323._manager = $182;
+$323._valueEnabled = $12;
+$323._properties = $46;
+$323._disposed = $13;
+$327._isHtmlColor = $13;
+$327._isRgbColor = $13;
+$327._isThemedColor = $12;
+$327._hex = $19;
+$327._blue = $19;
+$327._green = $19;
+$327._red = $19;
+$327._value = $328;
+$327._hashCode = $329;
+$327._dependentObjects = $330;
+$327.classname = $181;
+$327._manager = $182;
+$327._valueEnabled = $12;
+$327._properties = $46;
+$327._disposed = $13;
+$331._isHtmlColor = $13;
+$331._isRgbColor = $13;
+$331._isThemedColor = $12;
+$331._hex = $19;
+$331._blue = $19;
+$331._green = $19;
+$331._red = $19;
+$331._value = $332;
+$331._hashCode = $333;
+$331._dependentObjects = $334;
+$331.classname = $181;
+$331._manager = $182;
+$331._valueEnabled = $12;
+$331._properties = $46;
+$331._disposed = $13;
+$335._isHtmlColor = $13;
+$335._isRgbColor = $13;
+$335._isThemedColor = $12;
+$335._hex = $19;
+$335._blue = $19;
+$335._green = $19;
+$335._red = $19;
+$335._value = $336;
+$335._hashCode = $20;
+$335._dependentObjects = $337;
+$335.classname = $181;
+$335._manager = $182;
+$335._valueEnabled = $12;
+$335._properties = $46;
+$335._disposed = $13;
+$338._isHtmlColor = $13;
+$338._isRgbColor = $13;
+$338._isThemedColor = $12;
+$338._hex = $19;
+$338._blue = $19;
+$338._green = $19;
+$338._red = $19;
+$338._value = $339;
+$338._hashCode = $340;
+$338._dependentObjects = $341;
+$338.classname = $181;
+$338._manager = $182;
+$338._valueEnabled = $12;
+$338._properties = $46;
+$338._disposed = $13;
+$342._isHtmlColor = $13;
+$342._isRgbColor = $13;
+$342._isThemedColor = $12;
+$342._hex = $19;
+$342._blue = $19;
+$342._green = $19;
+$342._red = $19;
+$342._value = $343;
+$342._hashCode = $344;
+$342._dependentObjects = $345;
+$342.classname = $181;
+$342._manager = $182;
+$342._valueEnabled = $12;
+$342._properties = $46;
+$342._disposed = $13;
+$346._isHtmlColor = $13;
+$346._isRgbColor = $12;
+$346._isThemedColor = $13;
+$346._hex = $347;
+$346._red = $348;
+$346._green = $349;
+$346._blue = $350;
+$346._value = $347;
+$346._hashCode = $351;
+$346._dependentObjects = $352;
+$346.classname = $181;
+$346._manager = $182;
+$346._valueEnabled = $12;
+$346._properties = $46;
+$346._disposed = $13;
+$353._isHtmlColor = $13;
+$353._isRgbColor = $12;
+$353._isThemedColor = $13;
+$353._hex = $354;
+$353._red = $355;
+$353._green = $356;
+$353._blue = $277;
+$353._value = $354;
+$353._hashCode = $357;
+$353._dependentObjects = $358;
+$353.classname = $181;
+$353._manager = $182;
+$353._valueEnabled = $12;
+$353._properties = $46;
+$353._disposed = $13;
+$359._isHtmlColor = $13;
+$359._isRgbColor = $13;
+$359._isThemedColor = $12;
+$359._hex = $19;
+$359._blue = $19;
+$359._green = $19;
+$359._red = $19;
+$359._value = $360;
+$359._hashCode = $361;
+$359._dependentObjects = $362;
+$359.classname = $181;
+$359._manager = $182;
+$359._valueEnabled = $12;
+$359._properties = $46;
+$359._disposed = $13;
+$362["64"] = $96;
+$363._isHtmlColor = $13;
+$363._isRgbColor = $13;
+$363._isThemedColor = $12;
+$363._hex = $19;
+$363._blue = $19;
+$363._green = $19;
+$363._red = $19;
+$363._value = $364;
+$363._hashCode = $365;
+$363._dependentObjects = $366;
+$363.classname = $181;
+$363._manager = $182;
+$363._valueEnabled = $12;
+$363._properties = $46;
+$363._disposed = $13;
+$366["64"] = $96;
+$367["systemDefault"] = $368;
+$367["windowsRoyale"] = $388;
+$367["windowsClassic"] = $442;
+$367["windowsLunaBlue"] = $478;
+$367["windowsLunaGreen"] = $529;
+$367["windowsLunaSilver"] = $572;
+$368._hashCode = $154;
+$368._valueId = $369;
+$368._valueTitle = $370;
+$368._colors = $371;
+$368._compiledColors = $372;
+$368._needsCompilation = $13;
+$368.classname = $386;
+$368._properties = $387;
+$368._manager = $182;
+$368._valueEnabled = $12;
+$368._disposed = $13;
+$372["activeborder"] = $373;
+$372["activecaption"] = $339;
+$372["appworkspace"] = $374;
+$372["background"] = $375;
+$372["buttonface"] = $9;
+$372["buttonhighlight"] = $376;
+$372["buttonshadow"] = $377;
+$372["buttontext"] = $378;
+$372["captiontext"] = $343;
+$372["graytext"] = $320;
+$372["highlight"] = $324;
+$372["highlighttext"] = $328;
+$372["inactiveborder"] = $379;
+$372["inactivecaption"] = $332;
+$372["inactivecaptiontext"] = $336;
+$372["infobackground"] = $380;
+$372["infotext"] = $310;
+$372["menu"] = $381;
+$372["menutext"] = $382;
+$372["scrollbar"] = $383;
+$372["threeddarkshadow"] = $185;
+$372["threedface"] = $360;
+$372["threedhighlight"] = $307;
+$372["threedlightshadow"] = $297;
+$372["threedshadow"] = $233;
+$372["window"] = $384;
+$372["windowframe"] = $385;
+$372["windowtext"] = $364;
+$388._hashCode = $17;
+$388._valueId = $389;
+$388._valueTitle = $390;
+$388._colors = $391;
+$388._compiledColors = $441;
+$388.classname = $386;
+$388._properties = $387;
+$388._manager = $182;
+$388._needsCompilation = $12;
+$388._valueEnabled = $12;
+$388._disposed = $13;
+$391["activeborder"] = $392;
+$391["activecaption"] = $395;
+$391["appworkspace"] = $399;
+$391["background"] = $401;
+$391["buttonface"] = $403;
+$391["buttonhighlight"] = $407;
+$391["buttonshadow"] = $408;
+$391["buttontext"] = $412;
+$391["captiontext"] = $413;
+$391["graytext"] = $414;
+$391["highlight"] = $415;
+$391["highlighttext"] = $416;
+$391["inactiveborder"] = $417;
+$391["inactivecaption"] = $418;
+$391["inactivecaptiontext"] = $422;
+$391["infobackground"] = $423;
+$391["infotext"] = $424;
+$391["menu"] = $425;
+$391["menutext"] = $426;
+$391["scrollbar"] = $427;
+$391["threeddarkshadow"] = $428;
+$391["threedface"] = $432;
+$391["threedhighlight"] = $433;
+$391["threedlightshadow"] = $434;
+$391["threedshadow"] = $437;
+$391["window"] = $438;
+$391["windowframe"] = $439;
+$391["windowtext"] = $440;
+$392[0] = $393;
+$392[1] = $394;
+$392[2] = $278;
+$395[0] = $396;
+$395[1] = $397;
+$395[2] = $398;
+$399[0] = $400;
+$399[1] = $400;
+$399[2] = $400;
+$401[0] = $48;
+$401[1] = $48;
+$401[2] = $402;
+$403[0] = $404;
+$403[1] = $405;
+$403[2] = $406;
+$407[0] = $350;
+$407[1] = $350;
+$407[2] = $350;
+$408[0] = $409;
+$408[1] = $410;
+$408[2] = $411;
+$412[0] = $48;
+$412[1] = $48;
+$412[2] = $48;
+$413[0] = $350;
+$413[1] = $350;
+$413[2] = $350;
+$414[0] = $409;
+$414[1] = $410;
+$414[2] = $411;
+$415[0] = $396;
+$415[1] = $397;
+$415[2] = $398;
+$416[0] = $350;
+$416[1] = $350;
+$416[2] = $350;
+$417[0] = $393;
+$417[1] = $394;
+$417[2] = $278;
+$418[0] = $419;
+$418[1] = $420;
+$418[2] = $421;
+$422[0] = $350;
+$422[1] = $350;
+$422[2] = $350;
+$423[0] = $350;
+$423[1] = $350;
+$423[2] = $348;
+$424[0] = $48;
+$424[1] = $48;
+$424[2] = $48;
+$425[0] = $350;
+$425[1] = $350;
+$425[2] = $350;
+$426[0] = $48;
+$426[1] = $48;
+$426[2] = $48;
+$427[0] = $393;
+$427[1] = $394;
+$427[2] = $278;
+$428[0] = $429;
+$428[1] = $430;
+$428[2] = $431;
+$432[0] = $404;
+$432[1] = $405;
+$432[2] = $406;
+$433[0] = $350;
+$433[1] = $350;
+$433[2] = $350;
+$434[0] = $144;
+$434[1] = $435;
+$434[2] = $436;
+$437[0] = $409;
+$437[1] = $410;
+$437[2] = $411;
+$438[0] = $350;
+$438[1] = $350;
+$438[2] = $350;
+$439[0] = $48;
+$439[1] = $48;
+$439[2] = $48;
+$440[0] = $48;
+$440[1] = $48;
+$440[2] = $48;
+$442._hashCode = $15;
+$442._valueId = $443;
+$442._valueTitle = $444;
+$442._colors = $445;
+$442._compiledColors = $477;
+$442.classname = $386;
+$442._properties = $387;
+$442._manager = $182;
+$442._needsCompilation = $12;
+$442._valueEnabled = $12;
+$442._disposed = $13;
+$445["activeborder"] = $446;
+$445["activecaption"] = $447;
+$445["appworkspace"] = $449;
+$445["background"] = $450;
+$445["buttonface"] = $453;
+$445["buttonhighlight"] = $454;
+$445["buttonshadow"] = $455;
+$445["buttontext"] = $456;
+$445["captiontext"] = $457;
+$445["graytext"] = $458;
+$445["highlight"] = $459;
+$445["highlighttext"] = $460;
+$445["inactiveborder"] = $461;
+$445["inactivecaption"] = $462;
+$445["inactivecaptiontext"] = $463;
+$445["infobackground"] = $464;
+$445["infotext"] = $465;
+$445["menu"] = $466;
+$445["menutext"] = $467;
+$445["scrollbar"] = $468;
+$445["threeddarkshadow"] = $469;
+$445["threedface"] = $470;
+$445["threedhighlight"] = $471;
+$445["threedlightshadow"] = $472;
+$445["threedshadow"] = $473;
+$445["window"] = $474;
+$445["windowframe"] = $475;
+$445["windowtext"] = $476;
+$446[0] = $393;
+$446[1] = $394;
+$446[2] = $278;
+$447[0] = $160;
+$447[1] = $325;
+$447[2] = $448;
+$449[0] = $400;
+$449[1] = $400;
+$449[2] = $400;
+$450[0] = $271;
+$450[1] = $451;
+$450[2] = $452;
+$453[0] = $393;
+$453[1] = $394;
+$453[2] = $278;
+$454[0] = $350;
+$454[1] = $350;
+$454[2] = $350;
+$455[0] = $400;
+$455[1] = $400;
+$455[2] = $400;
+$456[0] = $48;
+$456[1] = $48;
+$456[2] = $48;
+$457[0] = $350;
+$457[1] = $350;
+$457[2] = $350;
+$458[0] = $400;
+$458[1] = $400;
+$458[2] = $400;
+$459[0] = $160;
+$459[1] = $325;
+$459[2] = $448;
+$460[0] = $350;
+$460[1] = $350;
+$460[2] = $350;
+$461[0] = $393;
+$461[1] = $394;
+$461[2] = $278;
+$462[0] = $400;
+$462[1] = $400;
+$462[2] = $400;
+$463[0] = $393;
+$463[1] = $394;
+$463[2] = $278;
+$464[0] = $350;
+$464[1] = $350;
+$464[2] = $348;
+$465[0] = $48;
+$465[1] = $48;
+$465[2] = $48;
+$466[0] = $393;
+$466[1] = $394;
+$466[2] = $278;
+$467[0] = $48;
+$467[1] = $48;
+$467[2] = $48;
+$468[0] = $393;
+$468[1] = $394;
+$468[2] = $278;
+$469[0] = $402;
+$469[1] = $402;
+$469[2] = $402;
+$470[0] = $393;
+$470[1] = $394;
+$470[2] = $278;
+$471[0] = $350;
+$471[1] = $350;
+$471[2] = $350;
+$472[0] = $393;
+$472[1] = $394;
+$472[2] = $278;
+$473[0] = $400;
+$473[1] = $400;
+$473[2] = $400;
+$474[0] = $350;
+$474[1] = $350;
+$474[2] = $350;
+$475[0] = $48;
+$475[1] = $48;
+$475[2] = $48;
+$476[0] = $48;
+$476[1] = $48;
+$476[2] = $48;
+$478._hashCode = $479;
+$478._valueId = $480;
+$478._valueTitle = $481;
+$478._colors = $482;
+$478._compiledColors = $528;
+$478.classname = $386;
+$478._properties = $387;
+$478._manager = $182;
+$478._needsCompilation = $12;
+$478._valueEnabled = $12;
+$478._disposed = $13;
+$482["activeborder"] = $483;
+$482["activecaption"] = $484;
+$482["appworkspace"] = $487;
+$482["background"] = $488;
+$482["buttonface"] = $490;
+$482["buttonhighlight"] = $493;
+$482["buttonshadow"] = $494;
+$482["buttontext"] = $497;
+$482["captiontext"] = $498;
+$482["graytext"] = $499;
+$482["highlight"] = $500;
+$482["highlighttext"] = $503;
+$482["inactiveborder"] = $504;
+$482["inactivecaption"] = $505;
+$482["inactivecaptiontext"] = $508;
+$482["infobackground"] = $510;
+$482["infotext"] = $511;
+$482["menu"] = $512;
+$482["menutext"] = $513;
+$482["scrollbar"] = $514;
+$482["threeddarkshadow"] = $515;
+$482["threedface"] = $518;
+$482["threedhighlight"] = $519;
+$482["threedlightshadow"] = $520;
+$482["threedshadow"] = $524;
+$482["window"] = $525;
+$482["windowframe"] = $526;
+$482["windowtext"] = $527;
+$483[0] = $393;
+$483[1] = $394;
+$483[2] = $278;
+$484[0] = $48;
+$484[1] = $485;
+$484[2] = $486;
+$487[0] = $400;
+$487[1] = $400;
+$487[2] = $400;
+$488[0] = $48;
+$488[1] = $25;
+$488[2] = $489;
+$490[0] = $491;
+$490[1] = $405;
+$490[2] = $492;
+$493[0] = $350;
+$493[1] = $350;
+$493[2] = $350;
+$494[0] = $495;
+$494[1] = $398;
+$494[2] = $496;
+$497[0] = $48;
+$497[1] = $48;
+$497[2] = $48;
+$498[0] = $350;
+$498[1] = $350;
+$498[2] = $350;
+$499[0] = $495;
+$499[1] = $398;
+$499[2] = $496;
+$500[0] = $501;
+$500[1] = $448;
+$500[2] = $502;
+$503[0] = $350;
+$503[1] = $350;
+$503[2] = $350;
+$504[0] = $393;
+$504[1] = $394;
+$504[2] = $278;
+$505[0] = $506;
+$505[1] = $507;
+$505[2] = $435;
+$508[0] = $492;
+$508[1] = $436;
+$508[2] = $509;
+$510[0] = $350;
+$510[1] = $350;
+$510[2] = $348;
+$511[0] = $48;
+$511[1] = $48;
+$511[2] = $48;
+$512[0] = $350;
+$512[1] = $350;
+$512[2] = $350;
+$513[0] = $48;
+$513[1] = $48;
+$513[2] = $48;
+$514[0] = $393;
+$514[1] = $394;
+$514[2] = $278;
+$515[0] = $516;
+$515[1] = $419;
+$515[2] = $517;
+$518[0] = $491;
+$518[1] = $405;
+$518[2] = $492;
+$519[0] = $350;
+$519[1] = $350;
+$519[2] = $350;
+$520[0] = $521;
+$520[1] = $522;
+$520[2] = $523;
+$524[0] = $495;
+$524[1] = $398;
+$524[2] = $496;
+$525[0] = $350;
+$525[1] = $350;
+$525[2] = $350;
+$526[0] = $48;
+$526[1] = $48;
+$526[2] = $48;
+$527[0] = $48;
+$527[1] = $48;
+$527[2] = $48;
+$529._hashCode = $530;
+$529._valueId = $531;
+$529._valueTitle = $532;
+$529._colors = $533;
+$529._compiledColors = $571;
+$529.classname = $386;
+$529._properties = $387;
+$529._manager = $182;
+$529._needsCompilation = $12;
+$529._valueEnabled = $12;
+$529._disposed = $13;
+$533["activeborder"] = $534;
+$533["activecaption"] = $535;
+$533["appworkspace"] = $538;
+$533["background"] = $539;
+$533["buttonface"] = $542;
+$533["buttonhighlight"] = $543;
+$533["buttonshadow"] = $544;
+$533["buttontext"] = $545;
+$533["captiontext"] = $546;
+$533["graytext"] = $547;
+$533["highlight"] = $548;
+$533["highlighttext"] = $552;
+$533["inactiveborder"] = $553;
+$533["inactivecaption"] = $554;
+$533["inactivecaptiontext"] = $557;
+$533["infobackground"] = $558;
+$533["infotext"] = $559;
+$533["menu"] = $560;
+$533["menutext"] = $561;
+$533["scrollbar"] = $562;
+$533["threeddarkshadow"] = $563;
+$533["threedface"] = $564;
+$533["threedhighlight"] = $565;
+$533["threedlightshadow"] = $566;
+$533["threedshadow"] = $567;
+$533["window"] = $568;
+$533["windowframe"] = $569;
+$533["windowtext"] = $570;
+$534[0] = $393;
+$534[1] = $394;
+$534[2] = $278;
+$535[0] = $536;
+$535[1] = $420;
+$535[2] = $537;
+$538[0] = $400;
+$538[1] = $400;
+$538[2] = $400;
+$539[0] = $540;
+$539[1] = $495;
+$539[2] = $541;
+$542[0] = $491;
+$542[1] = $405;
+$542[2] = $492;
+$543[0] = $350;
+$543[1] = $350;
+$543[2] = $350;
+$544[0] = $495;
+$544[1] = $398;
+$544[2] = $496;
+$545[0] = $48;
+$545[1] = $48;
+$545[2] = $48;
+$546[0] = $350;
+$546[1] = $350;
+$546[2] = $350;
+$547[0] = $495;
+$547[1] = $398;
+$547[2] = $496;
+$548[0] = $549;
+$548[1] = $550;
+$548[2] = $551;
+$552[0] = $350;
+$552[1] = $350;
+$552[2] = $350;
+$553[0] = $393;
+$553[1] = $394;
+$553[2] = $278;
+$554[0] = $393;
+$554[1] = $555;
+$554[2] = $556;
+$557[0] = $350;
+$557[1] = $350;
+$557[2] = $350;
+$558[0] = $350;
+$558[1] = $350;
+$558[2] = $348;
+$559[0] = $48;
+$559[1] = $48;
+$559[2] = $48;
+$560[0] = $350;
+$560[1] = $350;
+$560[2] = $350;
+$561[0] = $48;
+$561[1] = $48;
+$561[2] = $48;
+$562[0] = $393;
+$562[1] = $394;
+$562[2] = $278;
+$563[0] = $516;
+$563[1] = $419;
+$563[2] = $517;
+$564[0] = $491;
+$564[1] = $405;
+$564[2] = $492;
+$565[0] = $350;
+$565[1] = $350;
+$565[2] = $350;
+$566[0] = $521;
+$566[1] = $522;
+$566[2] = $523;
+$567[0] = $495;
+$567[1] = $398;
+$567[2] = $496;
+$568[0] = $350;
+$568[1] = $350;
+$568[2] = $350;
+$569[0] = $48;
+$569[1] = $48;
+$569[2] = $48;
+$570[0] = $48;
+$570[1] = $48;
+$570[2] = $48;
+$572._hashCode = $573;
+$572._valueId = $574;
+$572._valueTitle = $575;
+$572._colors = $576;
+$572._compiledColors = $615;
+$572.classname = $386;
+$572._properties = $387;
+$572._manager = $182;
+$572._needsCompilation = $12;
+$572._valueEnabled = $12;
+$572._disposed = $13;
+$576["activeborder"] = $577;
+$576["activecaption"] = $578;
+$576["appworkspace"] = $580;
+$576["background"] = $581;
+$576["buttonface"] = $584;
+$576["buttonhighlight"] = $586;
+$576["buttonshadow"] = $587;
+$576["buttontext"] = $588;
+$576["captiontext"] = $589;
+$576["graytext"] = $592;
+$576["highlight"] = $593;
+$576["highlighttext"] = $597;
+$576["inactiveborder"] = $598;
+$576["inactivecaption"] = $599;
+$576["inactivecaptiontext"] = $600;
+$576["infobackground"] = $602;
+$576["infotext"] = $603;
+$576["menu"] = $604;
+$576["menutext"] = $605;
+$576["scrollbar"] = $606;
+$576["threeddarkshadow"] = $607;
+$576["threedface"] = $608;
+$576["threedhighlight"] = $609;
+$576["threedlightshadow"] = $610;
+$576["threedshadow"] = $611;
+$576["window"] = $612;
+$576["windowframe"] = $613;
+$576["windowtext"] = $614;
+$577[0] = $393;
+$577[1] = $394;
+$577[2] = $278;
+$578[0] = $579;
+$578[1] = $579;
+$578[2] = $579;
+$580[0] = $400;
+$580[1] = $400;
+$580[2] = $400;
+$581[0] = $124;
+$581[1] = $582;
+$581[2] = $583;
+$584[0] = $585;
+$584[1] = $435;
+$584[2] = $486;
+$586[0] = $350;
+$586[1] = $350;
+$586[2] = $350;
+$587[0] = $540;
+$587[1] = $540;
+$587[2] = $420;
+$588[0] = $48;
+$588[1] = $48;
+$588[2] = $48;
+$589[0] = $590;
+$589[1] = $591;
+$589[2] = $591;
+$592[0] = $495;
+$592[1] = $398;
+$592[2] = $496;
+$593[0] = $594;
+$593[1] = $595;
+$593[2] = $596;
+$597[0] = $48;
+$597[1] = $48;
+$597[2] = $48;
+$598[0] = $393;
+$598[1] = $394;
+$598[2] = $278;
+$599[0] = $350;
+$599[1] = $350;
+$599[2] = $350;
+$600[0] = $601;
+$600[1] = $420;
+$600[2] = $420;
+$602[0] = $350;
+$602[1] = $350;
+$602[2] = $348;
+$603[0] = $48;
+$603[1] = $48;
+$603[2] = $48;
+$604[0] = $350;
+$604[1] = $350;
+$604[2] = $350;
+$605[0] = $48;
+$605[1] = $48;
+$605[2] = $48;
+$606[0] = $393;
+$606[1] = $394;
+$606[2] = $278;
+$607[0] = $516;
+$607[1] = $419;
+$607[2] = $517;
+$608[0] = $585;
+$608[1] = $435;
+$608[2] = $486;
+$609[0] = $350;
+$609[1] = $350;
+$609[2] = $350;
+$610[0] = $521;
+$610[1] = $522;
+$610[2] = $523;
+$611[0] = $540;
+$611[1] = $540;
+$611[2] = $420;
+$612[0] = $350;
+$612[1] = $350;
+$612[2] = $350;
+$613[0] = $48;
+$613[1] = $48;
+$613[2] = $48;
+$614[0] = $48;
+$614[1] = $48;
+$614[2] = $48;
+$616["threeddarkshadow"] = $184;
+$616["threedshadow"] = $232;
+$616["threedlightshadow"] = $296;
+$616["threedhighlight"] = $306;
+$616["infotext"] = $309;
+$616["graytext"] = $319;
+$616["buttonface"] = $97;
+$616["highlight"] = $323;
+$616["highlighttext"] = $327;
+$616["inactivecaption"] = $331;
+$616["inactivecaptiontext"] = $335;
+$616["activecaption"] = $338;
+$616["captiontext"] = $342;
+$616["threedface"] = $359;
+$616["windowtext"] = $363;
+$619[0] = $24;
+$619[1] = $54;
+}); \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_1.html
new file mode 100644
index 0000000000..cb6df85590
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_1.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.io.local.CookieApi.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var f1 = new qx.ui.form.TextField;
+ f1.setLocation(20, 48);
+ qx.ui.core.ClientDocument.getInstance().add(f1);
+
+ var b1 = new qx.ui.form.Button("Restore");
+ b1.setLocation(20, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b1);
+
+ var b2 = new qx.ui.form.Button("Save");
+ b2.setLocation(80, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b2);
+
+
+
+ b1.addEventListener("execute", function(e) {
+ f1.setValue(qx.io.local.CookieTransport.get("fieldContent"));
+ });
+
+ b2.addEventListener("execute", function(e) {
+ qx.io.local.CookieTransport.set("fieldContent", f1.getValue());
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_2.html
new file mode 100644
index 0000000000..e22c5b698b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CookieStorage_2.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.io.local.CookieTransport API.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var vAll = [];
+ var vNum = 20;
+
+ for (var i=0; i<vNum; i++)
+ {
+ var f1 = new qx.ui.form.TextField;
+ f1.setLocation(20, 48+(i*22));
+ qx.ui.core.ClientDocument.getInstance().add(f1);
+ vAll.push(f1);
+ };
+
+ var b1 = new qx.ui.form.Button("Restore");
+ b1.setLocation(220, 48);
+ qx.ui.core.ClientDocument.getInstance().add(b1);
+
+ var b2 = new qx.ui.form.Button("Save");
+ b2.setLocation(280, 48);
+ qx.ui.core.ClientDocument.getInstance().add(b2);
+
+ var b3 = new qx.ui.form.Button("Clear");
+ b3.setLocation(340, 48);
+ qx.ui.core.ClientDocument.getInstance().add(b3);
+
+
+
+ b1.addEventListener("execute", function(e)
+ {
+ for (var i=0; i<vAll.length; i++) {
+ var vIn = qx.io.local.CookieTransport.get("fieldContent" + i);
+ vAll[i].setValue(vIn);
+ };
+ });
+
+ b2.addEventListener("execute", function(e)
+ {
+ for (var i=0; i<vAll.length; i++) {
+ qx.io.local.CookieTransport.set("fieldContent" + i, vAll[i].getValue());
+ };
+ });
+
+ b3.addEventListener("execute", function(e) {
+ qx.io.local.CookieTransport.delAll();
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Cookie_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Cookie_1.html
new file mode 100644
index 0000000000..1b3f83f51b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Cookie_1.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.io.local.CookieApi.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var f1 = new qx.ui.form.TextField;
+ f1.setLocation(20, 48);
+ qx.ui.core.ClientDocument.getInstance().add(f1);
+
+ var b1 = new qx.ui.form.Button("Restore");
+ b1.setLocation(20, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b1);
+
+ var b2 = new qx.ui.form.Button("Save");
+ b2.setLocation(80, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b2);
+
+
+
+ b1.addEventListener("execute", function(e) {
+ f1.setValue(qx.io.local.CookieApi.get("fieldContent"));
+ });
+
+ b2.addEventListener("execute", function(e) {
+ qx.io.local.CookieApi.set("fieldContent", f1.getValue());
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_1.html
new file mode 100644
index 0000000000..aa0ce0f91d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_1.html
@@ -0,0 +1,166 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <fieldset style="padding:3px; background-color:#fff; text-align:right"><legend style="color:red">Outer</legend>
+ <span style="color:blue; font-style:italic">Margin</span>
+ <fieldset style="margin:3px 10px; padding:3px 10px; background-color:#bbb"><legend style="color:red">Box</legend>
+ <span style="color:blue; font-style:italic">Inset (Border + Scrollbar)</span>
+ <fieldset style="margin:3px 10px; padding:3px 10px; background-color:#999"><legend style="color:red">Area</legend>
+ <span style="color:blue; font-style:italic">Padding</span>
+ <fieldset style="margin:3px 10px; padding:3px 10px; background-color:#666"><legend style="color:red">Inner</legend>
+ </fieldset>
+ </fieldset>
+ </fieldset>
+ </fieldset>
+ </div>
+
+ <div style="margin-left:200px;margin-right:400px; margin-top: 30px;">
+Mit seiner Aufnahme in die Elite war Knechts Leben auf eine andre Ebene verpflanzt, es war der erste und entscheidende Schritt in seiner Entwicklung geschehen. Es geht durchaus nicht allen Elitesch�lern so, da� die amtliche Aufnahme in die Elite mit dem innern Erlebnis der Berufung zusammenf�llt. Das ist Gnade, oder wenn man es banal ausdr�cken will: es ist ein Gl�cksfall. Wem er begegnet, dessen Leben hat ein Plus, so wie der ein Plus besitzt, dem ein Gl�cksfall besonders gl�ckliche Gaben an Leib und See le mitgegeben hat. Die meisten Elitesch�ler, ja beinahe alle, empfinden zwar ihre Wahl als ein gro�es Gl�ck, als eine Auszeichnung, auf die sie stolz sind, und sehr viele von ihnen haben sich auch diese Auszeichnung vorher gl�hend erw�nscht. Aber der �bergang von der gew�hnlichen heimatlichen Schule in die Schulen von Kastalien f�llt den meisten Auserw�hlten dann doch schwerer, als sie gedacht h�tten, und bringt manchen unerwartete Entt�uschungen. Vor allem ist der �bergang f�r alle jene Sch�ler, die in i hrem Elternhaus gl�cklich und geliebt waren, ein sehr schwerer Abschied und Verzicht, und so kommt denn auch, namentlich w�hrend der beiden ersten Elitejahre, eine nicht unbetr�chtliche Zahl von R�ckversetzungen vor, deren Grund nicht ein Mangel an Begabung und Flei�, sondern Unf�higkeit der Sch�ler ist, sich mit dem Internatsleben und vor allem mit dem Gedanken zu vers�hnen, k�nftig die Verbindung mit Familie und Heimat immer mehr zu l�sen und schlie�lich keine andre Zugeh�rigkeit mehr zu kennen und zu r espektieren als die zum Orden. Dann gibt es je und je auch Sch�ler, welchen umgekehrt gerade das Loskommen vom Vaterhaus und von einer ihnen entleideten Schule die Hauptsache bei ihrer Aufnahme in die Elite war; diese, etwa von einem strengen Vater oder einem ihnen unangenehmen Lehrer befreit, atmeten zwar eine Weile auf, hatten sich aber von dem Wechsel so gro�e und unm�gliche Ver�nderungen ihres ganzen Lebens versprochen, da� bald eine Entt�uschung kam. Auch die eigentlichen Streber und Mustersch�ler, d i! e Pedantischen, konnten sich in Kastalien nicht immer halten; nicht da� sie den Studien nicht w�ren gewachsen gewesen, aber es kam in der Elite eben nicht allein auf die Studien und Fachzeugnisse an, sondern es wurden auch erzieherische und musische Ziele angestrebt, vor welchen dieser und jener die Waffen streckte. Immerhin war in dem System der vier gro�en Eliteschulen mit ihren zahlreichen Unterabteilungen und Zweiganstalten Raum f�r vielerlei Begabungen, und ein strebsamer Mathematiker oder Philologe, wenn er wirklich das Zeug zu einem Gelehrten in sich hatte, brauchte etwa einen Mangel an musikalischer oder philosophischer Begabung nicht als Gefahr zu empfinden. Es gab zuzeiten sogar in Kastalien sehr starke Tendenzen zur Pflege der reinen, n�chternen Fachwissenschaften, und die Vork�mpfer dieser Tendenzen waren nicht nur gegen die �Phantasten�, das hei�t gegen die Musikalischen und Musischen, kritisch und spottlustig gestimmt, sondern haben zuzeiten innerhalb ihrer Kreise alles Musische, und namentl ich das Glasperlenspiel, geradezu abgeschworen und verp�nt.Da Knechts Leben, soweit es uns bekannt ist, sich ganz in Kastalien abspielte, in jenem stillsten und heitersten Bezirk unseres gebirgigen Landes, den man fr�her mit einem Ausdruck des Dichters Goethe oft auch �die p�dagogische Provinz� genannt hat, wollen wir in aller K�rze und auf die Gefahr hin, den Leser mit L�ngstgewu�tem zu langweilen, nochmals dies ber�hmte Kastalien.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ with(w1)
+ {
+ setHeight(100);
+ setWidth(100);
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor("orange");
+ setStyleProperty("padding", "5px");
+ setStyleProperty("margin", "10px");
+ setBorder(new qx.renderer.border.Border(2, "solid", "blue"));
+ setOverflow("scroll");
+ };
+
+ d.add(w1);
+
+ w1.addEventListener("initialShow", function(e)
+ {
+ QxDebug("Properties", "getComputedMarginLeft: " + w1.getComputedMarginLeft());
+ QxDebug("Properties", "getComputedMarginTop: " + w1.getComputedMarginTop());
+ QxDebug("Properties", "getComputedMarginRight: " + w1.getComputedMarginRight());
+ QxDebug("Properties", "getComputedMarginBottom: " + w1.getComputedMarginBottom());
+
+ QxDebug("Properties", "getComputedPaddingLeft: " + w1.getComputedPaddingLeft());
+ QxDebug("Properties", "getComputedPaddingTop: " + w1.getComputedPaddingTop());
+ QxDebug("Properties", "getComputedPaddingRight: " + w1.getComputedPaddingRight());
+ QxDebug("Properties", "getComputedPaddingBottom: " + w1.getComputedPaddingBottom());
+
+ QxDebug("Properties", "getComputedBorderLeft: " + w1.getComputedBorderLeft());
+ QxDebug("Properties", "getComputedBorderTop: " + w1.getComputedBorderTop());
+ QxDebug("Properties", "getComputedBorderRight: " + w1.getComputedBorderRight());
+ QxDebug("Properties", "getComputedBorderBottom: " + w1.getComputedBorderBottom());
+
+ QxDebug("Dimensions", "getComputedOuterWidth: " + w1.getComputedOuterWidth());
+ QxDebug("Dimensions", "getComputedOuterHeight: " + w1.getComputedOuterHeight());
+
+ QxDebug("Dimensions", "getComputedBoxWidth: " + w1.getComputedBoxWidth());
+ QxDebug("Dimensions", "getComputedBoxHeight: " + w1.getComputedBoxHeight());
+
+ QxDebug("Dimensions", "getComputedAreaWidth: " + w1.getComputedAreaWidth());
+ QxDebug("Dimensions", "getComputedAreaHeight: " + w1.getComputedAreaHeight());
+
+ QxDebug("Dimensions", "getComputedInnerWidth: " + w1.getComputedInnerWidth());
+ QxDebug("Dimensions", "getComputedInnerHeight: " + w1.getComputedInnerHeight());
+
+ QxDebug("Insets", "getComputedInsetLeft: " + w1.getComputedInsetLeft());
+ QxDebug("Insets", "getComputedInsetTop: " + w1.getComputedInsetTop());
+ QxDebug("Insets", "getComputedInsetRight: " + w1.getComputedInsetRight());
+ QxDebug("Insets", "getComputedInsetBottom: " + w1.getComputedInsetBottom());
+
+ QxDebug("Scroll", "getComputedScrollBarSizeLeft: " + w1.getComputedScrollBarSizeLeft());
+ QxDebug("Scroll", "getComputedScrollBarSizeTop: " + w1.getComputedScrollBarSizeTop());
+ QxDebug("Scroll", "getComputedScrollBarSizeRight: " + w1.getComputedScrollBarSizeRight());
+ QxDebug("Scroll", "getComputedScrollBarSizeBottom: " + w1.getComputedScrollBarSizeBottom());
+
+ QxDebug("Scroll", "getComputedScrollBarVisibleX: " + w1.getComputedScrollBarVisibleX());
+ QxDebug("Scroll", "getComputedScrollBarVisibleY: " + w1.getComputedScrollBarVisibleY());
+
+
+
+ QxDebug("Positions->Client", "getComputedClientOuterLeft: " + w1.getComputedClientOuterLeft());
+ QxDebug("Positions->Client", "getComputedClientOuterTop: " + w1.getComputedClientOuterTop());
+ QxDebug("Positions->Client", "getComputedClientOuterRight: " + w1.getComputedClientOuterRight());
+ QxDebug("Positions->Client", "getComputedClientOuterBottom: " + w1.getComputedClientOuterBottom());
+
+ QxDebug("Positions->Client", "getComputedClientBoxLeft: " + w1.getComputedClientBoxLeft());
+ QxDebug("Positions->Client", "getComputedClientBoxTop: " + w1.getComputedClientBoxTop());
+ QxDebug("Positions->Client", "getComputedClientBoxRight: " + w1.getComputedClientBoxRight());
+ QxDebug("Positions->Client", "getComputedClientBoxBottom: " + w1.getComputedClientBoxBottom());
+
+ QxDebug("Positions->Client", "getComputedClientAreaLeft: " + w1.getComputedClientAreaLeft());
+ QxDebug("Positions->Client", "getComputedClientAreaTop: " + w1.getComputedClientAreaTop());
+ QxDebug("Positions->Client", "getComputedClientAreaRight: " + w1.getComputedClientAreaRight());
+ QxDebug("Positions->Client", "getComputedClientAreaBottom: " + w1.getComputedClientAreaBottom());
+
+ QxDebug("Positions->Client", "getComputedClientInnerLeft: " + w1.getComputedClientInnerLeft());
+ QxDebug("Positions->Client", "getComputedClientInnerTop: " + w1.getComputedClientInnerTop());
+ QxDebug("Positions->Client", "getComputedClientInnerRight: " + w1.getComputedClientInnerRight());
+ QxDebug("Positions->Client", "getComputedClientInnerBottom: " + w1.getComputedClientInnerBottom());
+
+
+
+ QxDebug("Positions->Page", "getComputedPageOuterLeft: " + w1.getComputedPageOuterLeft());
+ QxDebug("Positions->Page", "getComputedPageOuterTop: " + w1.getComputedPageOuterTop());
+ QxDebug("Positions->Page", "getComputedPageOuterRight: " + w1.getComputedPageOuterRight());
+ QxDebug("Positions->Page", "getComputedPageOuterBottom: " + w1.getComputedPageOuterBottom());
+
+ QxDebug("Positions->Page", "getComputedPageBoxLeft: " + w1.getComputedPageBoxLeft());
+ QxDebug("Positions->Page", "getComputedPageBoxTop: " + w1.getComputedPageBoxTop());
+ QxDebug("Positions->Page", "getComputedPageBoxRight: " + w1.getComputedPageBoxRight());
+ QxDebug("Positions->Page", "getComputedPageBoxBottom: " + w1.getComputedPageBoxBottom());
+
+ QxDebug("Positions->Page", "getComputedPageAreaLeft: " + w1.getComputedPageAreaLeft());
+ QxDebug("Positions->Page", "getComputedPageAreaTop: " + w1.getComputedPageAreaTop());
+ QxDebug("Positions->Page", "getComputedPageAreaRight: " + w1.getComputedPageAreaRight());
+ QxDebug("Positions->Page", "getComputedPageAreaBottom: " + w1.getComputedPageAreaBottom());
+
+ QxDebug("Positions->Page", "getComputedPageInnerLeft: " + w1.getComputedPageInnerLeft());
+ QxDebug("Positions->Page", "getComputedPageInnerTop: " + w1.getComputedPageInnerTop());
+ QxDebug("Positions->Page", "getComputedPageInnerRight: " + w1.getComputedPageInnerRight());
+ QxDebug("Positions->Page", "getComputedPageInnerBottom: " + w1.getComputedPageInnerBottom());
+
+
+
+
+ QxDebug("Screen", "getComputedScreenOuterLeft: " + w1.getComputedScreenOuterLeft());
+ QxDebug("Screen", "getComputedScreenOuterTop: " + w1.getComputedScreenOuterTop());
+ QxDebug("Screen", "getComputedScreenOuterRight: " + w1.getComputedScreenOuterRight());
+ QxDebug("Screen", "getComputedScreenOuterBottom: " + w1.getComputedScreenOuterBottom());
+
+ QxDebug("Screen", "getComputedScreenBoxLeft: " + w1.getComputedScreenBoxLeft());
+ QxDebug("Screen", "getComputedScreenBoxTop: " + w1.getComputedScreenBoxTop());
+ QxDebug("Screen", "getComputedScreenBoxRight: " + w1.getComputedScreenBoxRight());
+ QxDebug("Screen", "getComputedScreenBoxBottom: " + w1.getComputedScreenBoxBottom());
+
+ QxDebug("Screen", "getComputedScreenAreaLeft: " + w1.getComputedScreenAreaLeft());
+ QxDebug("Screen", "getComputedScreenAreaTop: " + w1.getComputedScreenAreaTop());
+ QxDebug("Screen", "getComputedScreenAreaRight: " + w1.getComputedScreenAreaRight());
+ QxDebug("Screen", "getComputedScreenAreaBottom: " + w1.getComputedScreenAreaBottom());
+
+ QxDebug("Screen", "getComputedScreenInnerLeft: " + w1.getComputedScreenInnerLeft());
+ QxDebug("Screen", "getComputedScreenInnerTop: " + w1.getComputedScreenInnerTop());
+ QxDebug("Screen", "getComputedScreenInnerRight: " + w1.getComputedScreenInnerRight());
+ QxDebug("Screen", "getComputedScreenInnerBottom: " + w1.getComputedScreenInnerBottom());
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_2.html
new file mode 100644
index 0000000000..a37a47b55e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/CrossBrowser_2.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for crossbrowser offsetTop and offsetLeft properties provided by qx.dom</p>
+ </div>
+
+ <style type="text/css">
+
+#i{
+ border: 1px solid red;
+}
+
+#l{
+ position: absolute;
+
+ top: 100px;
+ left: 100px;
+
+ width: 300px;
+ height: 300px;
+
+ overflow: auto;
+ border: 6px solid red;
+ padding: 10px;
+}
+
+#p1{
+ position: static;
+
+ width: 100px;
+ height: 100px;
+
+ overflow: auto;
+
+ border: 5px solid orange;
+ padding: 5px;
+}
+
+#p2{
+ position: absolute;
+
+ top: 150px;
+ left: 150px;
+
+ width: 100px;
+ height: 100px;
+
+ overflow: auto;
+
+ border: 5px solid orange;
+ padding: 3px;
+}
+
+#p1 div,
+#p2 div{
+ border: 2px solid blue;
+ padding: 4px;
+}
+ </style>
+
+ <br/><br/><br/><br/><br/>
+ <p id="i">Inline</p>
+
+ <div id="l">
+ <div id="p1">
+ <div id="p1a">P1-A</div>
+ <div id="p1b">P1-B</div>
+ <div id="p1c">P1-C</div>
+ <div id="p1d">P1-D</div>
+ <div id="p1e">P1-E</div>
+ <div id="p1f">P1-F</div>
+ <div id="p1g">P1-G</div>
+ <div id="p1h">P1-H</div>
+ <div id="p1j">P1-I</div>
+ </div>
+ <div id="p2">
+ <div id="p2a">P2-A</div>
+ <div id="p2b">P2-B</div>
+ <div id="p2c">P2-C</div>
+ <div id="p2d">P2-D</div>
+ <div id="p2e">P2-E</div>
+ <div id="p2f">P2-F</div>
+ <div id="p2g">P2-G</div>
+ <div id="p2h">P2-H</div>
+ <div id="p2j">P2-I</div>
+ </div>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var i = document.getElementById("i");
+ var l = document.getElementById("l");
+ var p1 = document.getElementById("p1");
+ var p2 = document.getElementById("p2");
+ var p1a = document.getElementById("p1a");
+ var p2a = document.getElementById("p2a");
+
+ qx.core.Init.getInstance().debug("Browser-Impl", "I: " + i.offsetLeft + "x" + i.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "L: " + l.offsetLeft + "x" + l.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P1: " + p1.offsetLeft + "x" + p1.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P2: " + p2.offsetLeft + "x" + p2.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P1A: " + p1a.offsetLeft + "x" + p1a.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P2A: " + p2a.offsetLeft + "x" + p2a.offsetTop);
+
+ qx.core.Init.getInstance().debug("QxDom-Impl", "I: " + qx.dom.Offset.getLeft(i) + "x" + qx.dom.Offset.getTop(i));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "L: " + qx.dom.Offset.getLeft(l) + "x" + qx.dom.Offset.getTop(l));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P1: " + qx.dom.Offset.getLeft(p1) + "x" + qx.dom.Offset.getTop(p1));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P2: " + qx.dom.Offset.getLeft(p2) + "x" + qx.dom.Offset.getTop(p2));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P1A: " + qx.dom.Offset.getLeft(p1a) + "x" + qx.dom.Offset.getTop(p1a));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P2A: " + qx.dom.Offset.getLeft(p2a) + "x" + qx.dom.Offset.getTop(p2a));
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_1.html
new file mode 100644
index 0000000000..6e4bab98be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_1.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Simple Test for qx.ui.layout.DockLayout.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(2, "outset");
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.basic.Terminator;
+ t1.setHeight(50);
+ t1.setBackgroundColor("red");
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.basic.Terminator;
+ t2.setWidth(150);
+ t2.setBackgroundColor("yellow");
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.basic.Terminator;
+ t3.setBackgroundColor("blue");
+ dl1.add(t3);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_2.html
new file mode 100644
index 0000000000..52ecefadec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_2.html
@@ -0,0 +1,224 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ The next generation of table-less layouts ;)
+ </div>
+
+ <script type="text/javascript">
+ function selfRemove() {
+ this.getParent().remove(this);
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(120);
+ dl1.setMinWidth(400);
+ dl1.setMinHeight(300);
+
+ dl1.setBorder(2, "outset");
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.basic.Terminator;
+ t1.setHeight(50);
+ t1.setBackgroundColor("red");
+ t1.setVerticalAlign("top");
+ t1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1.addEventListener("click", selfRemove);
+
+ var t2 = new qx.ui.basic.Terminator;
+ // t2.setWidth(150);
+ t2.setWidth("20%");
+ t2.setBackgroundColor("gray");
+ t2.setHorizontalAlign("left");
+ t2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2.addEventListener("click", selfRemove);
+
+ var t3 = new qx.ui.basic.Terminator;
+ t3.setHeight(100);
+ t3.setBackgroundColor("yellow");
+ t3.setVerticalAlign("top");
+ t3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3.addEventListener("click", selfRemove);
+
+ var t4 = new qx.ui.basic.Terminator;
+ t4.setWidth(40);
+ t4.setBackgroundColor("orange");
+ t4.setHorizontalAlign("right");
+ t4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4.addEventListener("click", selfRemove);
+
+ var t5 = new qx.ui.basic.Terminator;
+ t5.setHeight(80);
+ t5.setBackgroundColor("blue");
+ t5.setVerticalAlign("bottom");
+ t5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5.addEventListener("click", selfRemove);
+
+ var t6 = new qx.ui.basic.Terminator;
+ t6.setBackgroundColor("green");
+ t6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6.addEventListener("click", selfRemove);
+
+ dl1.add(t1, t2, t3, t4, t5, t6);
+
+
+
+
+
+
+
+
+
+ var l1 = new qx.ui.basic.Label("Mode:");
+ l1.setWidth(50);
+
+ var btn1_1 = new qx.ui.form.Button("Vertical", "icon/16/button-ok.png");
+ var btn1_2 = new qx.ui.form.Button("Horizontal", "icon/16/button-ok.png");
+ var btn1_3 = new qx.ui.form.Button("Ordered", "icon/16/button-ok.png");
+
+ btn1_1.addEventListener("click", function(e) {
+ dl1.setMode("vertical");
+ });
+
+ btn1_2.addEventListener("click", function(e) {
+ dl1.setMode("horizontal");
+ });
+
+ btn1_3.addEventListener("click", function(e) {
+ dl1.setMode("ordered");
+ });
+
+ var h1 = new qx.ui.layout.HorizontalBoxLayout;
+ h1.setVerticalChildrenAlign("middle");
+ h1.add(l1, btn1_1, btn1_2, btn1_3);
+ h1.setBottom(78);
+ h1.setLeft(20);
+ d.add(h1);
+
+
+
+
+
+
+
+
+
+ var l2 = new qx.ui.basic.Label("Children:");
+ l2.setWidth(50);
+
+ var btn2_1 = new qx.ui.form.Button("Remove First", "icon/16/button-ok.png");
+ var btn2_2 = new qx.ui.form.Button("Remove Last", "icon/16/button-ok.png");
+ var btn2_3 = new qx.ui.form.Button("Add Top", "icon/16/button-ok.png");
+ var btn2_4 = new qx.ui.form.Button("Add Right", "icon/16/button-ok.png");
+ var btn2_5 = new qx.ui.form.Button("Add Bottom", "icon/16/button-ok.png");
+ var btn2_6 = new qx.ui.form.Button("Add Left", "icon/16/button-ok.png");
+ var btn2_7 = new qx.ui.form.Button("Add Auto", "icon/16/button-ok.png");
+
+ btn2_1.addEventListener("execute", function(e)
+ {
+ var c = dl1.getFirstChild();
+ if (c) {
+ dl1.remove(c);
+ };
+ });
+
+ btn2_2.addEventListener("execute", function(e)
+ {
+ var c = dl1.getLastChild();
+ if (c) {
+ dl1.remove(c);
+ };
+ });
+
+ btn2_3.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setHeight(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addTop(t);
+ });
+
+ btn2_4.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setWidth(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addRight(t);
+ });
+
+ btn2_5.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setHeight(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addBottom(t);
+ });
+
+ btn2_6.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setWidth(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addLeft(t);
+ });
+
+ btn2_7.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.add(t);
+ });
+
+
+ var h2 = new qx.ui.layout.HorizontalBoxLayout;
+ h2.setVerticalChildrenAlign("middle");
+ h2.add(l2, btn2_1, btn2_2, btn2_3, btn2_4, btn2_5, btn2_6, btn2_7);
+ h2.setBottom(48);
+ h2.setLeft(20);
+ d.add(h2);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_3.html
new file mode 100644
index 0000000000..0ef1f5c789
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_3.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Testing Layouts inside the qx.ui.layout.DockLayout. In this example centering through qx.ui.layout.HorizontalBoxLayout.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.layout.HorizontalBoxLayout;
+ t1.setHeight(50);
+ t1.setBackgroundColor("red");
+ t1.setWidth(null);
+ t1.setVerticalChildrenAlign("middle");
+ t1.setHorizontalChildrenAlign("center");
+ t1.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.layout.HorizontalBoxLayout;
+ t2.setWidth(150);
+ t2.setBackgroundColor("yellow");
+ t2.setHeight(null);
+ t2.setVerticalChildrenAlign("middle");
+ t2.setHorizontalChildrenAlign("center");
+ t2.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+ t3.setHeight(50);
+ t3.setBackgroundColor("blue");
+ t3.setWidth(null);
+ t3.setVerticalChildrenAlign("middle");
+ t3.setHorizontalChildrenAlign("center");
+ t3.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addBottom(t3);
+
+ var t4 = new qx.ui.layout.HorizontalBoxLayout;
+ t4.setWidth(150);
+ t4.setBackgroundColor("green");
+ t4.setHeight(null);
+ t4.setVerticalChildrenAlign("middle");
+ t4.setHorizontalChildrenAlign("center");
+ t4.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addRight(t4);
+
+
+
+
+ var dl2 = new qx.ui.layout.DockLayout;
+ dl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.add(dl2);
+
+
+
+
+
+
+
+ var t5 = new qx.ui.layout.HorizontalBoxLayout;
+ t5.setHeight(50);
+ t5.setBackgroundColor("fuchsia");
+ t5.setWidth(null);
+ t5.setVerticalChildrenAlign("middle");
+ t5.setHorizontalChildrenAlign("center");
+ t5.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addTop(t5);
+
+ var t6 = new qx.ui.layout.HorizontalBoxLayout;
+ t6.setWidth(150);
+ t6.setBackgroundColor("orange");
+ t6.setHeight(null);
+ t6.setVerticalChildrenAlign("middle");
+ t6.setHorizontalChildrenAlign("center");
+ t6.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addLeft(t6);
+
+ var t7 = new qx.ui.layout.HorizontalBoxLayout;
+ t7.setHeight(50);
+ t7.setBackgroundColor("aqua");
+ t7.setWidth(null);
+ t7.setVerticalChildrenAlign("middle");
+ t7.setHorizontalChildrenAlign("center");
+ t7.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addBottom(t7);
+
+ var t8 = new qx.ui.layout.HorizontalBoxLayout;
+ t8.setWidth(150);
+ t8.setBackgroundColor("lime");
+ t8.setHeight(null);
+ t8.setVerticalChildrenAlign("middle");
+ t8.setHorizontalChildrenAlign("center");
+ t8.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addRight(t8);
+
+
+
+
+
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hb1.setBackgroundColor("silver");
+ hb1.setVerticalChildrenAlign("middle");
+ hb1.setHorizontalChildrenAlign("center");
+ hb1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ hb1.setWidth(null);
+ hb1.setHeight(null);
+ hb1.add(new qx.ui.basic.Image("icon/64/clock.png"));
+
+ dl2.add(hb1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_4.html
new file mode 100644
index 0000000000..89cbe88603
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_4.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Same as the previous one, but additional the dimensions of the qx.ui.layout.DockLayout are defined as percents here.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.layout.HorizontalBoxLayout;
+ t1.setHeight("20%");
+ t1.setBackgroundColor("red");
+ t1.setWidth(null);
+ t1.setVerticalChildrenAlign("middle");
+ t1.setHorizontalChildrenAlign("center");
+ t1.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.layout.HorizontalBoxLayout;
+ t2.setWidth("20%");
+ t2.setBackgroundColor("yellow");
+ t2.setHeight(null);
+ t2.setVerticalChildrenAlign("middle");
+ t2.setHorizontalChildrenAlign("center");
+ t2.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+ t3.setHeight("20%");
+ t3.setBackgroundColor("blue");
+ t3.setWidth(null);
+ t3.setVerticalChildrenAlign("middle");
+ t3.setHorizontalChildrenAlign("center");
+ t3.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addBottom(t3);
+
+ var t4 = new qx.ui.layout.HorizontalBoxLayout;
+ t4.setWidth("20%");
+ t4.setBackgroundColor("green");
+ t4.setHeight(null);
+ t4.setVerticalChildrenAlign("middle");
+ t4.setHorizontalChildrenAlign("center");
+ t4.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ dl1.addRight(t4);
+
+
+
+
+ var dl2 = new qx.ui.layout.DockLayout;
+ dl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.add(dl2);
+
+
+
+
+
+
+
+ var t5 = new qx.ui.layout.HorizontalBoxLayout;
+ t5.setHeight("20%");
+ t5.setBackgroundColor("fuchsia");
+ t5.setWidth(null);
+ t5.setVerticalChildrenAlign("middle");
+ t5.setHorizontalChildrenAlign("center");
+ t5.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addTop(t5);
+
+ var t6 = new qx.ui.layout.HorizontalBoxLayout;
+ t6.setWidth("20%");
+ t6.setBackgroundColor("orange");
+ t6.setHeight(null);
+ t6.setVerticalChildrenAlign("middle");
+ t6.setHorizontalChildrenAlign("center");
+ t6.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addLeft(t6);
+
+ var t7 = new qx.ui.layout.HorizontalBoxLayout;
+ t7.setHeight("20%");
+ t7.setBackgroundColor("aqua");
+ t7.setWidth(null);
+ t7.setVerticalChildrenAlign("middle");
+ t7.setHorizontalChildrenAlign("center");
+ t7.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addBottom(t7);
+
+ var t8 = new qx.ui.layout.HorizontalBoxLayout;
+ t8.setWidth("20%");
+ t8.setBackgroundColor("lime");
+ t8.setHeight(null);
+ t8.setVerticalChildrenAlign("middle");
+ t8.setHorizontalChildrenAlign("center");
+ t8.add(new qx.ui.basic.Image("icon/32/clock.png"));
+ dl2.addRight(t8);
+
+
+
+
+
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hb1.setBackgroundColor("silver");
+ hb1.setVerticalChildrenAlign("middle");
+ hb1.setHorizontalChildrenAlign("center");
+ hb1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ hb1.setWidth(null);
+ hb1.setHeight(null);
+ hb1.add(new qx.ui.basic.Image("icon/64/clock.png"));
+
+ dl2.add(hb1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_5.html
new file mode 100644
index 0000000000..382db255e2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_5.html
@@ -0,0 +1,164 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Same as the previous one, but additional added multiple children to the box layout.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.layout.HorizontalBoxLayout;
+ t1.setHeight("20%");
+ t1.setBackgroundColor("red");
+ t1.setWidth(null);
+ t1.setVerticalChildrenAlign("middle");
+ t1.setHorizontalChildrenAlign("center");
+ t1.setSpacing(4);
+ t1.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t1.add(new qx.ui.basic.Label("Hello World"));
+ t1.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.layout.HorizontalBoxLayout;
+ t2.setWidth("20%");
+ t2.setBackgroundColor("yellow");
+ t2.setHeight(null);
+ t2.setVerticalChildrenAlign("middle");
+ t2.setHorizontalChildrenAlign("center");
+ t2.setSpacing(4);
+ t2.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t2.add(new qx.ui.basic.Label("Hello World"));
+ t2.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+ t3.setHeight("20%");
+ t3.setBackgroundColor("blue");
+ t3.setWidth(null);
+ t3.setVerticalChildrenAlign("middle");
+ t3.setHorizontalChildrenAlign("center");
+ t3.setSpacing(4);
+ t3.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t3.add(new qx.ui.basic.Label("Hello World"));
+ t3.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl1.addBottom(t3);
+
+ var t4 = new qx.ui.layout.HorizontalBoxLayout;
+ t4.setWidth("20%");
+ t4.setBackgroundColor("green");
+ t4.setHeight(null);
+ t4.setVerticalChildrenAlign("middle");
+ t4.setHorizontalChildrenAlign("center");
+ t4.setSpacing(4);
+ t4.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t4.add(new qx.ui.basic.Label("Hello World"));
+ t4.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl1.addRight(t4);
+
+
+
+
+ var dl2 = new qx.ui.layout.DockLayout;
+ dl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.add(dl2);
+
+
+
+
+
+
+
+ var t5 = new qx.ui.layout.HorizontalBoxLayout;
+ t5.setHeight("20%");
+ t5.setBackgroundColor("fuchsia");
+ t5.setWidth(null);
+ t5.setVerticalChildrenAlign("middle");
+ t5.setHorizontalChildrenAlign("center");
+ t5.setSpacing(4);
+ t5.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t5.add(new qx.ui.basic.Label("Hello World"));
+ t5.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl2.addTop(t5);
+
+ var t6 = new qx.ui.layout.HorizontalBoxLayout;
+ t6.setWidth("20%");
+ t6.setBackgroundColor("orange");
+ t6.setHeight(null);
+ t6.setVerticalChildrenAlign("middle");
+ t6.setHorizontalChildrenAlign("center");
+ t6.setSpacing(4);
+ t6.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t6.add(new qx.ui.basic.Label("Hello World"));
+ t6.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl2.addLeft(t6);
+
+ var t7 = new qx.ui.layout.HorizontalBoxLayout;
+ t7.setHeight("20%");
+ t7.setBackgroundColor("aqua");
+ t7.setWidth(null);
+ t7.setVerticalChildrenAlign("middle");
+ t7.setHorizontalChildrenAlign("center");
+ t7.setSpacing(4);
+ t7.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t7.add(new qx.ui.basic.Label("Hello World"));
+ t7.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl2.addBottom(t7);
+
+ var t8 = new qx.ui.layout.HorizontalBoxLayout;
+ t8.setWidth("20%");
+ t8.setBackgroundColor("lime");
+ t8.setHeight(null);
+ t8.setVerticalChildrenAlign("middle");
+ t8.setHorizontalChildrenAlign("center");
+ t8.setSpacing(4);
+ t8.add(new qx.ui.basic.Image("icon/16/clock.png"));
+ t8.add(new qx.ui.basic.Label("Hello World"));
+ t8.add(new qx.ui.basic.Image("icon/48/colors.png"));
+ dl2.addRight(t8);
+
+
+
+
+
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hb1.setBackgroundColor("silver");
+ hb1.setVerticalChildrenAlign("middle");
+ hb1.setHorizontalChildrenAlign("center");
+ hb1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ hb1.setWidth(null);
+ hb1.setHeight(null);
+ hb1.add(new qx.ui.basic.Image("icon/64/clock.png"));
+
+ dl2.add(hb1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_6.html
new file mode 100644
index 0000000000..3bf090b428
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DockLayout_6.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Simple Test for qx.ui.layout.DockLayout. But with a dynamic child. Simple click on "Hello World" to see the effect.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(2, "outset");
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.basic.Terminator;
+ t1.setHeight(50);
+ t1.setBackgroundColor("white");
+ t1.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.basic.Label("Hello World");
+ t2.setHeight(null);
+ t2.setBackgroundColor("white");
+ t2.setPadding(10);
+ t2.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+
+ t3.setWidth(null);
+ t3.setHeight(null);
+ t3.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ t3.setBackgroundColor("white");
+ t3.setHorizontalChildrenAlign("center");
+ t3.setVerticalChildrenAlign("middle");
+
+ dl1.add(t3);
+
+ t3.add(new qx.ui.basic.Image("icon/128/bitmapgraphics.png"));
+
+
+
+ t2.addEventListener("click", function(e) {
+ this.setHtml(this.getHtml() == "Hello World" ? "Real long text, especially to test this cool behaviour" : "Hello World");
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_1.html
new file mode 100644
index 0000000000..000c45aeb4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_1.html
@@ -0,0 +1,131 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for drag&#38;drop implementation.</p>
+ <p>Changing the action using the modifier keys (Shift, Alt, Control) might not work in Safari.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var a1 = new qx.ui.basic.Atom("Drag Me");
+ a1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove });
+ a1.setPadding(10);
+ a1.setLocation(20, 48);
+ d.add(a1);
+
+
+ function handleDragStart(e)
+ {
+ e.addData("text/plain", "Plain text");
+ e.addData("text/html", "Some <strong>HTML</strong>");
+
+ e.addAction("copy");
+ e.addAction("move");
+ e.addAction("alias");
+
+ e.startDrag();
+ };
+
+ function handleDragDrop( e )
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ this.debug("Drag&Drop Action: " + e.getAction());
+
+ switch(type)
+ {
+ case "text/plain":
+ case "text/html":
+ this.setLabel(data);
+ break;
+ };
+ };
+
+ function handleDragOver(e) {
+ e.getTarget().setBackgroundColor("#f2f2f2");
+ };
+
+ function handleDragOut(e) {
+ e.getTarget().setBackgroundColor("#fff");
+ };
+
+ function handleDragEnd(e)
+ {
+ // we don't need to do anything here
+ // If we had a succesful move action we might have removed
+ // the source here or something else
+ };
+
+ a1.addEventListener("dragstart", handleDragStart);
+
+
+
+
+ var w1 = new qx.ui.basic.Atom("Drop to me");
+ w1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 20, horizontalAlign: "center" });
+ w1.setDropDataTypes(["text/html", "text/plain"]);
+ w1.addEventListener("dragdrop", handleDragDrop);
+ w1.addEventListener("dragover", handleDragOver);
+ w1.addEventListener("dragout", handleDragOut);
+
+ var w2 = new qx.ui.basic.Atom("Drop to me");
+ w2.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 230, left: 20, horizontalAlign: "center" });
+ w2.setDropDataTypes(["text/html", "text/plain"]);
+ w2.addEventListener("dragdrop", handleDragDrop);
+ w2.addEventListener("dragover", handleDragOver);
+ w2.addEventListener("dragout", handleDragOut);
+
+ var w3 = new qx.ui.basic.Atom("Drop to me");
+ w3.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 150, horizontalAlign: "center" });
+ w3.setDropDataTypes(["text/html", "text/plain"]);
+ w3.addEventListener("dragdrop", handleDragDrop);
+ w3.addEventListener("dragover", handleDragOver);
+ w3.addEventListener("dragout", handleDragOut);
+
+ var w4 = new qx.ui.basic.Atom("Drop to me");
+ w4.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 230, left: 150, horizontalAlign: "center" });
+ w4.setDropDataTypes(["text/html", "text/plain"]);
+ w4.addEventListener("dragdrop", handleDragDrop);
+ w4.addEventListener("dragover", handleDragOver);
+ w4.addEventListener("dragout", handleDragOut);
+
+
+
+ var f1 = new qx.ui.layout.CanvasLayout;
+ f1.set({ backgroundColor: "orange", width: 230, height: 120, top: 350, left: 20 });
+
+ var w5 = new qx.ui.basic.Atom("Drop to me");
+ w5.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 10, horizontalAlign: "center" });
+ w5.setDropDataTypes(["text/html", "text/plain"]);
+ w5.addEventListener("dragdrop", handleDragDrop);
+ w5.addEventListener("dragover", handleDragOver);
+ w5.addEventListener("dragout", handleDragOut);
+
+ var w6 = new qx.ui.basic.Atom("Drop to me");
+ w6.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 10, right: 0, horizontalAlign: "center" });
+ w6.setDropDataTypes(["text/html", "text/plain"]);
+ w6.addEventListener("dragdrop", handleDragDrop);
+ w6.addEventListener("dragover", handleDragOver);
+ w6.addEventListener("dragout", handleDragOut);
+
+ f1.add(w5, w6);
+ d.add(w1, w2, w3, w4, f1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_2.html
new file mode 100644
index 0000000000..04a943caf4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/DragAndDropManager_2.html
@@ -0,0 +1,124 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for drag&#38;drop implementation.</p>
+ <p>Changing the action using the modifier keys (Shift, Alt, Control) might not work in Safari.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var a1 = new qx.ui.basic.Atom("Drag Me");
+ a1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove });
+ a1.setPadding(10);
+ a1.setLocation(20, 48);
+ d.add(a1);
+
+
+
+
+ function printEvent(e) {
+ return "TARGET:" + (e.getTarget() ? e.getTarget().toHashCode() : "null") + " [ORIG:" + (e.getOriginalTarget() ? e.getOriginalTarget().toHashCode() : "null") + "] [REL:" + (e.getRelatedTarget() ? e.getRelatedTarget().toHashCode() : "null") + "]";
+ };
+
+ function handleDragStart(e)
+ {
+ this.debug("Fire DragStart: " + printEvent(e));
+
+ e.addData("text/plain", "Plain text");
+ e.addData("text/html", "Some <strong>HTML</strong>");
+
+ e.addAction("copy");
+ e.addAction("move");
+ e.addAction("alias");
+
+ e.startDrag();
+ };
+
+ function handleDragDrop( e )
+ {
+ this.debug("Fire DragDrop: " + printEvent(e));
+
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ switch(type)
+ {
+ case "text/plain":
+ case "text/html":
+ this.setLabel(data);
+ break;
+ };
+ };
+
+ function handleDragOver(e)
+ {
+ this.debug("Fire DragOver: " + printEvent(e));
+ e.getTarget().setBackgroundColor("#f2f2f2");
+ };
+
+ function handleDragOut(e)
+ {
+ this.debug("Fire DragOut: " + printEvent(e));
+ e.getTarget().setBackgroundColor("#fff");
+ };
+
+ function handleDragEnd(e) {
+ this.debug("Fire DragEnd: " + printEvent(e));
+ };
+
+
+
+
+ a1.addEventListener("dragstart", handleDragStart);
+ a1.addEventListener("dragend", handleDragEnd);
+
+
+
+
+ var w1 = new qx.ui.basic.Atom("Drop to me");
+ w1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 20, horizontalAlign: "center" });
+ w1.setDropDataTypes(["text/html", "text/plain"]);
+ w1.addEventListener("dragdrop", handleDragDrop);
+ w1.addEventListener("dragover", handleDragOver);
+ w1.addEventListener("dragout", handleDragOut);
+
+ var w2 = new qx.ui.basic.Atom("Drop to me");
+ w2.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 200, left: 20, horizontalAlign: "center" });
+ w2.setDropDataTypes(["text/html", "text/plain"]);
+ w2.addEventListener("dragdrop", handleDragDrop);
+ w2.addEventListener("dragover", handleDragOver);
+ w2.addEventListener("dragout", handleDragOut);
+
+ var w3 = new qx.ui.basic.Atom("Drop to me");
+ w3.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 150, horizontalAlign: "center" });
+ w3.setDropDataTypes(["text/html", "text/plain"]);
+ w3.addEventListener("dragdrop", handleDragDrop);
+ w3.addEventListener("dragover", handleDragOver);
+ w3.addEventListener("dragout", handleDragOut);
+
+ var w4 = new qx.ui.basic.Atom("Drop to me");
+ w4.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 200, left: 150, horizontalAlign: "center" });
+ w4.setDropDataTypes(["text/html", "text/plain"]);
+ w4.addEventListener("dragdrop", handleDragDrop);
+ w4.addEventListener("dragover", handleDragOver);
+ w4.addEventListener("dragout", handleDragOut);
+
+ d.add(w1, w2, w3, w4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/EnabledDisabled_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/EnabledDisabled_1.html
new file mode 100644
index 0000000000..d411a31dd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/EnabledDisabled_1.html
@@ -0,0 +1,230 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some test for the enable property in QxObject which will be extended from qx.ui.core.Widget and any other
+ widget which need additional handling on a change of this property. Keep in mind: Disabled QxWidgets will be ignored
+ from the QxEventManager and the qx.event.handler.FocusHandler.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.basic.Label("Basic Container");
+
+ with(w1)
+ {
+ setWidth(75);
+ setLeft(20);
+ setTop(48);
+ setHeight(50);
+ setWidth(80);
+ setBackgroundColor("#fff");
+ setColor("blue");
+ setTabIndex(1);
+ setBorder(new qx.renderer.border.Border(2, "solid", "blue"));
+ setEnabled(false);
+ };
+
+ d.add(w1);
+
+ w1.addEventListener("mouseover", function(e)
+ {
+ if( this.getEnabled() )
+ this.getElement().style.color = "red";
+ });
+
+ w1.addEventListener("mouseout", function(e)
+ {
+ if( this.getEnabled() )
+ this.getElement().style.color = "blue";
+ });
+
+ var c1t = new qx.ui.form.CheckBox("Enabled");
+ with(c1t)
+ {
+ setTop(60);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { w1.setEnabled(e.getData()); });
+ };
+
+ d.add(c1t);
+
+ //------
+ // atom
+ //------
+
+ var a1 = new qx.ui.basic.Atom("Atom", "icon/32/clock.png");
+
+ with(a1)
+ {
+ setTop(190);
+ setLeft(20);
+ setEnabled(false);
+ setPadding(2, 4);
+ setBackgroundColor("#FFFF6D");
+ };
+
+ d.add(a1);
+
+ var swa1 = new qx.ui.form.CheckBox("Enabled");
+ with(swa1)
+ {
+ setTop(196);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { a1.setEnabled(e.getData()); });
+ };
+
+ d.add(swa1);
+
+ //--------
+ // button
+ //--------
+
+ var btn1 = new qx.ui.form.Button("Button No #1");
+ with(btn1)
+ {
+ setTop(244);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(btn1);
+
+ var swbtn1 = new qx.ui.form.CheckBox("Enabled");
+ with(swbtn1)
+ {
+ setTop(244);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { btn1.setEnabled(e.getData()); });
+ };
+
+ d.add(swbtn1);
+
+ //-------------
+ // radiobutton
+ //-------------
+
+ var rb1 = new qx.ui.form.RadioButton("Radio button");
+ with(rb1)
+ {
+ setTop(292);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(rb1);
+
+ var swrb1 = new qx.ui.form.CheckBox("Enabled");
+ with(swrb1)
+ {
+ setTop(292);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { rb1.setEnabled(e.getData()); });
+ };
+
+ d.add(swrb1);
+
+ //----------
+ // checkbox
+ //----------
+
+ var cb1 = new qx.ui.form.CheckBox("Checkbox");
+ with(cb1)
+ {
+ setTop(340);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(cb1);
+
+ var swcb1 = new qx.ui.form.CheckBox("Enabled");
+ with(swcb1)
+ {
+ setTop(340);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { cb1.setEnabled(e.getData()); });
+ };
+
+ d.add(swcb1);
+
+ //-----------
+ // TextField
+ //-----------
+
+ var tf1 = new qx.ui.form.TextField;
+ with(tf1)
+ {
+ setTop(388);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(tf1);
+
+ var swtf1 = new qx.ui.form.CheckBox("Enabled");
+ with(swtf1)
+ {
+ setTop(388);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { tf1.setEnabled(e.getData()); });
+ };
+
+ d.add(swtf1);
+
+ //-----------
+ // ComboBox
+ //-----------
+
+ var cb1 = new qx.ui.form.ComboBox;
+ with(cb1)
+ {
+ setTop(436);
+ setLeft(20);
+ setEnabled(false);
+ setEditable(true);
+ };
+
+ d.add(cb1);
+
+ cb1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ cb1.add(item);
+ };
+ });
+
+ var swcb1 = new qx.ui.form.CheckBox("Enabled");
+ with(swcb1)
+ {
+ setTop(436);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { cb1.setEnabled(e.getData()); });
+ };
+
+ d.add(swcb1);
+
+ });
+
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FieldSet_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FieldSet_1.html
new file mode 100644
index 0000000000..378ffe5d86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FieldSet_1.html
@@ -0,0 +1,141 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A more complex example than the previous one. Use layout managers for its content. Configured minWidth of the qx.ui.groupbox.GroupBox with "auto".</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.GroupBox("My first Fieldset", "icon/16/clock.png");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth("auto");
+ };
+
+ d.add(fs);
+
+
+
+
+ var fsl = new qx.ui.layout.VerticalBoxLayout;
+ fsl.setLeft(0);
+ fsl.setRight(0);
+ fsl.setHeight("auto");
+ fsl.setSpacing(4);
+ fs.add(fsl);
+
+
+
+
+ var r1 = new qx.ui.layout.HorizontalBoxLayout;
+ r1.setLeft(0);
+ r1.setWidth("100%");
+ r1.setHeight("auto");
+ r1.setVerticalChildrenAlign("middle");
+ fsl.add(r1);
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField;
+ with(i1)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r1.add(a1, i1);
+
+
+
+
+
+ var r2 = new qx.ui.layout.HorizontalBoxLayout;
+ r2.setLeft(0);
+ r2.setWidth("100%");
+ r2.setHeight("auto");
+ r2.setVerticalChildrenAlign("middle");
+ fsl.add(r2);
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/look-and-feel.png");
+ with(a2)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i2 = new qx.ui.form.TextField;
+ with(i2)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r2.add(a2, i2);
+
+
+
+
+
+
+ var r3 = new qx.ui.layout.HorizontalBoxLayout;
+ r3.setLeft(0);
+ r3.setWidth("100%");
+ r3.setHeight("auto");
+ r3.setVerticalChildrenAlign("middle");
+ fsl.add(r3);
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i3 = new qx.ui.form.TextField;
+ with(i3)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r3.add(a3, i3);
+
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Fields_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Fields_1.html
new file mode 100644
index 0000000000..997e1b0443
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Fields_1.html
@@ -0,0 +1,179 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the setting of background color of form fields.</p>
+ </div>
+
+ <script type="text/javascript">
+ function changeBackgrounds(parent, color)
+ {
+ var children = parent.getChildren();
+ var child;
+
+ for (var i=0; i<children.length; i++)
+ {
+ child = children[i];
+
+ switch(child.classname)
+ {
+ case 'qx.ui.form.TextArea':
+ case 'qx.ui.form.TextField':
+ case 'qx.ui.form.ComboBox':
+ case 'qx.ui.form.PasswordField':
+ child.setBackgroundColor(color);
+ break;
+ };
+ };
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function textChange(e) {
+ this.debug("Text changed: " + e.getData());
+ }
+
+ var t1 = new qx.ui.form.TextField;
+ t1.setValue("textfield");
+ t1.setTop(48);
+ t1.setLeft(20);
+
+ t1.addEventListener("changeText", textChange);
+ t1.addEventListener("input", function(e) {
+ this.debug("Input: " + e.getData());
+ });
+
+ d.add(t1);
+
+
+
+
+ var t2 = new qx.ui.form.PasswordField;
+ t2.setValue("passwordfield");
+ t2.setTop(80);
+ t2.setLeft(20);
+
+ t2.addEventListener("changeText", textChange);
+
+ d.add(t2);
+
+
+ var t3 = new qx.ui.form.TextArea;
+ t3.setValue("textarea");
+ t3.setTop(110);
+ t3.setLeft(20);
+ t3.setWidth(300);
+ t3.setHeight(60);
+
+ t3.addEventListener("changeText", textChange);
+
+ d.add(t3);
+
+
+ var t4 = new qx.ui.form.TextField;
+ t4.setValue("textfield");
+ t4.setTop(200);
+ t4.setLeft(20);
+ t4.setWidth(200);
+ t4.setMaxLength(100);
+ t4.setReadOnly(true);
+
+ t4.addEventListener("changeText", textChange);
+
+ d.add(t4);
+
+
+ var t5 = new qx.ui.form.TextField;
+ t5.setValue("You are foo!");
+ t5.setTop(240);
+ t5.setLeft(20);
+
+ t5.addEventListener("changeText", textChange);
+
+ d.add(t5);
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setTop(280);
+ c1.setLeft(20);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 282, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+ var b2 = new qx.ui.form.Button("red", "icon/16/colors.png"); b2.set({left:10,top:10});
+ var b3 = new qx.ui.form.Button("green", "icon/16/colors.png"); b3.set({left:10,top:40});
+ var b4 = new qx.ui.form.Button("white", "icon/16/colors.png"); b4.set({left:10,top:70});
+
+ b2.addEventListener("click", function(e) { changeBackgrounds(d,this.getLabel()); });
+ b3.addEventListener("click", function(e) { changeBackgrounds(d,this.getLabel()); });
+ b4.addEventListener("click", function(e) { changeBackgrounds(d,this.getLabel()); });
+
+ var fs = new qx.ui.groupbox.GroupBox("BackgroundColor");
+ fs.set({left:400,top:50,width:150,height:"auto"});
+ fs.add(b2,b3,b4);
+
+
+
+ d.add(c1, b1, fs);
+
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 20, 320);
+
+
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_1.html
new file mode 100644
index 0000000000..6ec257199b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_1.html
@@ -0,0 +1,319 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.FlowLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var flow1 = new qx.ui.layout.FlowLayout;
+
+ flow1.setTop(48);
+ flow1.setLeft(20);
+ flow1.setRight(335);
+ flow1.setBottom(200);
+
+ // flow1.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ // flow1.setPadding(8);
+
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+
+ // flow1.setHorizontalChildrenAlign("right");
+ // flow1.setVerticalChildrenAlign("bottom");
+
+ // flow1.setReverseChildrenOrder(true);
+
+ d.add(flow1);
+
+
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ w1.setBackgroundColor("orange");
+ w1.setWidth(300);
+ w1.setHeight(20);
+
+
+ var w2 = new qx.ui.basic.Terminator;
+
+ w2.setBackgroundColor("blue");
+ w2.setWidth(200);
+ w2.setHeight(50);
+
+
+ var w3 = new qx.ui.basic.Terminator;
+
+ w3.setBackgroundColor("green");
+ w3.setWidth(100);
+ w3.setHeight(150);
+ w3.setMarginLeft(20);
+
+ var w4 = new qx.ui.basic.Terminator;
+
+ w4.setBackgroundColor("purple");
+ w4.setWidth("30%");
+ w4.setHeight("10%");
+
+ var w5 = new qx.ui.basic.Terminator;
+
+ w5.setBackgroundColor("yellow");
+ w5.setWidth(50);
+ w5.setHeight(80);
+
+ var w6 = new qx.ui.basic.Terminator;
+
+ w6.setBackgroundColor("red");
+ w6.setWidth(400);
+ w6.setHeight(50);
+
+ var i1 = new qx.ui.basic.Image("icon/32/clock.png");
+ var i2 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ i2.setResizeToInner(true);
+
+ var c1 = new qx.ui.basic.Label("Hello World");
+ var c2 = new qx.ui.basic.Label("<ol><li>Simple HTML List</li><li>with one</li><li>and another item</li></ol>");
+
+ var a1 = new qx.ui.form.Button("Press", "icon/16/bell.png");
+
+
+ flow1.add(w1, i1, w2, w3, a1, c2, w4, i2, w5, c1, w6);
+
+
+
+
+
+ w1.addEventListener("click", function(e) {
+ this.setMaxWidth(this.getMaxWidth() == 50 ? null : 50);
+ });
+
+ w2.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 200)
+ {
+ this.setWidth(100);
+ this.setHeight(200);
+ }
+ else
+ {
+ this.setWidth(200);
+ this.setHeight(50);
+ };
+ });
+
+ i1.addEventListener("click", function(e) {
+ this.setSource(this.getSource() == "icon/32/clock.png" ? "icon/128/clock.png" : "icon/32/clock.png");
+ });
+
+ i2.addEventListener("click", function(e)
+ {
+ this.setWidth(this.getWidth() == "auto" ? 128 : "auto");
+ this.setHeight(this.getHeight() == "auto" ? 128 : "auto");
+ });
+
+ c1.addEventListener("click", function(e) {
+ this.setHtml(this.getHtml() == "Hello World" ? "Yeah, qooxdoo is great" : "Hello World");
+ });
+
+
+
+
+ // *************************************************************
+
+ var controlBox = new qx.ui.layout.VerticalBoxLayout;
+
+ controlBox.setLeft(20);
+ controlBox.setBottom(48);
+ controlBox.setRight(335);
+ controlBox.setWidth(null);
+ controlBox.setHeight("auto");
+ controlBox.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ controlBox.setSpacing(4);
+ controlBox.setPadding(8);
+
+ d.add(controlBox);
+
+
+
+
+ var cc0 = new qx.ui.basic.Label("Spacing: ");
+ cc0.setWidth(50);
+
+ var bc0 = new qx.ui.form.Button("0x0", "icon/16/button-ok.png");
+ var bc1 = new qx.ui.form.Button("4x4", "icon/16/button-ok.png");
+ var bc2 = new qx.ui.form.Button("8x8", "icon/16/button-ok.png");
+ var bc3 = new qx.ui.form.Button("20x20", "icon/16/button-ok.png");
+ var bc4 = new qx.ui.form.Button("0x10", "icon/16/button-ok.png");
+ var bc5 = new qx.ui.form.Button("10x0", "icon/16/button-ok.png");
+
+ bc0.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(0);
+ });
+
+ bc1.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+ });
+
+ bc2.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(8);
+ flow1.setVerticalSpacing(8);
+ });
+
+ bc3.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(20);
+ flow1.setVerticalSpacing(20);
+ });
+
+ bc4.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(10);
+ });
+
+ bc5.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(10);
+ flow1.setVerticalSpacing(0);
+ });
+
+ var hc0 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc0.add(cc0, bc0, bc1, bc2, bc3, bc4, bc5);
+ hc0.setVerticalChildrenAlign("middle");
+ hc0.setHeight("auto");
+
+ controlBox.add(hc0);
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Order: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Default", "icon/16/button-ok.png");
+ var br1 = new qx.ui.form.Button("Reversed", "icon/16/button-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(false);
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(true);
+ });
+
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Align: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Top", "icon/16/button-ok.png");
+ var br1 = new qx.ui.form.Button("Bottom", "icon/16/button-ok.png");
+ var br2 = new qx.ui.form.Button("Left", "icon/16/button-ok.png");
+ var br3 = new qx.ui.form.Button("Right", "icon/16/button-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setVerticalChildrenAlign("top");
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setVerticalChildrenAlign("bottom");
+ });
+
+ br2.addEventListener("execute", function(e) {
+ flow1.setHorizontalChildrenAlign("left");
+ });
+
+ br3.addEventListener("execute", function(e) {
+ flow1.setHorizontalChildrenAlign("right");
+ });
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1, br2, br3);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var ca0 = new qx.ui.basic.Label("Children: ");
+ ca0.setWidth(50);
+
+ var ba0 = new qx.ui.form.Button("New Atom", "icon/16/button-ok.png");
+ var ba1 = new qx.ui.form.Button("New Image", "icon/16/button-ok.png");
+ var ba2 = new qx.ui.form.Button("New Atom to #3", "icon/16/button-ok.png");
+ var ba3 = new qx.ui.form.Button("New Image to #6", "icon/16/button-ok.png");
+ var ba4 = new qx.ui.form.Button("Remove First", "icon/16/button-ok.png");
+
+ ba0.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Atom("New Atom", "icon/16/services.png"));
+ });
+
+ ba1.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Image("icon/64/pipe.png"));
+ });
+
+ ba2.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Atom("New Atom", "icon/16/bell.png"), 3);
+ });
+
+ ba3.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Image("icon/64/vectorgraphics.png"), 6);
+ });
+
+ ba4.addEventListener("execute", function(e) {
+ flow1.remove(flow1.getFirstChild());
+ });
+
+ var ha1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ ha1.add(ca0, ba0, ba1, ba2, ba3, ba4);
+ ha1.setVerticalChildrenAlign("middle");
+ ha1.setHeight("auto");
+
+ controlBox.add(ha1);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_2.html
new file mode 100644
index 0000000000..ba19c87306
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_2.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.FlowLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var flow1 = new qx.ui.layout.FlowLayout;
+
+ flow1.setTop(48);
+ flow1.setLeft(20);
+ flow1.setRight(335);
+ flow1.setBottom(200);
+
+ // flow1.setBorder(qx.renderer.border.BorderPresets.getInstance().ridge);
+ // flow1.setPadding(8);
+
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+
+ // flow1.setOverflow("scrollY");
+
+ d.add(flow1);
+
+ for (var i=0, witer; i<100; i++)
+ {
+ witer = new qx.ui.basic.Terminator;
+
+ witer.setBackgroundColor("white");
+ witer.setWidth(50);
+ witer.setHeight(50);
+
+ flow1.add(witer);
+ };
+
+
+ // *************************************************************
+
+ var controlBox = new qx.ui.layout.VerticalBoxLayout;
+
+ controlBox.setLeft(20);
+ controlBox.setBottom(48);
+ controlBox.setRight(335);
+ controlBox.setWidth(null);
+ controlBox.setHeight("auto");
+ controlBox.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ controlBox.setSpacing(4);
+ controlBox.setPadding(8);
+
+ d.add(controlBox);
+
+
+
+
+ var cc0 = new qx.ui.basic.Label("Spacing: ");
+ cc0.setWidth(50);
+
+ var bc0 = new qx.ui.form.Button("0x0", "icon/16/button-ok.png");
+ var bc1 = new qx.ui.form.Button("4x4", "icon/16/button-ok.png");
+ var bc2 = new qx.ui.form.Button("8x8", "icon/16/button-ok.png");
+ var bc3 = new qx.ui.form.Button("20x20", "icon/16/button-ok.png");
+ var bc4 = new qx.ui.form.Button("0x10", "icon/16/button-ok.png");
+ var bc5 = new qx.ui.form.Button("10x0", "icon/16/button-ok.png");
+
+ bc0.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(0);
+ });
+
+ bc1.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+ });
+
+ bc2.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(8);
+ flow1.setVerticalSpacing(8);
+ });
+
+ bc3.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(20);
+ flow1.setVerticalSpacing(20);
+ });
+
+ bc4.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(10);
+ });
+
+ bc5.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(10);
+ flow1.setVerticalSpacing(0);
+ });
+
+ var hc0 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc0.add(cc0, bc0, bc1, bc2, bc3, bc4, bc5);
+ hc0.setVerticalChildrenAlign("middle");
+ hc0.setHeight("auto");
+
+ controlBox.add(hc0);
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Order: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Default", "icon/16/button-ok.png");
+ var br1 = new qx.ui.form.Button("Reversed", "icon/16/button-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(false);
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(true);
+ });
+
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var ca0 = new qx.ui.basic.Label("Children: ");
+ ca0.setWidth(50);
+
+ var ba0 = new qx.ui.form.Button("New Atom", "icon/16/button-ok.png");
+ var ba1 = new qx.ui.form.Button("New Image", "icon/16/button-ok.png");
+ var ba2 = new qx.ui.form.Button("New Atom to #3", "icon/16/button-ok.png");
+ var ba3 = new qx.ui.form.Button("New Image to #6", "icon/16/button-ok.png");
+ var ba4 = new qx.ui.form.Button("Remove First", "icon/16/button-ok.png");
+
+ ba0.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Atom("New Atom", "icon/16/services.png"));
+ });
+
+ ba1.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Image("icon/64/pipe.png"));
+ });
+
+ ba2.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Atom("New Atom", "icon/16/bell.png"), 3);
+ });
+
+ ba3.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Image("icon/64/vectorgraphics.png"), 6);
+ });
+
+ ba4.addEventListener("execute", function(e) {
+ flow1.remove(flow1.getFirstChild());
+ });
+
+ var ha1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ ha1.add(ca0, ba0, ba1, ba2, ba3, ba4);
+ ha1.setVerticalChildrenAlign("middle");
+ ha1.setHeight("auto");
+
+ controlBox.add(ha1);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_3.html
new file mode 100644
index 0000000000..99c27e13bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FlowLayout_3.html
@@ -0,0 +1,277 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.FlowLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var flow1 = new qx.ui.layout.FlowLayout;
+
+ flow1.setTop(48);
+ flow1.setLeft(20);
+ flow1.setRight(335);
+ // flow1.setWidth("auto");
+ flow1.setHeight("auto");
+
+ flow1.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ flow1.setPadding(8);
+
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+
+ // flow1.setReverseChildrenOrder(true);
+
+ d.add(flow1);
+
+
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ w1.setBackgroundColor("orange");
+ w1.setWidth(300);
+ w1.setHeight(20);
+
+
+ var w2 = new qx.ui.basic.Terminator;
+
+ w2.setBackgroundColor("blue");
+ w2.setWidth(200);
+ w2.setHeight(50);
+
+
+ var w3 = new qx.ui.basic.Terminator;
+
+ w3.setBackgroundColor("green");
+ w3.setWidth(100);
+ w3.setHeight(150);
+ w3.setMarginLeft(20);
+
+ var w4 = new qx.ui.basic.Terminator;
+
+ w4.setBackgroundColor("purple");
+ w4.setWidth(100);
+ w4.setHeight(20);
+
+ var w5 = new qx.ui.basic.Terminator;
+
+ w5.setBackgroundColor("yellow");
+ w5.setWidth(50);
+ w5.setHeight(80);
+
+ var w6 = new qx.ui.basic.Terminator;
+
+ w6.setBackgroundColor("red");
+ w6.setWidth(400);
+ w6.setHeight(50);
+
+ var i1 = new qx.ui.basic.Image("icon/32/clock.png");
+ var i2 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ i2.setResizeToInner(true);
+
+ var c1 = new qx.ui.basic.Label("Hello World");
+ var c2 = new qx.ui.basic.Label("<ol><li>Simple HTML List</li><li>with one</li><li>and another item</li></ol>");
+
+ var a1 = new qx.ui.form.Button("Press", "icon/16/bell.png");
+
+
+ flow1.add(w1, i1, w2, w3, a1, c2, w4, i2, w5, c1, w6);
+
+
+
+
+
+ w1.addEventListener("click", function(e) {
+ this.setMaxWidth(this.getMaxWidth() == 50 ? null : 50);
+ });
+
+ w2.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 200)
+ {
+ this.setWidth(100);
+ this.setHeight(200);
+ }
+ else
+ {
+ this.setWidth(200);
+ this.setHeight(50);
+ };
+ });
+
+ i1.addEventListener("click", function(e) {
+ this.setSource(this.getSource() == "icon/32/clock.png" ? "icon/128/clock.png" : "icon/32/clock.png");
+ });
+
+ i2.addEventListener("click", function(e)
+ {
+ this.setWidth(this.getWidth() == "auto" ? 128 : "auto");
+ this.setHeight(this.getHeight() == "auto" ? 128 : "auto");
+ });
+
+ c1.addEventListener("click", function(e) {
+ this.setHtml(this.getHtml() == "Hello World" ? "Yeah, qooxdoo is great" : "Hello World");
+ });
+
+
+
+
+ // *************************************************************
+
+ var controlBox = new qx.ui.layout.VerticalBoxLayout;
+
+ controlBox.setLeft(20);
+ controlBox.setBottom(48);
+ controlBox.setRight(335);
+ controlBox.setHeight("auto");
+ controlBox.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ controlBox.setSpacing(4);
+ controlBox.setPadding(8);
+
+ d.add(controlBox);
+
+
+
+
+ var cc0 = new qx.ui.basic.Label("Spacing: ");
+ cc0.setWidth(50);
+
+ var bc0 = new qx.ui.form.Button("0x0", "icon/16/button-ok.png");
+ var bc1 = new qx.ui.form.Button("4x4", "icon/16/button-ok.png");
+ var bc2 = new qx.ui.form.Button("8x8", "icon/16/button-ok.png");
+ var bc3 = new qx.ui.form.Button("20x20", "icon/16/button-ok.png");
+ var bc4 = new qx.ui.form.Button("0x10", "icon/16/button-ok.png");
+ var bc5 = new qx.ui.form.Button("10x0", "icon/16/button-ok.png");
+
+ bc0.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(0);
+ });
+
+ bc1.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+ });
+
+ bc2.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(8);
+ flow1.setVerticalSpacing(8);
+ });
+
+ bc3.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(20);
+ flow1.setVerticalSpacing(20);
+ });
+
+ bc4.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(10);
+ });
+
+ bc5.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(10);
+ flow1.setVerticalSpacing(0);
+ });
+
+ var hc0 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc0.add(cc0, bc0, bc1, bc2, bc3, bc4, bc5);
+ hc0.setVerticalChildrenAlign("middle");
+ hc0.setHeight("auto");
+
+ controlBox.add(hc0);
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Order: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Default", "icon/16/button-ok.png");
+ var br1 = new qx.ui.form.Button("Reversed", "icon/16/button-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(false);
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(true);
+ });
+
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var ca0 = new qx.ui.basic.Label("Children: ");
+ ca0.setWidth(50);
+
+ var ba0 = new qx.ui.form.Button("New Atom", "icon/16/button-ok.png");
+ var ba1 = new qx.ui.form.Button("New Image", "icon/16/button-ok.png");
+ var ba2 = new qx.ui.form.Button("New Atom to #3", "icon/16/button-ok.png");
+ var ba3 = new qx.ui.form.Button("New Image to #6", "icon/16/button-ok.png");
+ var ba4 = new qx.ui.form.Button("Remove First", "icon/16/button-ok.png");
+
+ ba0.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Atom("New Atom", "icon/16/services.png"));
+ });
+
+ ba1.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Image("icon/64/pipe.png"));
+ });
+
+ ba2.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Atom("New Atom", "icon/16/bell.png"), 3);
+ });
+
+ ba3.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Image("icon/64/vectorgraphics.png"), 6);
+ });
+
+ ba4.addEventListener("click", function(e) {
+ flow1.remove(flow1.getFirstChild());
+ });
+
+ var ha1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ ha1.add(ca0, ba0, ba1, ba2, ba3, ba4);
+ ha1.setVerticalChildrenAlign("middle");
+ ha1.setHeight("auto");
+
+ controlBox.add(ha1);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FocusManager_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FocusManager_1.html
new file mode 100644
index 0000000000..d25b31195c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FocusManager_1.html
@@ -0,0 +1,108 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for some of the most used properties of qx.ui.basic.Terminator (coordinates, dimensions, backgroundColor, opacity, ...).</p>
+ <p>Also here are the first test of some widgets which extend qx.ui.basic.Terminator: qx.ui.form.TextField and qx.ui.form.PasswordField. These extended
+ widgets also interacts like the basic QxTerminators with the qx.event.handler.FocusHandler.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Terminator;
+ d.add(c1);
+
+ c1.setTabIndex(1);
+ c1.setHeight(60);
+ c1.setWidth(60);
+ c1.setTop(48);
+ c1.setLeft(20);
+ c1.setBackgroundColor("blue");
+ c1.setOpacity(0.5);
+
+ c1.addEventListener("keydown", function(e){
+ if (e.getKeyIdentifier() != "Space") {
+ return;
+ };
+
+ this.setBackgroundColor("rgb(" + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + ")");
+ });
+
+
+ var c2 = new qx.ui.basic.Terminator;
+ d.add(c2);
+
+ c2.setTabIndex(2);
+ c2.setHeight(60);
+ c2.setWidth(60);
+ c2.setTop(68);
+ c2.setLeft(40);
+ c2.setBackgroundColor("orange");
+ c2.setOpacity(0.5);
+
+ c2.addEventListener("keydown", function(e){
+ if (e.getKeyIdentifier() != "Space") {
+ return;
+ };
+
+ this.setBackgroundColor("rgb(" + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + ")");
+ });
+
+
+ var t1 = new qx.ui.form.TextField;
+ t1.setValue("textfield");
+ t1.setTop(140);
+ t1.setLeft(20);
+ t1.setTabIndex(3);
+
+ d.add(t1);
+
+
+
+ var t2 = new qx.ui.form.PasswordField;
+ t2.setValue("passwordfield");
+ t2.setTop(170);
+ t2.setLeft(20);
+ t2.setTabIndex(4);
+
+ d.add(t2);
+
+
+ var t3 = new qx.ui.form.TextArea;
+ t3.setValue("textarea");
+ t3.setTop(200);
+ t3.setLeft(20);
+ t3.setWidth(300);
+ t3.setHeight(60);
+ t3.setTabIndex(5);
+
+ d.add(t3);
+
+
+ var t4 = new qx.ui.form.TextField;
+ t4.setValue("textfield");
+ t4.setTop(300);
+ t4.setLeft(20);
+ t4.setWidth(200);
+ t4.setMaxLength(100);
+ t4.setReadOnly(true);
+ t4.setTabIndex(6);
+
+ d.add(t4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Font_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Font_1.html
new file mode 100644
index 0000000000..42e7cbc13a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Font_1.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.renderer.font.Font object for QxLabels inside QxAtoms.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var f1 = new qx.ui.layout.CanvasLayout;
+
+ var a1 = new qx.ui.basic.Atom("Hello World");
+
+ var b1 = new qx.ui.form.Button("Serif, 16px");
+ var b2 = new qx.ui.form.Button("Serif, 24px");
+ var b3 = new qx.ui.form.Button("Sans Serif, 16px");
+ var b4 = new qx.ui.form.Button("Sans Serif, 24px");
+
+ b1.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("16px serif");
+ });
+
+ b2.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("24px serif");
+ });
+
+ b3.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("16px sans-serif");
+ });
+
+ b4.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("24px sans-serif");
+ });
+
+ f1.setDimension("auto", "auto");
+ f1.setLocation(20, 48);
+ f1.setBorder("1px solid red");
+
+ a1.setLocation(0, 0);
+ a1.getLabelObject().setFont("16px serif");
+
+ b1.setLocation(200, 48);
+ b2.setLocation(200, 78);
+ b3.setLocation(200, 108);
+ b4.setLocation(200, 138);
+
+ f1.add(a1);
+ qx.ui.core.ClientDocument.getInstance().add(f1, b1, b2, b3, b4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FormUtils_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FormUtils_1.html
new file mode 100644
index 0000000000..2e7638d8f8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/FormUtils_1.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing QxFormUtils</p>
+ </div>
+
+ <form id="mainform" style="position: absolute; left:300px; top: 48px">
+ <fieldset>
+ <legend>Basics</legend>
+ <input type="text" name="givenname" value="Given Name"/>
+ <br/>
+ <input type="text" name="name" value="Name"/>
+ <br/>
+ <input type="password" name="password" value="Password"/>
+ </fieldset>
+ <br/>
+ <input type="checkbox" checked="checked" name="human" id="human" value="true"/>
+ <label for="human">Human</label>
+ <br/>
+ <input type="checkbox" name="old" id="old" value="true"/>
+ <label for="old">Old</label>
+ <br/>
+ <input type="radio" name="gender" checked="checked" value="male" id="male"/>
+ <label for="male">Male</label">
+ <br/>
+ <input type="radio" name="gender" value="female" id="female"/>
+ <label for="female">Female</label">
+ <br/>
+ <label for="color">Favorite Color (Single)</label>
+ <br/>
+ <select name="color" id="color">
+ <option value="red">Red</option>
+ <option value="blue">Blue</option>
+ <option value="green">Green</option>
+ <option value="yellow">Yellow</option>
+ <option value="black">Black</option>
+ <option value="white">White</option>
+ </select>
+ <br/>
+ <label for="pets">Your Pets (Multiple)</label>
+ <br/>
+ <select name="pets" id="pets" multiple="multiple" size="3">
+ <option value="dog">Dog</option>
+ <option value="cat">Cat</option>
+ <option value="bird">Bird</option>
+ <option value="rabbit">Rabbit</option>
+ <option value="hamster">Hamster</option>
+ </select>
+ <br/>
+ <input type="submit" value="Send Data"/>
+ </form>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var btn = new qx.ui.form.Button("Encode");
+ btn.setLocation(20, 48);
+ qx.ui.core.ClientDocument.getInstance().add(btn);
+
+ var area = new qx.ui.form.TextArea;
+ area.setLocation(20, 100);
+ area.setDimension(200, 100);
+ qx.ui.core.ClientDocument.getInstance().add(area);
+
+ QxFormUtils.bind(document.getElementById("mainform"), function() {
+ alert("Submitting Form Replacement...");
+ });
+
+ btn.addEventListener("execute", function() {
+ area.setValue(QxFormUtils.encodeForm(document.getElementById("mainform")));
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_2.html
new file mode 100644
index 0000000000..35cf671038
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_2.html
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test file for qx.ui.embed.Gallery</p>
+ </div>
+
+ <style type="text/css">
+ .qx_ui_embed_Gallery .galleryFrame{
+ padding: 2px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ border: 1px solid #444;
+ background: #fff;
+ margin: 2px;
+ float: left;
+ overflow: hidden;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 10px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ background: #eee;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: default;
+ overflow: hidden;
+ white-space: nowrap;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle{
+ border-bottom: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ border-top: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ background: #DCE8F6;
+ border: 1px solid #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ background: #9BBFE7;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle{
+ border-bottom: 1px dotted #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ border-top: 1px dotted #2760A1;
+ }
+
+
+ /* customize */
+
+ .qx_ui_embed_Gallery{
+ background: #fff;
+ padding: 5px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ margin: 5px;
+ border: 1px solid #DCDFE8;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ border: 1px solid #5E6474;
+ background: #DADDE4;
+ }
+ </style>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var galleryList = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryList.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome.png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment",
+ id : "7686191121780974-10682",
+ src : qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/tv.png")
+ });
+ };
+
+ var gallery = new qx.ui.embed.Gallery(galleryList);
+
+ gallery.setLeft(20);
+ gallery.setRight(335);
+ gallery.setTop(48);
+ gallery.setBottom(48);
+ gallery.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ gallery.setShowTitle(false);
+ gallery.setShowComment(false);
+ gallery.setDecorHeight(0);
+
+ qx.ui.core.ClientDocument.getInstance().add(gallery);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_3.html
new file mode 100644
index 0000000000..4da5171844
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Gallery_3.html
@@ -0,0 +1,178 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test file for qx.ui.embed.Gallery, now with QxToolTips assigned.</p>
+ <button onclick="updateAdd()">Update Add</button>
+ </div>
+
+ <style type="text/css">
+ .qx_ui_embed_Gallery .galleryFrame{
+ padding: 2px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ border: 1px solid #444;
+ background: #fff;
+ margin: 2px;
+ float: left;
+ overflow: hidden;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 10px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ background: #eee;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: default;
+ overflow: hidden;
+ white-space: nowrap;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle{
+ border-bottom: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ border-top: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ background: #DCE8F6;
+ border: 1px solid #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ background: #9BBFE7;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle{
+ border-bottom: 1px dotted #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ border-top: 1px dotted #2760A1;
+ }
+
+
+ /* customize */
+
+ .qx_ui_embed_Gallery{
+ background: #fff;
+ padding: 5px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ margin: 5px;
+ border: 1px solid #DCDFE8;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ border: 1px solid #5E6474;
+ background: #DADDE4;
+ }
+ </style>
+
+ <script type="text/javascript">
+ var updateAdd;
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var galleryList = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryList.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome" + i + ".png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment: " + i,
+ id : "7686191121780974-10682-" + i,
+ src : qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/paint.png")
+ });
+ };
+
+ var gallery = new qx.ui.embed.Gallery(galleryList);
+
+ gallery.setLeft(20);
+ gallery.setRight(335);
+ gallery.setTop(48);
+ gallery.setBottom(48);
+ gallery.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ gallery.setShowTitle(false);
+ gallery.setShowComment(false);
+ gallery.setDecorHeight(0);
+
+ qx.ui.core.ClientDocument.getInstance().add(gallery);
+
+
+
+ var toolTip = new qx.ui.popup.ToolTip("Photo Details", "icon/32/colors.png");
+ gallery.setToolTip(toolTip);
+
+ gallery.addEventListener("beforeToolTipAppear", function(e)
+ {
+ var vNode = e.getData();
+ var vEntry = this.getEntryByNode(vNode);
+
+ toolTip.getAtom().setLabel("<strong>" + vEntry.title + "</strong><br/>" + vEntry.comment);
+
+ this.setToolTip(toolTip);
+ });
+
+
+ updateAdd = function()
+ {
+ var galleryListUpdated = qx.lang.Array.copy(gallery.getList());
+
+ for (var i=galleryListUpdated.length, j=i+10; i<j; i++)
+ {
+ galleryListUpdated.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome" + i + ".png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment: " + i,
+ id : "7686191121780974-10682-" + i,
+ src : qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/colors.png")
+ });
+ };
+
+ gallery.addFromUpdatedList(galleryListUpdated);
+ };
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Generate_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Generate_1.html
new file mode 100644
index 0000000000..6541a4beb7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Generate_1.html
@@ -0,0 +1,267 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.basic.Atom is the parent class for buttons, menu entries, icons, checkboxes. While you can do,
+ you usually don't have to instantiate qx.ui.basic.Atom directly.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.lang.Array.merge = function(firstArray, secondArray)
+ {
+ var combinedArray = [], currentValue, indexInSecond;
+
+ for (var i=0, l=firstArray.length; i<l; i++) {
+ (indexInSecond = secondArray.indexOf(currentValue = firstArray[i])) == -1 ? combinedArray.push(currentValue) : qx.lang.Array.append(combinedArray, secondArray.splice(0, indexInSecond+1));
+ };
+
+ return combinedArray.concat(secondArray);
+ };
+
+ var a = [ "before3Mnu", "fileMnu", "editMnu", "saveMnu", "exitMenu" ];
+ var b = [ "before1Mnu", "before2Mnu", "fileMnu", "fooMnu", "editMnu", "saveMnu", "after1Mnu" ];
+
+ //alert(qx.lang.Array.merge(a, b));
+
+ var comp1 =
+ {
+ bars :
+ [
+ {
+ id : "menubar",
+ groups : [ "mainMp", "helpMp" ]
+ },
+
+ {
+ id : "toolbar",
+ groups : [ "openTb", "editTb" ]
+ }
+ ],
+
+ groups :
+ {
+ // Menu Bar Parts
+ "mainMp" : { commands : [ "fileBtn", "editBtn", "viewBtn" ] },
+ "helpMp" : { commands : [ "helpBtn" ] },
+
+ // Tool Bar Parts
+ "openTb" : { commands : [ "openBtn", "openRecentlyBtn" ] },
+ "editTb" : { commands : [ "cutBtn", "copyBtn", "pasteBtn" ] },
+
+ // Menu Content
+ "openMn" : { commands : [ "openBtn", "openWithBtn", "openRecentlyBtn" ] },
+ "saveMn" : { commands : [ "saveBtn", "saveAsBtn" ] },
+ "closeMn" : { commands : [ "closeBtn" ] },
+ "exitMn" : { commands : [ "exitBtn" ] },
+ "undoMn" : { commands : [ "undoBtn", "redoBtn" ] },
+ "editMn" : { commands : [ "cutBtn", "copyBtn", "pasteBtn", "deleteBtn", "clipboardBtn" ] },
+ "searchMn" : { commands : [ "searchBtn", "replaceBtn", "continueSearchBtn" ] },
+
+ "barsMn" : { commands : [] },
+ "fontMn" : { commands : [] },
+
+ "aboutMn" : { commands : [ "aboutBtn" ] },
+ "recentDocsMn" : { commands : [ "doc1Btn", "doc2Btn", "doc3Btn" ] }
+ },
+
+ menus :
+ {
+ "fileMnu" : { groups : [ "openMn", "saveMn", "closeMn", "exitMn" ] },
+ "editMnu" : { groups : [ "undoMn", "editMn", "searchMn" ] },
+ "viewMnu" : { groups : [ "barsMn", "fontMn" ] },
+ "helpMnu" : { groups : [ "aboutMn" ] },
+ "openRecentlyMnu" : { groups : [ "recentDocsMn" ] }
+ },
+
+ commands :
+ {
+ // Menu-Buttons
+ "fileBtn" : { title : "Datei", menu : "fileMnu" },
+ "editBtn" : { title : "Bearbeiten", menu : "editMnu" },
+ "viewBtn" : { title : "Ansicht", menu : "viewMnu" },
+ "helpBtn" : { title : "Hilfe", menu : "helpMnu" },
+
+ // Execute-Buttons: Open
+ "openBtn" : { title : "Öffnen", execute : "open" },
+ "openWithBtn" : { title : "Öffnen mit...", execute : "openWith" },
+ "openRecentlyBtn" : { title : "Letzte öffnen...", menu : "openRecentlyMnu" },
+
+ "saveBtn" : { title : "Speichern", execute : "save" },
+ "saveAsBtn" : { title : "Speichern als...", execute : "saveAs" },
+ "closeBtn" : { title : "Schließen", execute : "close" },
+ "exitBtn" : { title : "Beenden", execute : "exit" },
+
+ "undoBtn" : { title : "Rückgängig", execute : "undo" },
+ "redoBtn" : { title : "Wiederherstellen", execute : "redo" },
+ "deleteBtn" : { title : "Löschen", execute : "delete" },
+ "clipboardBtn" : { title : "Zwischenablage", execute : "clipboard" },
+
+ // Execute-Buttons: Search
+ "searchBtn" : { title : "Suchen", execute : "search" },
+ "replaceBtn" : { title : "Ersetzen", execute : "replace" },
+ "continueSearchBtn" : { title : "Weitersuchen", execute : "continuesearch" },
+
+ // Execute-Buttons: Edit
+ "cutBtn" : { title : "Ausschneiden", execute : "cut" },
+ "copyBtn" : { title : "Kopieren", execute : "copy" },
+ "pasteBtn" : { title : "Einfügen", execute : "paste" },
+
+ // Execute-Buttons: Info
+ "aboutBtn" : { title : "Ãœber", execute : "about" },
+
+ "doc1Btn" : { title : "Dokument 1", execute : "openDoc1" },
+ "doc2Btn" : { title : "Dokument 2", execute : "openDoc2" },
+ "doc3Btn" : { title : "Dokument 3", execute : "openDoc3" }
+ }
+ };
+
+ var comp2 =
+ {
+ };
+
+
+
+
+
+
+ qx.OO.defineClass("qx.Generator", qx.core.Target,
+ function(comp)
+ {
+ this._comp = comp;
+
+ });
+
+ qx.Proto._generateMenu = function(id)
+ {
+ var menu = new qx.ui.menu.Menu;
+
+ var menuData = this._comp.menus[id];
+
+ if (!menuData) {
+ alert("Missing menu: " + id);
+ };
+
+ for (var i=0; i<menuData.groups.length; i++)
+ {
+ var groupcontent = this._comp.groups[menuData.groups[i]];
+
+ if (!groupcontent) {
+ alert("Missing menu: " + menuData.groups[i]);
+ };
+
+ var groupcommandlist = groupcontent.commands;
+
+ for (var j=0; j<groupcommandlist.length; j++)
+ {
+ var commandData = this._comp.commands[groupcommandlist[j]];
+
+ if (!commandData) {
+ alert("Missing command: " + groupcommandlist[j]);
+ };
+
+ if (commandData.menu)
+ {
+ var subMenu = this._generateMenu(commandData.menu);
+ var menuButton = new qx.ui.menu.Button(commandData.title, null, null, subMenu);
+
+ subMenu.addToDocument();
+ }
+ else
+ {
+ var menuButton = new qx.ui.menu.Button(commandData.title);
+ };
+
+ menu.add(menuButton);
+ };
+
+ if (i < menuData.groups.length-1) {
+ menu.add(new qx.ui.menu.Separator);
+ };
+ };
+
+ return menu;
+ };
+
+ qx.Proto.getWidget = function()
+ {
+ var can = new qx.ui.layout.CanvasLayout;
+ can.auto();
+ can.setLocation(100, 100);
+ can.setBorder("2px solid red");
+
+ for (var i=0; i<this._comp.bars.length; i++)
+ {
+ var tb = new qx.ui.toolbar.ToolBar;
+ tb.setLocation(0, (i * 50));
+ tb.setRight(0);
+ can.add(tb);
+
+
+
+ var bardata = this._comp.bars[i];
+ var groupdata = bardata.groups;
+
+ for(var j=0; j<groupdata.length; j++)
+ {
+ var part = new qx.ui.toolbar.Part;
+
+ var groupcontent = this._comp.groups[groupdata[j]];
+ var groupcommandlist = groupcontent.commands;
+
+ if (!groupcommandlist)
+ {
+ alert("Missing commands in: " + groupcontent);
+ };
+
+ for (var k=0; k<groupcommandlist.length; k++)
+ {
+ var commanddata = this._comp.commands[groupcommandlist[k]];
+
+ if (commanddata)
+ {
+ if (typeof commanddata.menu != "undefined")
+ {
+ menu = this._generateMenu(commanddata.menu);
+ menu.addToDocument();
+
+ btn = new qx.ui.toolbar.MenuButton(commanddata.title, menu);
+ }
+ else
+ {
+ btn = new qx.ui.toolbar.Button(commanddata.title);
+ };
+
+ part.add(btn);
+ }
+ else
+ {
+ alert("Missing: " + groupcommandlist[k]);
+ };
+ };
+
+ tb.add(part);
+ };
+ };
+
+ return can;
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var c1 = new qx.Generator(comp1);
+ qx.ui.core.ClientDocument.getInstance().add(c1.getWidget());
+ });
+
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_1.html
new file mode 100644
index 0000000000..c0a13481b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_1.html
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension(462, 128);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_10.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_10.html
new file mode 100644
index 0000000000..b32dbc8dba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_10.html
@@ -0,0 +1,94 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Layout Manager: qx.ui.layout.GridLayout. Example image borrowed from <a href="http://winfx.msdn.microsoft.com/library/en-us/wcp_conceptual/winfx/layout/overviews/grid_ovw.asp">Microsoft's XAML Documentation</a>.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var img = new qx.ui.basic.Image("./image/grid_dialog_box.png");
+
+ img.setLocation(20, 48);
+
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(46, 300);
+ gl.auto();
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(4);
+
+ gl.setRowCount(4);
+ gl.setColumnCount(5);
+
+ gl.setHorizontalSpacing(4);
+ gl.setVerticalSpacing(4);
+
+ gl.setColumnWidth(0, 40);
+ gl.setColumnWidth(1, 35);
+ gl.setColumnWidth(2, 75);
+ gl.setColumnWidth(3, 75);
+ gl.setColumnWidth(4, 75);
+
+ gl.setRowHeight(0, 30);
+ gl.setRowHeight(1, 30);
+ gl.setRowHeight(2, 15);
+ gl.setRowHeight(3, 25);
+
+ gl.mergeCells(1, 0, 4, 1);
+ gl.mergeCells(1, 1, 4, 1);
+
+ gl.setRowVerticalAlignment(1, "middle");
+
+ qx.ui.core.ClientDocument.getInstance().add(img, gl);
+
+
+
+
+
+ var i1 = new qx.ui.basic.Image("icon/32/appearance.png");
+ gl.add(i1, 0, 0);
+
+ var t1 = new qx.ui.basic.Label("Open:");
+ t1.setMnemonic("O");
+ t1.setSelectable(false);
+ gl.add(t1, 0, 1);
+
+ var b1 = new qx.ui.form.Button("OK");
+ b1.setAllowStretchX(true);
+ gl.add(b1, 2, 3);
+
+ var b2 = new qx.ui.form.Button("Cancel");
+ b2.setAllowStretchX(true);
+ gl.add(b2, 3, 3);
+
+ var b3 = new qx.ui.form.Button("Browse...");
+ b3.setAllowStretchX(true);
+ b3.getLabelObject().setMnemonic("B");
+ gl.add(b3, 4, 3);
+
+ var t2 = new qx.ui.basic.Label("Type in the name of a program, folder, document or<br/> Internet Resource and Windows will open it for you.");
+ t2.setSelectable(false);
+ gl.add(t2, 1, 0);
+
+ var c1 = new qx.ui.form.ComboBox();
+ c1.setEditable(true);
+ c1.setValue("d:\\local\\pictures");
+ c1.setWidth(null);
+ gl.add(c1, 1, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_11.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_11.html
new file mode 100644
index 0000000000..efdbbe9357
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_11.html
@@ -0,0 +1,124 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Layout Manager: qx.ui.layout.GridLayout. Example image borrowed from <a href="http://winfx.msdn.microsoft.com/library/en-us/wcp_conceptual/winfx/layout/overviews/grid_ovw.asp">Microsoft's XAML Documentation</a>.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var img = new qx.ui.basic.Image("./image/grid_dialog_box.png");
+
+ img.setLocation(20, 48);
+
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(46, 300);
+ gl.auto();
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(4);
+
+ gl.setRowCount(4);
+ gl.setColumnCount(5);
+
+ gl.setHorizontalSpacing(4);
+ gl.setVerticalSpacing(4);
+
+ gl.setColumnWidth(0, 40);
+ gl.setColumnWidth(1, 35);
+ gl.setColumnWidth(2, 75);
+ gl.setColumnWidth(3, 75);
+ gl.setColumnWidth(4, 75);
+
+ gl.setRowHeight(0, 30);
+ gl.setRowHeight(1, 30);
+ gl.setRowHeight(2, 15);
+ gl.setRowHeight(3, 25);
+
+ gl.mergeCells(1, 0, 4, 1);
+ gl.mergeCells(1, 1, 4, 1);
+
+ gl.setRowVerticalAlignment(1, "middle");
+
+ qx.ui.core.ClientDocument.getInstance().add(img, gl);
+
+
+
+
+
+ var i1 = new qx.ui.basic.Image("icon/32/appearance.png");
+ gl.add(i1, 0, 0);
+
+ var t1 = new qx.ui.basic.Label("Open:");
+ t1.setMnemonic("O");
+ t1.setSelectable(false);
+ gl.add(t1, 0, 1);
+
+ var b1 = new qx.ui.form.Button("OK");
+ b1.setAllowStretchX(true);
+ gl.add(b1, 2, 3);
+
+ var b2 = new qx.ui.form.Button("Cancel");
+ b2.setAllowStretchX(true);
+ gl.add(b2, 3, 3);
+
+ var b3 = new qx.ui.form.Button("Browse...");
+ b3.setAllowStretchX(true);
+ b3.getLabelObject().setMnemonic("B");
+ gl.add(b3, 4, 3);
+
+ var t2 = new qx.ui.basic.Label("Type in the name of a program, folder, document or Internet Resource and Windows will open it for you.");
+ t2.setSelectable(false);
+ t2.setStyleProperty("whiteSpace", "normal");
+ gl.add(t2, 1, 0);
+
+ var c1 = new qx.ui.form.ComboBox();
+ c1.setEditable(true);
+ c1.setValue("d:\\local\\pictures");
+ c1.setWidth(null);
+ gl.add(c1, 1, 1);
+
+
+
+
+
+
+
+
+
+ var c1 = new qx.ui.form.Button("Make bigger");
+ var c2 = new qx.ui.form.Button("Make smaller");
+
+ c1.setLocation(500, 300);
+ c2.setLocation(500, 330);
+
+ qx.ui.core.ClientDocument.getInstance().add(c1, c2);
+
+ c1.addEventListener("execute", function(e) {
+ gl.setColumnWidth(2, 100);
+ gl.setColumnWidth(3, 100);
+ gl.setColumnWidth(4, 100);
+ });
+
+ c2.addEventListener("execute", function(e) {
+ gl.setColumnWidth(2, 75);
+ gl.setColumnWidth(3, 75);
+ gl.setColumnWidth(4, 75);
+ });
+
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_2.html
new file mode 100644
index 0000000000..f2d375858f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_2.html
@@ -0,0 +1,88 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ <p>Added some own sizes and use more complex children.</p>
+ <p>The olive child has a width of 50% (which is related to the cell size here) and a horizontal alignment 'center'.</p>
+ <p>The navi child has a height of 20 pixel and is aligned to the bottom of the cell.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension(462, 128);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.form.Button("Hello World", "icon/22/colors.png");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ term3.setWidth(100);
+ term3.setHeight(100);
+ term3.setBorder("1px solid black");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ term6.setWidth("50%");
+ term6.setHorizontalAlign("center");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ term8.setHeight(20);
+ term8.setVerticalAlign("bottom");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_3.html
new file mode 100644
index 0000000000..240816e7a3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_3.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ <p>Using auto dimensions for the grid.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+ gl.setHorizontalSpacing(4);
+ gl.setVerticalSpacing(8);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_4.html
new file mode 100644
index 0000000000..230e00f404
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_4.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ <p>Using percents for children.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setRight(335);
+ gl.setBottom(48);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, "10%");
+ gl.setColumnWidth(1, "40%");
+ gl.setColumnWidth(2, "30%");
+ gl.setColumnWidth(3, "20%");
+
+ gl.setRowHeight(0, "70%");
+ gl.setRowHeight(1, "30%");
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_5.html
new file mode 100644
index 0000000000..d2a76894f1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_5.html
@@ -0,0 +1,85 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A simple form using qx.ui.layout.GridLayout</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(8);
+ gl.setColumnCount(2);
+ gl.setRowCount(7);
+ gl.setVerticalSpacing(4);
+ gl.setHorizontalSpacing(6);
+
+ gl.setColumnWidth(0, 70);
+ gl.setColumnWidth(1, 180);
+
+ gl.setColumnHorizontalAlignment(0, "right");
+ gl.setColumnVerticalAlignment(0, "middle");
+
+ gl.setRowHeight(0, 20);
+ gl.setRowHeight(1, 20);
+ gl.setRowHeight(2, 20);
+ gl.setRowHeight(3, 20);
+ gl.setRowHeight(4, 20);
+ gl.setRowHeight(5, 70);
+ gl.setRowHeight(6, 20);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ var label1 = new qx.ui.basic.Label("Given Name");
+ var label2 = new qx.ui.basic.Label("Name");
+ var label3 = new qx.ui.basic.Label("City");
+ var label4 = new qx.ui.basic.Label("Country");
+ var label5 = new qx.ui.basic.Label("E-Mail");
+ var label6 = new qx.ui.basic.Label("Comment");
+ label6.setVerticalAlign("top");
+
+ label6.setVerticalAlign("top");
+
+ var input1 = new qx.ui.form.TextField;
+ var input2 = new qx.ui.form.TextField;
+ var input3 = new qx.ui.form.TextField;
+ var input4 = new qx.ui.form.TextField;
+ var input5 = new qx.ui.form.TextField;
+ var input6 = new qx.ui.form.TextArea;
+ var input7 = new qx.ui.form.Button("Submit", "icon/16/apply.png");
+
+ input7.setHorizontalAlign("right");
+
+ gl.add(label1, 0, 0);
+ gl.add(input1, 1, 0);
+ gl.add(label2, 0, 1);
+ gl.add(input2, 1, 1);
+ gl.add(label3, 0, 2);
+ gl.add(input3, 1, 2);
+ gl.add(label4, 0, 3);
+ gl.add(input4, 1, 3);
+ gl.add(label5, 0, 4);
+ gl.add(input5, 1, 4);
+ gl.add(label6, 0, 5);
+ gl.add(input6, 1, 5);
+ gl.add(input7, 1, 6);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_6.html
new file mode 100644
index 0000000000..7f95173f0f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_6.html
@@ -0,0 +1,109 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A simple form using qx.ui.layout.GridLayout</p>
+ <p>Using padding instead of spacing. Spacing is between the cells, padding is inside the cells. The same layout using padding is always bigger because the first and last cells are also affected with the padding to the edge.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(8);
+ gl.setColumnCount(2);
+ gl.setRowCount(7);
+
+ gl.setColumnWidth(0, 76);
+ gl.setColumnWidth(1, 186);
+
+ gl.setColumnHorizontalAlignment(0, "right");
+ gl.setColumnVerticalAlignment(0, "middle");
+
+ gl.setRowHeight(0, 24);
+ gl.setRowHeight(1, 24);
+ gl.setRowHeight(2, 24);
+ gl.setRowHeight(3, 24);
+ gl.setRowHeight(4, 24);
+ gl.setRowHeight(5, 74);
+ gl.setRowHeight(6, 24);
+
+ gl.setCellPaddingTop(2);
+ gl.setCellPaddingRight(3);
+ gl.setCellPaddingBottom(2);
+ gl.setCellPaddingLeft(3);
+
+ /*
+
+ // the same like the above, but more local
+ gl.setColumnPaddingTop(0, 2);
+ gl.setColumnPaddingRight(0, 3);
+ gl.setColumnPaddingBottom(0, 2);
+ gl.setColumnPaddingLeft(0, 3);
+
+ gl.setColumnPaddingTop(1, 2);
+ gl.setColumnPaddingRight(1, 3);
+ gl.setColumnPaddingBottom(1, 2);
+ gl.setColumnPaddingLeft(1, 3);
+
+ */
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ var label1 = new qx.ui.basic.Label("Given Name");
+ var label2 = new qx.ui.basic.Label("Name");
+ var label3 = new qx.ui.basic.Label("City");
+ var label4 = new qx.ui.basic.Label("Country");
+ var label5 = new qx.ui.basic.Label("E-Mail");
+ var label6 = new qx.ui.basic.Label("Comment");
+
+ label6.setVerticalAlign("top");
+
+ var input1 = new qx.ui.form.TextField;
+ var input2 = new qx.ui.form.TextField;
+ var input3 = new qx.ui.form.ComboBox;
+ var input4 = new qx.ui.form.TextField;
+ var input5 = new qx.ui.form.TextField;
+ var input6 = new qx.ui.form.TextArea;
+ var input7 = new qx.ui.form.Button("Submit", "icon/16/apply.png");
+
+ input3.add(new qx.ui.form.ListItem("New York"));
+ input3.add(new qx.ui.form.ListItem("Paris"));
+ input3.add(new qx.ui.form.ListItem("Sydney"));
+ input3.add(new qx.ui.form.ListItem("Berlin"));
+ input3.add(new qx.ui.form.ListItem("Washington"));
+
+ input7.setHorizontalAlign("right");
+
+ gl.add(label1, 0, 0);
+ gl.add(input1, 1, 0);
+ gl.add(label2, 0, 1);
+ gl.add(input2, 1, 1);
+ gl.add(label3, 0, 2);
+ gl.add(input3, 1, 2);
+ gl.add(label4, 0, 3);
+ gl.add(input4, 1, 3);
+ gl.add(label5, 0, 4);
+ gl.add(input5, 1, 4);
+ gl.add(label6, 0, 5);
+ gl.add(input6, 1, 5);
+ gl.add(input7, 1, 6);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_7.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_7.html
new file mode 100644
index 0000000000..6354544257
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_7.html
@@ -0,0 +1,112 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout. Now with cells which are merged with others.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension(462, 128);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ // start-col, start-row, col-length, row-length
+ gl.debug("Merge: 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Span-Start (0, 1): " + gl.isSpanStart(0, 1));
+ gl.debug("Span-Start (0, 2): " + gl.isSpanStart(0, 2));
+ gl.debug("Span-Start (1, 1): " + gl.isSpanStart(1, 1));
+ gl.debug("Span-Start (1, 2): " + gl.isSpanStart(1, 2));
+ gl.debug("Span-Start (2, 1): " + gl.isSpanStart(2, 1));
+ gl.debug("Span-Start (2, 2): " + gl.isSpanStart(2, 2));
+ gl.debug("Span-Start (3, 1): " + gl.isSpanStart(3, 1));
+ gl.debug("Span-Start (3, 2): " + gl.isSpanStart(3, 2));
+
+ gl.debug("Span-Cell (0, 1): " + gl.isSpanCell(0, 1));
+ gl.debug("Span-Cell (0, 2): " + gl.isSpanCell(0, 2));
+ gl.debug("Span-Cell (1, 1): " + gl.isSpanCell(1, 1));
+ gl.debug("Span-Cell (1, 2): " + gl.isSpanCell(1, 2));
+ gl.debug("Span-Cell (2, 1): " + gl.isSpanCell(2, 1));
+ gl.debug("Span-Cell (2, 2): " + gl.isSpanCell(2, 2));
+ gl.debug("Span-Cell (3, 1): " + gl.isSpanCell(3, 1));
+ gl.debug("Span-Cell (3, 2): " + gl.isSpanCell(3, 2));
+
+ gl.debug("Fill-Cell (0, 1): " + gl.isFillCell(0, 1));
+ gl.debug("Fill-Cell (0, 2): " + gl.isFillCell(0, 2));
+ gl.debug("Fill-Cell (1, 1): " + gl.isFillCell(1, 1));
+ gl.debug("Fill-Cell (1, 2): " + gl.isFillCell(1, 2));
+ gl.debug("Fill-Cell (2, 1): " + gl.isFillCell(2, 1));
+ gl.debug("Fill-Cell (2, 2): " + gl.isFillCell(2, 2));
+ gl.debug("Fill-Cell (3, 1): " + gl.isFillCell(3, 1));
+ gl.debug("Fill-Cell (3, 2): " + gl.isFillCell(3, 2));
+
+ /*
+ // both should be impossible
+ gl.debug("Merge 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Merge 0, 0, 3, 4");
+ gl.mergeCells(0, 0, 3, 4);
+ */
+
+ gl.debug("Merge 0, 0, 1, 2");
+ gl.mergeCells(0, 0, 1, 2);
+
+ gl.debug("Merge 2, 0, 2, 1");
+ gl.mergeCells(2, 0, 2, 1);
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_8.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_8.html
new file mode 100644
index 0000000000..299d76433e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_8.html
@@ -0,0 +1,115 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout. Now with cells which are merged with others.</p>
+ <p>Added spacing in combination with spans.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+ gl.setHorizontalSpacing(10);
+ gl.setVerticalSpacing(10);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ // start-col, start-row, col-length, row-length
+ gl.debug("Merge: 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Span-Start (0, 1): " + gl.isSpanStart(0, 1));
+ gl.debug("Span-Start (0, 2): " + gl.isSpanStart(0, 2));
+ gl.debug("Span-Start (1, 1): " + gl.isSpanStart(1, 1));
+ gl.debug("Span-Start (1, 2): " + gl.isSpanStart(1, 2));
+ gl.debug("Span-Start (2, 1): " + gl.isSpanStart(2, 1));
+ gl.debug("Span-Start (2, 2): " + gl.isSpanStart(2, 2));
+ gl.debug("Span-Start (3, 1): " + gl.isSpanStart(3, 1));
+ gl.debug("Span-Start (3, 2): " + gl.isSpanStart(3, 2));
+
+ gl.debug("Span-Cell (0, 1): " + gl.isSpanCell(0, 1));
+ gl.debug("Span-Cell (0, 2): " + gl.isSpanCell(0, 2));
+ gl.debug("Span-Cell (1, 1): " + gl.isSpanCell(1, 1));
+ gl.debug("Span-Cell (1, 2): " + gl.isSpanCell(1, 2));
+ gl.debug("Span-Cell (2, 1): " + gl.isSpanCell(2, 1));
+ gl.debug("Span-Cell (2, 2): " + gl.isSpanCell(2, 2));
+ gl.debug("Span-Cell (3, 1): " + gl.isSpanCell(3, 1));
+ gl.debug("Span-Cell (3, 2): " + gl.isSpanCell(3, 2));
+
+ gl.debug("Fill-Cell (0, 1): " + gl.isFillCell(0, 1));
+ gl.debug("Fill-Cell (0, 2): " + gl.isFillCell(0, 2));
+ gl.debug("Fill-Cell (1, 1): " + gl.isFillCell(1, 1));
+ gl.debug("Fill-Cell (1, 2): " + gl.isFillCell(1, 2));
+ gl.debug("Fill-Cell (2, 1): " + gl.isFillCell(2, 1));
+ gl.debug("Fill-Cell (2, 2): " + gl.isFillCell(2, 2));
+ gl.debug("Fill-Cell (3, 1): " + gl.isFillCell(3, 1));
+ gl.debug("Fill-Cell (3, 2): " + gl.isFillCell(3, 2));
+
+ /*
+ // both should be impossible
+ gl.debug("Merge 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Merge 0, 0, 3, 4");
+ gl.mergeCells(0, 0, 3, 4);
+ */
+
+ gl.debug("Merge 0, 0, 1, 2");
+ gl.mergeCells(0, 0, 1, 2);
+
+ gl.debug("Merge 2, 0, 2, 1");
+ gl.mergeCells(2, 0, 2, 1);
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_9.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_9.html
new file mode 100644
index 0000000000..1e575c8903
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/GridLayout_9.html
@@ -0,0 +1,120 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout. Now with cells which are merged with others.</p>
+ <p>Added spacing in combination with spans.</p>
+ <p>Added padding in combination with spans.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+ gl.setHorizontalSpacing(10);
+ gl.setVerticalSpacing(10);
+ gl.setCellPaddingTop(4);
+ gl.setCellPaddingRight(4);
+ gl.setCellPaddingBottom(4);
+ gl.setCellPaddingLeft(4);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ // start-col, start-row, col-length, row-length
+ gl.debug("Merge: 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Span-Start (0, 1): " + gl.isSpanStart(0, 1));
+ gl.debug("Span-Start (0, 2): " + gl.isSpanStart(0, 2));
+ gl.debug("Span-Start (1, 1): " + gl.isSpanStart(1, 1));
+ gl.debug("Span-Start (1, 2): " + gl.isSpanStart(1, 2));
+ gl.debug("Span-Start (2, 1): " + gl.isSpanStart(2, 1));
+ gl.debug("Span-Start (2, 2): " + gl.isSpanStart(2, 2));
+ gl.debug("Span-Start (3, 1): " + gl.isSpanStart(3, 1));
+ gl.debug("Span-Start (3, 2): " + gl.isSpanStart(3, 2));
+
+ gl.debug("Span-Cell (0, 1): " + gl.isSpanCell(0, 1));
+ gl.debug("Span-Cell (0, 2): " + gl.isSpanCell(0, 2));
+ gl.debug("Span-Cell (1, 1): " + gl.isSpanCell(1, 1));
+ gl.debug("Span-Cell (1, 2): " + gl.isSpanCell(1, 2));
+ gl.debug("Span-Cell (2, 1): " + gl.isSpanCell(2, 1));
+ gl.debug("Span-Cell (2, 2): " + gl.isSpanCell(2, 2));
+ gl.debug("Span-Cell (3, 1): " + gl.isSpanCell(3, 1));
+ gl.debug("Span-Cell (3, 2): " + gl.isSpanCell(3, 2));
+
+ gl.debug("Fill-Cell (0, 1): " + gl.isFillCell(0, 1));
+ gl.debug("Fill-Cell (0, 2): " + gl.isFillCell(0, 2));
+ gl.debug("Fill-Cell (1, 1): " + gl.isFillCell(1, 1));
+ gl.debug("Fill-Cell (1, 2): " + gl.isFillCell(1, 2));
+ gl.debug("Fill-Cell (2, 1): " + gl.isFillCell(2, 1));
+ gl.debug("Fill-Cell (2, 2): " + gl.isFillCell(2, 2));
+ gl.debug("Fill-Cell (3, 1): " + gl.isFillCell(3, 1));
+ gl.debug("Fill-Cell (3, 2): " + gl.isFillCell(3, 2));
+
+ /*
+ // both should be impossible
+ gl.debug("Merge 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Merge 0, 0, 3, 4");
+ gl.mergeCells(0, 0, 3, 4);
+ */
+
+ gl.debug("Merge 0, 0, 1, 2");
+ gl.mergeCells(0, 0, 1, 2);
+
+ gl.debug("Merge 2, 0, 2, 1");
+ gl.mergeCells(2, 0, 2, 1);
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_1.html
new file mode 100644
index 0000000000..af7f60e6f8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_1.html
@@ -0,0 +1,1261 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.HorizontalBoxLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ LEFT ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setHeight("auto");
+ hbl1.setRight(335);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setVerticalChildrenAlign("bottom");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setWidth(25);
+ w1_1.setHeight(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxHeight(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setWidth(25);
+ w1_2.setHeight(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setBottom(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setWidth(25);
+ w1_3.setHeight("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setWidth(25);
+ w1_4.setHeight(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setWidth(40);
+ // w1_5.setHeight(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setWidth(25);
+ w1_6.setHeight(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setTop(15);
+ w1_6.setLeft(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setWidth(25);
+ w1_9.setHeight(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setWidth(25);
+ w1_10.setHeight(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setHeight("auto");
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ RIGHT ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl2.setTop(138);
+ hbl2.setLeft(20);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setHeight("auto");
+ hbl2.setRight(335);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setHorizontalChildrenAlign("right");
+ hbl2.setVerticalChildrenAlign("middle");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setWidth(25);
+ w2_1.setHeight(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxHeight(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setWidth(25);
+ w2_2.setHeight(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setBottom(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setWidth(25);
+ w2_3.setHeight("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setWidth(25);
+ w2_4.setHeight(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setWidth(40);
+ // w2_5.setHeight(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setWidth(25);
+ w2_6.setHeight(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setTop(15);
+ w2_6.setLeft(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setWidth(25);
+ w2_9.setHeight(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setWidth(25);
+ w2_10.setHeight(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setHeight("auto");
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl3.setTop(228);
+ hbl3.setLeft(20);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setHeight("auto");
+ hbl3.setRight(335);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setHorizontalChildrenAlign("center");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setWidth(25);
+ w3_1.setHeight(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxHeight(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setWidth(25);
+ w3_2.setHeight(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setBottom(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setWidth(25);
+ w3_3.setHeight("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setWidth(25);
+ w3_4.setHeight(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setWidth(40);
+ // w3_5.setHeight(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setWidth(25);
+ w3_6.setHeight(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setTop(15);
+ w3_6.setLeft(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setWidth(25);
+ w3_9.setHeight(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setWidth(25);
+ w3_10.setHeight(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setHeight("auto");
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ LEFT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl4.setTop(318);
+ hbl4.setLeft(20);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setWidth(null);
+ hbl4.setRight(335);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setVerticalChildrenAlign("bottom");
+
+ hbl4.setHeight(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setWidth(25);
+ w4_1.setHeight(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxHeight(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setWidth(25);
+ w4_2.setHeight(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setBottom(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setWidth(25);
+ w4_3.setHeight("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setWidth(25);
+ w4_4.setHeight(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setWidth(40);
+ // w4_5.setHeight(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setWidth(25);
+ w4_6.setHeight(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setTop(15);
+ w4_6.setLeft(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setWidth(25);
+ w4_9.setHeight(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setWidth(25);
+ w4_10.setHeight(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setHeight(80);
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ RIGHT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl5.setTop(408);
+ hbl5.setLeft(20);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setWidth(null);
+ hbl5.setRight(335);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setHorizontalChildrenAlign("right");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setVerticalChildrenAlign("middle");
+
+ hbl5.setHeight(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setWidth(25);
+ w5_1.setHeight(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxHeight(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setWidth(25);
+ w5_2.setHeight(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setBottom(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setWidth(25);
+ w5_3.setHeight("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setWidth(25);
+ w5_4.setHeight(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setWidth(40);
+ // w5_5.setHeight(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setWidth(25);
+ w5_6.setHeight(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setTop(15);
+ w5_6.setLeft(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setWidth(25);
+ w5_9.setHeight(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setWidth(25);
+ w5_10.setHeight(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setHeight(80);
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl6.setTop(498);
+ hbl6.setLeft(20);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setWidth(null);
+ hbl6.setRight(335);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setHorizontalChildrenAlign("center");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setHeight(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setWidth(25);
+ w6_1.setHeight(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxHeight(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setWidth(25);
+ w6_2.setHeight(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setBottom(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setWidth(25);
+ w6_3.setHeight("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setWidth(25);
+ w6_4.setHeight(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setWidth(40);
+ // w6_5.setHeight(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setWidth(25);
+ w6_6.setHeight(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setTop(15);
+ w6_6.setLeft(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setWidth(25);
+ w6_9.setHeight(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setWidth(25);
+ w6_10.setHeight(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setHeight(80);
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_2.html
new file mode 100644
index 0000000000..648eeae30f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_2.html
@@ -0,0 +1,1233 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.HorizontalBoxLayout widget.
+ This example includes a child with a width defined as percent. This makes
+ things much more complex (especially on resizing of the parent) so this also
+ dramatically reduces the speed ;)
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ LEFT ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setHeight("auto");
+ hbl1.setRight(335);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setVerticalChildrenAlign("bottom");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setWidth(25);
+ w1_1.setHeight(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxHeight(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setWidth(25);
+ w1_2.setHeight(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setBottom(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setWidth(25);
+ w1_3.setHeight("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setWidth(25);
+ w1_4.setHeight(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setWidth("15%");
+ // w1_5.setHeight(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setWidth(25);
+ w1_6.setHeight(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setTop(15);
+ w1_6.setLeft(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setWidth(25);
+ w1_9.setHeight(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setWidth(25);
+ w1_10.setHeight(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight(80);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ RIGHT ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl2.setTop(138);
+ hbl2.setLeft(20);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setHeight("auto");
+ hbl2.setRight(335);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setHorizontalChildrenAlign("right");
+ hbl2.setVerticalChildrenAlign("middle");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setWidth(25);
+ w2_1.setHeight(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxHeight(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setWidth(25);
+ w2_2.setHeight(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setBottom(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setWidth(25);
+ w2_3.setHeight("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setWidth(25);
+ w2_4.setHeight(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setWidth("15%");
+ // w2_5.setHeight(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setWidth(25);
+ w2_6.setHeight(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setTop(15);
+ w2_6.setLeft(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setWidth(25);
+ w2_9.setHeight(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setWidth(25);
+ w2_10.setHeight(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight(80);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl3.setTop(228);
+ hbl3.setLeft(20);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setHeight("auto");
+ hbl3.setRight(335);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setHorizontalChildrenAlign("center");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setWidth(25);
+ w3_1.setHeight(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxHeight(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setWidth(25);
+ w3_2.setHeight(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setBottom(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setWidth(25);
+ w3_3.setHeight("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setWidth(25);
+ w3_4.setHeight(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setWidth("15%");
+ // w3_5.setHeight(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setWidth(25);
+ w3_6.setHeight(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setTop(15);
+ w3_6.setLeft(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setWidth(25);
+ w3_9.setHeight(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setWidth(25);
+ w3_10.setHeight(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight(80);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ LEFT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl4.setTop(318);
+ hbl4.setLeft(20);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setWidth(null);
+ hbl4.setRight(335);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setVerticalChildrenAlign("bottom");
+
+ hbl4.setHeight(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setWidth(25);
+ w4_1.setHeight(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxHeight(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setWidth(25);
+ w4_2.setHeight(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setBottom(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setWidth(25);
+ w4_3.setHeight("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setWidth(25);
+ w4_4.setHeight(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setWidth("15%");
+ // w4_5.setHeight(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setWidth(25);
+ w4_6.setHeight(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setTop(15);
+ w4_6.setLeft(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setWidth(25);
+ w4_9.setHeight(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setWidth(25);
+ w4_10.setHeight(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight("auto");
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ RIGHT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl5.setTop(408);
+ hbl5.setLeft(20);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setWidth(null);
+ hbl5.setRight(335);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setHorizontalChildrenAlign("right");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setVerticalChildrenAlign("middle");
+
+ hbl5.setHeight(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setWidth(25);
+ w5_1.setHeight(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxHeight(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setWidth(25);
+ w5_2.setHeight(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setBottom(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setWidth(25);
+ w5_3.setHeight("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setWidth(25);
+ w5_4.setHeight(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setWidth("15%");
+ // w5_5.setHeight(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setWidth(25);
+ w5_6.setHeight(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setTop(15);
+ w5_6.setLeft(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setWidth(25);
+ w5_9.setHeight(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setWidth(25);
+ w5_10.setHeight(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight("auto");
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl6.setTop(498);
+ hbl6.setLeft(20);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setWidth(null);
+ hbl6.setRight(335);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setHorizontalChildrenAlign("center");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setHeight(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setWidth(25);
+ w6_1.setHeight(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxHeight(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setWidth(25);
+ w6_2.setHeight(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setBottom(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setWidth(25);
+ w6_3.setHeight("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setWidth(25);
+ w6_4.setHeight(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setWidth("15%");
+ // w6_5.setHeight(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setWidth(25);
+ w6_6.setHeight(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setTop(15);
+ w6_6.setLeft(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setWidth(25);
+ w6_9.setHeight(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setWidth(25);
+ w6_10.setHeight(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight("auto");
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_3.html
new file mode 100644
index 0000000000..6777c53d7b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HorizontalBoxLayout_3.html
@@ -0,0 +1,594 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.HorizontalBoxLayout widget.<br/>
+ <br/>
+ 1. Simple testing, one static and one flex child<br/>
+ 2. Two flex children with the same priority<br/>
+ 3. The same as #2, but the second has the doubled priority compared to the first<br/>
+ <br/>
+
+ 4. The same as #3, but now the second child has a max-width of 50px<br/>
+ 5. The same as #4, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 6. The same as #3, but now the second has a min width of 500px<br/>
+ 7. The same as #6, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 8. Three children with the priorities: 1, 2 and 3. The second has a maxWidth of 50px<br/>
+ 9. The same as #8, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 10. Three children with the priorities: 1, 2 and 3. Added a few mouse actions.<br/>
+ 11. Three children with the priorities: 1, a static width of 80px and 3.<br/>
+ 12. The same as #11, but configured as 'auto' width.<br/>
+ <br/>
+
+ 13. Test for more complex child widgets. Seems to work without problems.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ /* ***********************************************
+
+ EXAMPLE 1:
+
+ *********************************************** */
+
+ var te1 = new qx.ui.basic.Label("#1");
+ te1.setLocation(20, 48);
+ d.add(te1);
+
+ var hbl1 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl1.setLeft(50);
+ hbl1.setTop(48);
+ hbl1.setRight(335);
+ hbl1.setWidth(null);
+ hbl1.setHeight("auto");
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setSpacing(4);
+ hbl1.setPadding(2);
+ d.add(hbl1);
+
+ var t1_1 = new qx.ui.basic.Terminator;
+ t1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_1.setWidth(20);
+ t1_1.setHeight(10);
+ t1_1.setBackgroundColor("green");
+ hbl1.add(t1_1);
+
+ t1_1.addEventListener("click", function() {
+ this.setWidth(this.getWidth() == 20 ? 100 : 20);
+ });
+
+ var t1_2 = new qx.ui.basic.Terminator;
+ t1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_2.setWidth("1*");
+ t1_2.setHeight(10);
+ t1_2.setBackgroundColor("blue");
+ hbl1.add(t1_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 2:
+
+ *********************************************** */
+
+ var te2 = new qx.ui.basic.Label("#2");
+ te2.setLocation(20, 68);
+ d.add(te2);
+
+ var hbl2 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl2.setLeft(50);
+ hbl2.setTop(68);
+ hbl2.setRight(335);
+ hbl2.setWidth(null);
+ hbl2.setHeight("auto");
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setSpacing(4);
+ hbl2.setPadding(2);
+ d.add(hbl2);
+
+ var t2_1 = new qx.ui.basic.Terminator;
+ t2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_1.setWidth("1*");
+ t2_1.setHeight(10);
+ t2_1.setBackgroundColor("green");
+ hbl2.add(t2_1);
+
+ var t2_2 = new qx.ui.basic.Terminator;
+ t2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_2.setWidth("1*");
+ t2_2.setHeight(10);
+ t2_2.setBackgroundColor("blue");
+ hbl2.add(t2_2);
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 3:
+
+ *********************************************** */
+
+ var te3 = new qx.ui.basic.Label("#3");
+ te3.setLocation(20, 88);
+ d.add(te3);
+
+ var hbl3 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl3.setLeft(50);
+ hbl3.setTop(88);
+ hbl3.setRight(335);
+ hbl3.setWidth(null);
+ hbl3.setHeight("auto");
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setSpacing(4);
+ hbl3.setPadding(2);
+ d.add(hbl3);
+
+ var t3_1 = new qx.ui.basic.Terminator;
+ t3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_1.setWidth("1*");
+ t3_1.setHeight(10);
+ t3_1.setBackgroundColor("green");
+ hbl3.add(t3_1);
+
+ var t3_2 = new qx.ui.basic.Terminator;
+ t3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_2.setWidth("2*");
+ t3_2.setHeight(10);
+ t3_2.setBackgroundColor("blue");
+ hbl3.add(t3_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 4:
+
+ *********************************************** */
+
+ var te4 = new qx.ui.basic.Label("#4");
+ te4.setLocation(20, 128);
+ d.add(te4);
+
+ var hbl4 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl4.setLeft(50);
+ hbl4.setTop(128);
+ hbl4.setRight(335);
+ hbl4.setWidth(null);
+ hbl4.setHeight("auto");
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setSpacing(4);
+ hbl4.setPadding(2);
+ d.add(hbl4);
+
+ var t4_1 = new qx.ui.basic.Terminator;
+ t4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_1.setWidth("1*");
+ t4_1.setHeight(10);
+ t4_1.setBackgroundColor("green");
+ hbl4.add(t4_1);
+
+ var t4_2 = new qx.ui.basic.Terminator;
+ t4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_2.setWidth("2*");
+ t4_2.setHeight(10);
+ t4_2.setMaxWidth(50);
+ t4_2.setBackgroundColor("blue");
+ hbl4.add(t4_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 5:
+
+ *********************************************** */
+
+ var te5 = new qx.ui.basic.Label("#5");
+ te5.setLocation(20, 148);
+ d.add(te5);
+
+ var hbl5 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl5.setLeft(50);
+ hbl5.setTop(148);
+ hbl5.setRight(335);
+ hbl5.setWidth(null);
+ hbl5.setHeight("auto");
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setSpacing(4);
+ hbl5.setPadding(2);
+ hbl5.setUseAdvancedFlexAllocation(true);
+ d.add(hbl5);
+
+ var t5_1 = new qx.ui.basic.Terminator;
+ t5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_1.setWidth("1*");
+ t5_1.setHeight(10);
+ t5_1.setBackgroundColor("green");
+ hbl5.add(t5_1);
+
+ var t5_2 = new qx.ui.basic.Terminator;
+ t5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_2.setWidth("2*");
+ t5_2.setHeight(10);
+ t5_2.setMaxWidth(50);
+ t5_2.setBackgroundColor("blue");
+ hbl5.add(t5_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 6:
+
+ *********************************************** */
+
+ var te6 = new qx.ui.basic.Label("#6");
+ te6.setLocation(20, 188);
+ d.add(te6);
+
+ var hbl6 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl6.setLeft(50);
+ hbl6.setTop(188);
+ hbl6.setRight(335);
+ hbl6.setWidth(null);
+ hbl6.setHeight("auto");
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setSpacing(4);
+ hbl6.setPadding(2);
+ d.add(hbl6);
+
+ var t6_1 = new qx.ui.basic.Terminator;
+ t6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_1.setWidth("1*");
+ t6_1.setHeight(10);
+ t6_1.setBackgroundColor("green");
+ hbl6.add(t6_1);
+
+ var t6_2 = new qx.ui.basic.Terminator;
+ t6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_2.setWidth("2*");
+ t6_2.setHeight(10);
+ t6_2.setMinWidth(500);
+ t6_2.setBackgroundColor("blue");
+ hbl6.add(t6_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 7:
+
+ *********************************************** */
+
+ var te7 = new qx.ui.basic.Label("#7");
+ te7.setLocation(20, 208);
+ d.add(te7);
+
+ var hbl7 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl7.setLeft(50);
+ hbl7.setTop(208);
+ hbl7.setRight(335);
+ hbl7.setWidth(null);
+ hbl7.setHeight("auto");
+ hbl7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl7.setSpacing(4);
+ hbl7.setPadding(2);
+ hbl7.setUseAdvancedFlexAllocation(true);
+ d.add(hbl7);
+
+ var t7_1 = new qx.ui.basic.Terminator;
+ t7_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_1.setWidth("1*");
+ t7_1.setHeight(10);
+ t7_1.setBackgroundColor("green");
+ hbl7.add(t7_1);
+
+ var t7_2 = new qx.ui.basic.Terminator;
+ t7_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_2.setWidth("2*");
+ t7_2.setHeight(10);
+ t7_2.setMinWidth(500);
+ t7_2.setBackgroundColor("blue");
+ hbl7.add(t7_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 8:
+
+ *********************************************** */
+
+ var te8 = new qx.ui.basic.Label("#8");
+ te8.setLocation(20, 248);
+ d.add(te8);
+
+ var hbl8 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl8.setLeft(50);
+ hbl8.setTop(248);
+ hbl8.setRight(335);
+ hbl8.setWidth(null);
+ hbl8.setHeight("auto");
+ hbl8.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl8.setSpacing(4);
+ hbl8.setPadding(2);
+ d.add(hbl8);
+
+ var t8_1 = new qx.ui.basic.Terminator;
+ t8_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_1.setWidth("1*");
+ t8_1.setHeight(10);
+ t8_1.setBackgroundColor("green");
+ hbl8.add(t8_1);
+
+ var t8_2 = new qx.ui.basic.Terminator;
+ t8_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_2.setWidth("2*");
+ t8_2.setHeight(10);
+ t8_2.setBackgroundColor("blue");
+ t8_2.setMaxWidth(50);
+ hbl8.add(t8_2);
+
+ var t8_3 = new qx.ui.basic.Terminator;
+ t8_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_3.setWidth("3*");
+ t8_3.setHeight(10);
+ t8_3.setBackgroundColor("red");
+ hbl8.add(t8_3);
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 9:
+
+ *********************************************** */
+
+ var te9 = new qx.ui.basic.Label("#9");
+ te9.setLocation(20, 268);
+ d.add(te9);
+
+ var hbl9 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl9.setLeft(50);
+ hbl9.setTop(268);
+ hbl9.setRight(335);
+ hbl9.setWidth(null);
+ hbl9.setHeight("auto");
+ hbl9.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl9.setSpacing(4);
+ hbl9.setPadding(2);
+ hbl9.setUseAdvancedFlexAllocation(true);
+ d.add(hbl9);
+
+ var t9_1 = new qx.ui.basic.Terminator;
+ t9_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_1.setWidth("1*");
+ t9_1.setHeight(10);
+ t9_1.setBackgroundColor("green");
+ hbl9.add(t9_1);
+
+ var t9_2 = new qx.ui.basic.Terminator;
+ t9_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_2.setWidth("2*");
+ t9_2.setHeight(10);
+ t9_2.setBackgroundColor("blue");
+ t9_2.setMaxWidth(50);
+ hbl9.add(t9_2);
+
+ var t9_3 = new qx.ui.basic.Terminator;
+ t9_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_3.setWidth("3*");
+ t9_3.setHeight(10);
+ t9_3.setBackgroundColor("red");
+ hbl9.add(t9_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 10:
+
+ *********************************************** */
+
+ var te10 = new qx.ui.basic.Label("#10");
+ te10.setLocation(20, 308);
+ d.add(te10);
+
+ var hbl10 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl10.setLeft(50);
+ hbl10.setTop(308);
+ hbl10.setRight(335);
+ hbl10.setWidth(null);
+ hbl10.setHeight("auto");
+ hbl10.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl10.setSpacing(4);
+ hbl10.setPadding(2);
+ hbl10.setUseAdvancedFlexAllocation(true);
+ d.add(hbl10);
+
+ var t10_1 = new qx.ui.basic.Terminator;
+ t10_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_1.setWidth("1*");
+ t10_1.setHeight(10);
+ t10_1.setBackgroundColor("green");
+ t10_1.addEventListener("click", function(e) { this.setWidth(this.getWidth() == "1*" ? "4*" : "1*"); });
+ hbl10.add(t10_1);
+
+ var t10_2 = new qx.ui.basic.Terminator;
+ t10_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_2.setWidth("2*");
+ t10_2.setHeight(10);
+ t10_2.setBackgroundColor("blue");
+ t10_2.addEventListener("click", function(e) { this.setWidth(this.getWidth() == "2*" ? "1*" : "2*"); });
+ hbl10.add(t10_2);
+
+ var t10_3 = new qx.ui.basic.Terminator;
+ t10_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_3.setWidth("3*");
+ t10_3.setHeight(10);
+ t10_3.setBackgroundColor("red");
+ t10_3.addEventListener("click", function(e) { this.setWidth(this.getWidth() == "3*" ? "6*" : "3*"); });
+ hbl10.add(t10_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 11:
+
+ *********************************************** */
+
+ var te11 = new qx.ui.basic.Label("#11");
+ te11.setLocation(20, 328);
+ d.add(te11);
+
+ var hbl11 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl11.setLeft(50);
+ hbl11.setTop(328);
+ hbl11.setRight(335);
+ hbl11.setWidth(null);
+ hbl11.setHeight("auto");
+ hbl11.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl11.setSpacing(4);
+ hbl11.setPadding(2);
+ d.add(hbl11);
+
+ var t11_1 = new qx.ui.basic.Terminator;
+ t11_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_1.setWidth("1*");
+ t11_1.setHeight(10);
+ t11_1.setBackgroundColor("green");
+ hbl11.add(t11_1);
+
+ var t11_2 = new qx.ui.basic.Terminator;
+ t11_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_2.setWidth(80);
+ t11_2.setHeight(10);
+ t11_2.setBackgroundColor("blue");
+ hbl11.add(t11_2);
+
+ var t11_3 = new qx.ui.basic.Terminator;
+ t11_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_3.setWidth("3*");
+ t11_3.setHeight(10);
+ t11_3.setBackgroundColor("red");
+ hbl11.add(t11_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 12:
+
+ *********************************************** */
+
+ var te12 = new qx.ui.basic.Label("#12");
+ te12.setLocation(20, 348);
+ d.add(te12);
+
+ var hbl12 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl12.setLeft(50);
+ hbl12.setTop(348);
+ hbl12.setHeight("auto");
+ hbl12.setWidth("auto");
+ hbl12.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl12.setSpacing(4);
+ hbl12.setPadding(2);
+ d.add(hbl12);
+
+ var t12_1 = new qx.ui.basic.Terminator;
+ t12_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_1.setWidth("1*");
+ t12_1.setHeight(10);
+ t12_1.setBackgroundColor("green");
+ hbl12.add(t12_1);
+
+ var t12_2 = new qx.ui.basic.Terminator;
+ t12_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_2.setWidth(80);
+ t12_2.setHeight(10);
+ t12_2.setBackgroundColor("blue");
+ hbl12.add(t12_2);
+
+ var t12_3 = new qx.ui.basic.Terminator;
+ t12_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_3.setWidth("3*");
+ t12_3.setHeight(10);
+ t12_3.setBackgroundColor("red");
+ hbl12.add(t12_3);
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 13:
+
+ *********************************************** */
+
+ var te13 = new qx.ui.basic.Label("#13");
+ te13.setLocation(20, 388);
+ d.add(te13);
+
+ var hbl13 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl13.setLeft(50);
+ hbl13.setTop(388);
+ hbl13.setRight(335);
+ hbl13.setWidth(null);
+ hbl13.setHeight("auto");
+ hbl13.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl13.setSpacing(4);
+ hbl13.setPadding(2);
+ d.add(hbl13);
+
+ var t13_1 = new qx.ui.basic.Terminator;
+ t13_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t13_1.setWidth(200);
+ t13_1.setHeight(10);
+ t13_1.setBackgroundColor("green");
+ hbl13.add(t13_1);
+
+ var t13_2 = new qx.ui.form.TextField("http://qooxdoo.org");
+ t13_2.setWidth("1*");
+ t13_2.setStyleProperty("fontSize", "16px");
+ hbl13.add(t13_2);
+
+ var t13_3 = new qx.ui.form.Button(null, "icon/16/apply.png");
+ hbl13.add(t13_3);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_1.html
new file mode 100644
index 0000000000..11c2a5ce8a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_1.html
@@ -0,0 +1,142 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <style type="text/css">*{ font-size: 10px; font-family: Verdana }</style>
+
+ <div id="demoDescription">
+ <p>Test table.</p>
+ </div>
+
+ <textarea id="info" style="position:absolute; top:48px; left:20px; width:600px;height:50px;border:1px solid black"></textarea>
+ <div id="view" style="position:absolute;top:148px;left:20px;width:400px;height:500px;border:1px solid black"></div>
+ <div id="scroller" style="position: absolute; top:148px; left:420px;height:500px;width:24px;border:1px solid black;overflow:scroll"><div id="scrollerContent" style="width:1px;height:5000px"></div></div>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var updateCount = 0;
+
+ var tableHeight = 512;
+
+ var entryCount = 1000;
+
+ var rowHeight = 16;
+ var rowCount = Math.floor(tableHeight / rowHeight);
+
+ var view = document.getElementById("view");
+ var info = document.getElementById("info");
+ var scroller = document.getElementById("scroller");
+ var scrollerContent = document.getElementById("scrollerContent");
+
+
+
+ view.style.height = scroller.style.height = tableHeight + "px";
+ scrollerContent.style.height = Math.round(entryCount / rowCount * tableHeight) + "px";
+
+
+
+
+ var data = [];
+
+ for (var i=0; i<1000; i++) {
+ data.push({ col1 : "hello" + i, col2 : "world" + i, col3 : "foo" + i, col4 : "bar" + i, col5 : "baz" + i });
+ };
+
+ var cache = [];
+
+ var undef = "undefined";
+
+ var HTML =
+ {
+ table_start : "<table><tbody>",
+ table_end : "</tbody></table>",
+
+ tr_start : "<tr>",
+ tr_start_open : "<tr ",
+ tr_start_close : ">",
+ tr_end : "<tr>",
+
+ td_start : "<td>",
+ td_end : "</td>"
+ };
+
+ function arrayAppend(arr, a) {
+ Array.prototype.push.apply(arr, a);
+ };
+
+ function getCellHtml(cdata)
+ {
+ var html = [ HTML.td_start, cdata, HTML.td_end ];
+
+ return html;
+ };
+
+ function getRowHtml(rdata, nr)
+ {
+ if (typeof cache[nr] != undef) {
+ return cache[nr];
+ };
+
+ var html = [];
+ html.push(HTML.tr_start_open);
+
+ if (nr % 2 == 0)
+ {
+ html.push("style='background-color:#fff'");
+ };
+
+ html.push(HTML.tr_start_close);
+
+ for (var row in rdata) {
+ arrayAppend(html, getCellHtml(rdata[row]));
+ };
+
+ html.push(HTML.tr_stop);
+
+ cache[nr] = html;
+
+ return html;
+ };
+
+ function buildTableHtml(start, len)
+ {
+ var ttstart = (new Date).valueOf();
+
+ var html = [];
+
+ html.push(HTML.table_start);
+
+ for (var i=start, s=start+len; i<s; i++) {
+ arrayAppend(html, getRowHtml(data[i], i));
+ };
+
+ html.push(HTML.table_end);
+ view.innerHTML = html.join("");
+
+ updateCount++;
+
+ var ttend = (new Date).valueOf();
+ info.value = "Update: " + updateCount + "\nRows: " + start + " - " + (start+len) + "\n" + (ttend-ttstart) + "ms\n";
+ };
+
+ function doscroll() {
+ buildTableHtml(Math.floor(scroller.scrollTop/rowHeight), rowCount);
+ };
+
+ qx.dom.EventRegistration.addEventListener(scroller, "scroll", doscroll);
+ doscroll();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_2.html
new file mode 100644
index 0000000000..f1dcc949df
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/HtmlTable_2.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test table with fixed column widths: 100, 50, 10, 30 and 20 pixel.</p>
+ </div>
+
+ <textarea id="info" style="position:absolute; top:48px; left:20px; width:600px;height:50px;border:1px solid black"></textarea>
+ <div id="view" style="position:absolute;top:148px;left:20px;width:400px;height:500px;border:1px solid black"></div>
+ <div id="scroller" style="position: absolute; top:148px; left:420px;height:500px;width:24px;border:1px solid black;overflow:scroll"><div id="scrollerContent" style="width:1px;height:5000px"></div></div>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var updateCount = 0;
+
+ var tableHeight = 512;
+
+ var entryCount = 1000;
+
+ var rowHeight = 16;
+ var rowCount = Math.floor(tableHeight / rowHeight);
+
+ var view = document.getElementById("view");
+ var info = document.getElementById("info");
+ var scroller = document.getElementById("scroller");
+ var scrollerContent = document.getElementById("scrollerContent");
+
+
+
+ view.style.height = scroller.style.height = tableHeight + "px";
+ scrollerContent.style.height = Math.round(entryCount / rowCount * tableHeight) + "px";
+
+
+
+
+ var data = [];
+
+ for (var i=0; i<1000; i++) {
+ data.push({ col1 : "hello" + i, col2 : "world" + i, col3 : "foo" + i, col4 : "bar" + i, col5 : "baz" + i });
+ };
+
+ var cache = [];
+
+ var undef = "undefined";
+
+ var HTML =
+ {
+ table_start : '<table cellspacing="0" cellpadding="0" style="table-layout:fixed;width:210px"><colgroup><col width="100"/><col width="50"/><col width="10"/><col width="30"/><col width="20"/></colgroup><tbody>',
+ table_end : "</tbody></table>",
+
+ tr_start : "<tr>",
+ tr_start_open : "<tr ",
+ tr_start_close : ">",
+ tr_end : "<tr>",
+
+ td_start : '<td style="overflow:hidden;height:15px;border-right:1px solid red;border-bottom:1px solid red;padding-left:2px;padding-right:2px">',
+ td_end : "</td>"
+ };
+
+ function arrayAppend(arr, a) {
+ Array.prototype.push.apply(arr, a);
+ };
+
+ function getCellHtml(cdata)
+ {
+ var html = [ HTML.td_start, cdata, HTML.td_end ];
+
+ return html;
+ };
+
+ function getRowHtml(rdata, nr)
+ {
+ if (typeof cache[nr] != undef) {
+ return cache[nr];
+ };
+
+ var html = [];
+ html.push(HTML.tr_start_open);
+
+ if (nr % 2 == 0)
+ {
+ html.push("style='background-color:#fff'");
+ };
+
+ html.push(HTML.tr_start_close);
+
+ for (var row in rdata) {
+ arrayAppend(html, getCellHtml(rdata[row]));
+ };
+
+ html.push(HTML.tr_stop);
+
+ cache[nr] = html;
+
+ return html;
+ };
+
+ function buildTableHtml(start, len)
+ {
+ var ttstart = (new Date).valueOf();
+
+ var html = [];
+
+ html.push(HTML.table_start);
+
+ for (var i=start, s=start+len; i<s; i++) {
+ arrayAppend(html, getRowHtml(data[i], i));
+ };
+
+ html.push(HTML.table_end);
+ view.innerHTML = html.join("");
+
+ updateCount++;
+
+ var ttend = (new Date).valueOf();
+ info.value = "Update: " + updateCount + "\nRows: " + start + " - " + (start+len) + "\n" + (ttend-ttstart) + "ms\n";
+ };
+
+ function doscroll() {
+ buildTableHtml(Math.floor(scroller.scrollTop/rowHeight), rowCount);
+ };
+
+ qx.dom.EventRegistration.addEventListener(scroller, "scroll", doscroll);
+ doscroll();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/IconHtml_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/IconHtml_1.html
new file mode 100644
index 0000000000..be65866dd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/IconHtml_1.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.embed.IconHtmlEmbed.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var l1 = new qx.ui.embed.IconHtmlEmbed("Hello World", "icon/32/organizer.png", 32, 32);
+
+ l1.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(l1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_1.html
new file mode 100644
index 0000000000..482135d062
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_1.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This is a test for the qx.ui.basic.Image constructor. It supports automatic preloading through qx.io.image.Preloader, with error and load
+ QxEvents which will be fired, and cross-browser PNG with extended alpha channels.</p>
+
+ <p>PNG file in HTML (in Internet Explorer this should not be transparent):</p>
+ <img src="../../../../framework/source/resource/icon/crystalsvg/48/hardware-info.png" width="48" height="48"/>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var i1 = new qx.ui.basic.Image("icon/48/favourite.png", 48, 48);
+ with(i1)
+ {
+ setTop(48);
+ setLeft(20);
+ };
+
+ d.add(i1);
+
+
+
+ var i2 = new qx.ui.basic.Image("icon/48/favourite.png", 48, 48);
+ with(i2)
+ {
+ setTop(48);
+ setLeft(100);
+ };
+
+ d.add(i2);
+
+
+
+
+ var i3 = new qx.ui.basic.Image("icon/48/favourite.png", 96, 96);
+ with(i3)
+ {
+ setTop(120);
+ setLeft(60);
+ setResizeToInner(true);
+ };
+
+ /*
+ i3.addEventListener("load", function() {
+ new QxDebug("Bigger Symbol", "Preferred (Original) Size: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+ */
+
+ d.add(i3);
+
+
+
+
+ var i4 = new qx.ui.basic.Image("icon/48/favourite.png", 24, 24);
+ with(i4)
+ {
+ setTop(120);
+ setLeft(20);
+ setResizeToInner(true);
+ };
+
+ /*
+ i4.addEventListener("load", function() {
+ new QxDebug("Smaller Symbol", "Preferred (Original) Size: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+ */
+
+ d.add(i4);
+
+
+
+
+ var i5 = new qx.ui.basic.Image("http://www.google.com/images/google_sm.gif");
+ with(i5)
+ {
+ setTop(300);
+ setLeft(20);
+ };
+
+ /*
+ i5.addEventListener("load", function() {
+ new QxDebug("Google Image", "Preferred (Original) Size: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+ */
+
+ d.add(i5);
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 300, 48);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_2.html
new file mode 100644
index 0000000000..989adbdab8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_2.html
@@ -0,0 +1,150 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Some advanced tests for qx.ui.basic.Image. Click on the fourth and fivth image to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var i1 = new qx.ui.basic.Image("icon/64/folder.png");
+
+ i1.setLeft(20);
+ i1.setTop(48);
+
+ i1.addEventListener("load", function() {
+ this.debug("Image 1: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+
+
+ var i2 = new qx.ui.basic.Image("icon/64/folder.png");
+
+ i2.setLeft(120);
+ i2.setTop(48);
+ i2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i2.setPadding(2, 4);
+
+ i2.addEventListener("load", function() {
+ this.debug("Image 2: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+
+
+ var i3 = new qx.ui.basic.Image("icon/64/folder.png");
+
+ i3.setLeft(220);
+ i3.setTop(48);
+ i3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i3.setPadding(8);
+ i3.setOpacity(0.5);
+
+ i3.addEventListener("load", function() {
+ this.debug("Image 3: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+
+
+ var i4 = new qx.ui.basic.Image("icon/64/folder.png");
+
+ i4.setLeft(320);
+ i4.setTop(48);
+ i4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i4.setPadding(2, 4);
+
+ i4.addEventListener("load", function() {
+ this.debug("Image 4: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+ i4.addEventListener("click", function() {
+ this.setSource(this.getSource() == "icon/64/folder.png" ? "icon/32/run.png" : "icon/64/folder.png");
+ });
+
+
+
+
+
+ var i5w1 = new qx.ui.layout.CanvasLayout;
+ i5w1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i5w1.setPadding(8);
+ i5w1.setLeft(420);
+ i5w1.setTop(48);
+ i5w1.setWidth("auto");
+ i5w1.setHeight("auto");
+
+ var i5w2 = new qx.ui.layout.CanvasLayout;
+ i5w2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i5w2.setPadding(8);
+ i5w2.setLeft(0);
+ i5w2.setTop(0);
+ i5w2.setWidth("auto");
+ i5w2.setHeight("auto");
+
+ var i5w3 = new qx.ui.layout.CanvasLayout;
+ i5w3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i5w3.setPadding(8);
+ i5w3.setLeft(0);
+ i5w3.setTop(0);
+ i5w3.setWidth("auto");
+ i5w3.setHeight("auto");
+
+ var i5 = new qx.ui.basic.Image("icon/64/folder.png");
+
+ i5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i5.setPadding(2, 4);
+
+ i5.addEventListener("load", function() {
+ this.debug("Image 4: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+ i5.addEventListener("click", function() {
+ this.setSource(this.getSource() == "icon/64/folder.png" ? "icon/32/run.png" : "icon/64/folder.png");
+ });
+
+ i5w1.add(i5w2);
+ i5w2.add(i5w3);
+ i5w3.add(i5);
+ d.add(i5w1);
+
+
+
+ var i6 = new qx.ui.basic.Image("icon/128/paint.png");
+ i6.setLeft(20);
+ i6.setRight(400);
+ i6.setTop(200);
+ i6.setHeight(150);
+ i6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i6.setWidth(null);
+
+ var i7 = new qx.ui.basic.Image("icon/128/paint.png");
+ i7.setLeft(20);
+ i7.setRight(400);
+ i7.setTop(400);
+ i7.setHeight(150);
+ i7.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i7.setResizeToInner(true);
+ i7.setWidth(null);
+
+
+
+ d.add(i1, i2, i3, i4, i6, i7);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_3.html
new file mode 100644
index 0000000000..97b63d1e44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_3.html
@@ -0,0 +1,124 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Some advanced tests for qx.ui.basic.Image. Click on the fourth and fifth image to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var frame = new qx.ui.layout.CanvasLayout;
+
+ frame.setBorder(qx.renderer.border.BorderPresets.getInstance().ridge);
+ frame.setWidth("auto");
+ frame.setHeight("auto");
+ frame.setPadding(8);
+
+ frame.setLeft(20);
+ frame.setTop(48);
+
+ d.add(frame);
+
+
+ var out = new qx.ui.layout.CanvasLayout;
+
+ out.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ out.setWidth("auto");
+ out.setHeight("auto");
+ out.setPadding(8);
+
+ frame.add(out);
+
+
+
+ var bar = new qx.ui.layout.CanvasLayout;
+
+ bar.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ bar.setWidth("auto");
+ bar.setHeight("auto");
+ bar.setPadding(4);
+ bar.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+
+ out.add(bar);
+
+
+
+
+ var part, icon;
+ var icons = [ "reload", "bookmark", "run" ];
+
+
+ for (var j=0; j<5; j++)
+ {
+ part = new qx.ui.layout.CanvasLayout;
+
+ part.setWidth("auto");
+ part.setHeight("auto");
+ part.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ part.setLeft(j*90);
+ part.setTop(0);
+ part.setBackgroundColor(new qx.renderer.color.ColorObject("Threedface"));
+ part.setPadding(4);
+
+ for (var i=0; i<icons.length; i++)
+ {
+ icon = new qx.ui.basic.Image("icon/22/" + icons[i] + ".png");
+
+ icon.setTop(0);
+ icon.setLeft(26 * i);
+ icon.setPadding(2);
+
+ part.add(icon);
+ };
+
+ bar.add(part);
+ };
+
+
+
+
+
+
+
+ bar.addEventListener("click", function(e)
+ {
+ var parts = bar.getChildren();
+ var icons;
+ var m;
+ var s = (new Date).valueOf();
+
+ for (var j=0; j<parts.length; j++)
+ {
+ icons = parts[j].getChildren();
+
+ for (var i=0; i<icons.length; i++)
+ {
+ m = icons[i].getSource().indexOf("/22/") != -1;
+ icons[i].setSource(m ? icons[i].getSource().replace("/22/", "/32/") : icons[i].getSource().replace("/32/", "/22/"));
+ icons[i].setLeft(m ? 36 * i : 26 * i);
+ };
+
+ parts[j].setLeft(m ? j * 120 : j * 90);
+ };
+
+ // this.debug("Change Duration: " + ((new Date).valueOf() - s));
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_4.html
new file mode 100644
index 0000000000..af7c64bff3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Image_4.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ qx.ui.basic.Image Stress Test
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w;
+
+ for (var i=1; i<=10; i++)
+ {
+ for (var j=1; j<=10; j++)
+ {
+ var w = new qx.ui.basic.Image("icon/16/clock.png");
+
+ w.setLeft(20+(16*i));
+ w.setTop(48+(16*j));
+
+ d.add(w);
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Keyhandler_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Keyhandler_1.html
new file mode 100644
index 0000000000..bfd2ec6b15
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Keyhandler_1.html
@@ -0,0 +1,117 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+
+ <style type="text/css">
+ #keylogger {
+ position: absolute;
+ width: 500px;
+ height: 500px;
+ left: 30px;
+ top: 40px;
+ color: black;
+ background-color: #EEE;
+ padding: 5px;
+ border: 1px inset;
+ overflow: scroll;
+ /* display:none; */
+ }
+
+ table {
+ width: 100%;
+ }
+
+ td {
+ text-align: center;
+ }
+ </style>
+
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Keyhandler Test</p>
+ <p>Displays qoooxdoo's normalized key events.</p>
+ </div>
+
+
+ <div id="keylogger">
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var tableHead = "<table><tr><th>Event</th><th>key identifier</th><th>key code</th><th>char code</th><th>Shift</th><th>Ctrl</th><th>Alt</th></tr>";
+ var keyEvents = [];
+ var maxLogSize = 50;
+ var logDiv = document.getElementById("keylogger");
+
+ function initializeLogger() {
+ logDiv.innerHTML = tableHead + "</table>";
+ keyEvents = [];
+ }
+
+ function logKeyEvent(keyEvent) {
+ var eventCopy = {
+ type: keyEvent.getType(),
+ iden: keyEvent.getKeyIdentifier(),
+ keyCode: keyEvent.getKeyCode(),
+ charCode: keyEvent.getCharCode(),
+ shift: keyEvent.getDomEvent().shiftKey,
+ alt: keyEvent.getDomEvent().altKey,
+ ctrl: keyEvent.getDomEvent().ctrlKey
+ }
+ keyEvents.unshift(eventCopy);
+ keyEvents = keyEvents.slice(0, maxLogSize);
+ str = [tableHead];
+ for (var i=0; i<keyEvents.length; i++) {
+ var e = keyEvents[i];
+ str.push("<tr><td>");
+ str.push(e.type);
+ str.push("</td><td>");
+ str.push(e.iden);
+ str.push("</td><td>");
+ str.push(e.keyCode);
+ str.push("</td><td>");
+ str.push(e.charCode);
+ str.push("</td><td>");
+ str.push(e.shift);
+ str.push("</td><td>");
+ str.push(e.ctrl);
+ str.push("</td><td>");
+ str.push(e.alt);
+ str.push("</td></tr>");
+ }
+ str.push("</table>");
+ logDiv.innerHTML = str.join("");
+ logDiv.scrollTop = 0;
+ }
+
+ initializeLogger();
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.addEventListener("keydown", logKeyEvent);
+ d.addEventListener("keypress", logKeyEvent);
+ d.addEventListener("keyinput", logKeyEvent);
+ d.addEventListener("keyup", logKeyEvent);
+
+ var button = new qx.ui.form.Button("clear");
+ button.set({
+ left: 550,
+ top: 40
+ });
+ button.addEventListener("execute", initializeLogger);
+ button.addToDocument();
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_1.html
new file mode 100644
index 0000000000..9707541043
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_1.html
@@ -0,0 +1,172 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Some tests for qx.ui.basic.Label. Click on the third and fifth button like widget to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c1.setLeft(20);
+ c1.setTop(48);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c1.setPadding(2, 4);
+
+
+
+
+ var c2 = new qx.ui.basic.Label("<h1>Welcome to the qooxdoo universe</h1><p>Enjoy the new era of web interface development.</p>");
+
+ c2.setLeft(20);
+ c2.setTop(100);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c2.setPadding(8);
+
+
+
+
+ var c3 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c3.setLeft(20);
+ c3.setTop(200);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c3.setPadding(4, 6);
+ c3.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ c3.addEventListener("click", function() {
+ this.getHtml() == "Delete temporary data" ? this.setHtml("Thank you") : this.setHtml("Delete temporary data");
+ });
+
+
+
+
+ var c4 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c4.setLeft(20);
+ c4.setTop(250);
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c4.setPadding(2, 4);
+ c4.setStyleProperty("fontSize", "16px");
+ c4.setStyleProperty("fontWeight", "bold");
+ c4.setStyleProperty("fontStyle", "italic");
+ c4.setStyleProperty("textDecoration", "underline");
+ c4.setStyleProperty("textTransform", "uppercase");
+ c4.setFontPropertiesProfile("extended");
+
+
+
+
+
+ var c5 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5.setPadding(4, 6);
+ c5.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ c5.addEventListener("click", function() {
+ this.getHtml() == "Delete temporary data" ? this.setHtml("Thank you<br/>All your personal data was just deleted.<br/>Have Fun!") : this.setHtml("Delete temporary data");
+ });
+
+
+ var c5w = new qx.ui.layout.CanvasLayout;
+ c5w.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5w.setPadding(8);
+ c5w.setLeft(20);
+ c5w.setTop(350);
+ c5w.setWidth("auto");
+ c5w.setHeight("auto");
+
+ c5w.add(c5);
+ d.add(c5w);
+
+
+
+
+ var c6 = new qx.ui.basic.Label("This is a long label", 50);
+
+ c6.setTop(450);
+ c6.setLeft(20);
+ c6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+
+ var c7 = new qx.ui.basic.Label("This is a long label with long-words and more text", 100, null, false);
+
+ c7.setTop(490);
+ c7.setLeft(20);
+ c7.setPadding(4);
+ c7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c7.setBackgroundColor("white");
+
+ c7.addEventListener("click", function(e)
+ {
+ switch(this.getWidth())
+ {
+ case 50:
+ this.setWidth(100);
+ break;
+
+ case 100:
+ this.setWidth(150);
+ break;
+
+ case 150:
+ this.setWidth(200);
+ break;
+
+ case 200:
+ this.setWidth("auto");
+ break;
+
+ case "auto":
+ this.setWidth(50);
+ break;
+ };
+ });
+
+
+ var parent8 = new qx.ui.layout.VerticalBoxLayout();
+ parent8.set({ top:48, left:500, width:150, height:150, spacing:5,
+ border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ parent8.setPadding(5);
+ parent8.addEventListener("click", function() {
+ this.setWidth((this.getWidth() == 150) ? 200 : 150);
+ });
+
+ var clickHint = new qx.ui.basic.Label("Click me");
+ clickHint.set({ width:"100%", height:"auto", wrap:true,
+ border:qx.renderer.border.BorderPresets.getInstance().thinOutset });
+ parent8.add(clickHint);
+
+ var wrapLabel1 = new qx.ui.basic.Label("This is a label having a auto-height that needs wrapping");
+ wrapLabel1.set({ width:"100%", height:"auto", wrap:true,
+ border:qx.renderer.border.BorderPresets.getInstance().thinOutset });
+ parent8.add(wrapLabel1);
+
+ var wrapLabel2 = new qx.ui.basic.Label("This is a label having a auto-height that needs wrapping");
+ wrapLabel2.set({ width:"100%", height:"auto", wrap:true,
+ border:qx.renderer.border.BorderPresets.getInstance().thinOutset });
+ parent8.add(wrapLabel2);
+
+
+ d.add(c1, c2, c3, c4, c5w, c6, c7, parent8);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_2.html
new file mode 100644
index 0000000000..3b5660369a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_2.html
@@ -0,0 +1,40 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ qx.ui.basic.Label Stress Test
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c;
+
+ for (var i=0; i<10; i++)
+ {
+ for (var j=0; j<20; j++)
+ {
+ c = new qx.ui.basic.Label("Test " + i + "|" + j);
+
+ c.setLeft(20+(i*60));
+ c.setTop(48+(j*30));
+
+ d.add(c);
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_3.html
new file mode 100644
index 0000000000..14ae31e166
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_3.html
@@ -0,0 +1,177 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for qx.ui.basic.Label. Click on the third and fifth button like widget to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.</p>
+ <p>Tests for qx.renderer.font.Font added</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c1.setLeft(20);
+ c1.setTop(48);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c1.setPadding(2, 4);
+
+ c1.addEventListener("mouseover", function(e) {
+ this.setFont("20px bold");
+ });
+
+ c1.addEventListener("mouseout", function(e) {
+ this.setFont(null);
+ });
+
+
+
+ var c2 = new qx.ui.basic.Label("<h1>Welcome to the qooxdoo universe</h1><p>Enjoy the new era of web interface development.</p>");
+
+ c2.setLeft(20);
+ c2.setTop(100);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c2.setPadding(8);
+
+
+
+
+ var c3 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c3.setLeft(20);
+ c3.setTop(200);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c3.setPadding(4, 6);
+ c3.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ c3.addEventListener("click", function()
+ {
+ if (this.getHtml() == "Delete temporary data")
+ {
+ this.setHtml("Thank you");
+ this.setColor("red");
+ this.setFont("bold");
+ }
+ else
+ {
+ this.setHtml("Delete temporary data");
+ this.setColor(null);
+ this.setFont(null);
+ };
+ });
+
+
+
+
+ /*
+ var c4f = new qx.renderer.font.Font(16, "Times New Roman");
+ c4f.setBold(true);
+ c4f.setItalic(true);
+ c4f.setUnderline(true);
+ */
+
+ var c4 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c4.setLeft(20);
+ c4.setTop(250);
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c4.setPadding(2, 4);
+ // c4.setFont(c4f);
+
+ // implicit usage of qx.renderer.font.FontCache
+ c4.setFont("16px Times New Roman bold italic underline");
+
+
+
+
+
+ var c5 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5.setPadding(4, 6);
+ c5.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ // re-use instance from above
+ // c5.setFont("16px Times New Roman bold italic underline");
+
+ // this is also possible and will be automatically converted to a single space seperated string
+ c5.setFont(["16px", "Times New Roman", "bold", "italic", "underline"]);
+
+ c5.addEventListener("click", function() {
+ this.getHtml() == "Delete temporary data" ? this.setHtml("Thank you<br/>All your personal data was just deleted.<br/>Have Fun!") : this.setHtml("Delete temporary data");
+ });
+
+
+ var c5w = new qx.ui.layout.CanvasLayout;
+ c5w.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5w.setPadding(8);
+ c5w.setLeft(20);
+ c5w.setTop(350);
+ c5w.setWidth("auto");
+ c5w.setHeight("auto");
+
+ c5w.add(c5);
+ d.add(c5w);
+
+
+
+
+ var c6 = new qx.ui.basic.Label("This is a long label", 50);
+
+ c6.setTop(450);
+ c6.setLeft(20);
+ c6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+
+ var c7 = new qx.ui.basic.Label("This is a long label with long-words and more text", 100, null, false);
+
+ c7.setTop(490);
+ c7.setLeft(20);
+ c7.setPadding(4);
+ c7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c7.setBackgroundColor("white");
+
+ c7.addEventListener("click", function(e)
+ {
+ switch(this.getWidth())
+ {
+ case 50:
+ this.setWidth(100);
+ break;
+
+ case 100:
+ this.setWidth(150);
+ break;
+
+ case 150:
+ this.setWidth(200);
+ break;
+
+ case 200:
+ this.setWidth("auto");
+ break;
+
+ case "auto":
+ this.setWidth(50);
+ break;
+ };
+ });
+
+ d.add(c1, c2, c3, c4, c5w, c6, c7);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_4.html
new file mode 100644
index 0000000000..efbb76d0d8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Label_4.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing mnemonic support.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c1.setLeft(20);
+ c1.setTop(48);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c1.setPadding(2, 4);
+ c1.setMnemonic("q");
+
+ d.add(c1);
+
+
+
+ var c2 = new qx.ui.basic.Label("A qx.ui.basic.Label with some more text", "T");
+
+ c2.setLeft(20);
+ c2.setTop(98);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c2.setPadding(2, 4);
+
+ d.add(c2);
+
+
+
+
+ var c3 = new qx.ui.basic.Label("A qx.ui.basic.Label with some more text", "C");
+
+ c3.setLeft(20);
+ c3.setTop(148);
+ c3.setWidth(80);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c3.setPadding(2, 4);
+
+ d.add(c3);
+
+
+
+ var c4 = new qx.ui.basic.Label("Well done guy", "Q");
+
+ c4.setLeft(20);
+ c4.setTop(198);
+ c4.setWidth(70);
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c4.setPadding(2, 4);
+
+ d.add(c4);
+
+
+
+ var c5 = new qx.ui.basic.Label("Well done guy", "Q");
+
+ c5.setLeft(20);
+ c5.setTop(248);
+ c5.setWidth("10%");
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c5.setPadding(2, 4);
+
+ d.add(c5);
+
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("Hello World", "icon/48/penguin.png")
+
+ a1.setLocation(250, 48);
+ a1.setWidth(100);
+ a1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ a1.setHorizontalChildrenAlign("left");
+
+ a1.getLabelObject().setMnemonic("H");
+ a1.getLabelObject().setWidth(50);
+
+ d.add(a1);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Leak_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Leak_1.html
new file mode 100644
index 0000000000..86612dc584
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Leak_1.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Leak-Test</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ // Does not leak
+ // *****
+
+ // var i1 = new qx.io.image.Preloader(qx.manager.object.ImageManager.buildUri("icon/48/hardwareinfo.png"));
+
+
+ // Leaks: +2MB
+ // *****
+
+ var w1 = new qx.ui.basic.Terminator;
+ qx.ui.core.ClientDocument.getInstance().add(w1);
+
+
+
+
+
+ // Does not leak
+ // *****
+ /*
+ var w1 = new qx.ui.basic.Terminator;
+ w1.setTop(48);
+ w1.setLeft(20);
+ qx.ui.core.ClientDocument.getInstance().add(w1);
+ */
+
+
+ // Leaks +2MB
+ // *****
+ /*
+ var i1 = new qx.ui.basic.Image("icon/48/hardwareinfo.png");
+ with(i1)
+ {
+ setTop(48);
+ setLeft(20);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(i1);
+ */
+
+
+
+
+
+
+ //var t1 = new QxTarget;
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Link_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Link_1.html
new file mode 100644
index 0000000000..bb10f53149
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Link_1.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing link widget.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var l1 = new qx.ui.embed.LinkEmbed("Open Google", "http://www.google.com");
+
+ l1.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(l1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_1.html
new file mode 100644
index 0000000000..7353456b6f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(qx.ui.core.ClientDocument.getInstance(), 20, 448);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_10.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_10.html
new file mode 100644
index 0000000000..65b73f72da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_10.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView in a qx.ui.window.Window.</p>
+ <p>I am sorry, but this seems not to be fixable with the current layouter stuff in qooxdoo.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var w = new qx.ui.window.Window("ListView");
+
+ w.setWidth(400);
+ w.setHeight(250);
+ w.setLocation(50, 50);
+
+ qx.ui.core.ClientDocument.getInstance().add(w);
+
+
+ /*
+ var cont = new qx.ui.layout.CanvasLayout;
+
+ cont.setEdge(0);
+ cont.setBackgroundColor("white");
+
+ w.add(cont);
+ */
+
+
+
+
+
+
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBackgroundColor("white");
+ lv.setEdge(0);
+ lv.setWidth(null);
+ lv.setHeight(null);
+
+ w.add(lv);
+ //cont.add(lv);
+
+
+
+
+ w.open();
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(qx.ui.core.ClientDocument.getInstance(), 20, 448);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_2.html
new file mode 100644
index 0000000000..61b7ca8d24
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_2.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells with an additional link.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }, open : { uri : "http://www.google.com/search?q=" + i, html : "Open " + i }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" },
+ open : { label : "", width : 100, type : "link" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_3.html
new file mode 100644
index 0000000000..82db6489f2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Now with icons inside the header cells.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", icon : "icon/16/contents.png", width : 100, type : "text" },
+ size: { label : "Size", icon : "icon/16/floppy.png", width : 50, type : "text", align : "right" },
+ type : { label : "Type", icon : "icon/16/notes.png", width : 80, type : "text" },
+ modified : { label : "Last Modified", icon : "icon/16/configure.png", width : 150, type : "text" },
+ rights : { label : "Rights", icon : "icon/16/group-event.png", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_4.html
new file mode 100644
index 0000000000..7c884f93f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_4.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>This qx.ui.listview.ListView will be resized with the window.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setLocation(20, 48);
+ lv.setRight(335);
+ lv.setBottom(48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_5.html
new file mode 100644
index 0000000000..4823e1394e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_5.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>This qx.ui.listview.ListView will be resized with the window.</p>
+ <p>Using percents for columns.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : "30%", type : "text" },
+ size: { label : "Size", width : "10%", type : "text", align : "right" },
+ type : { label : "Type", width : "15%", type : "text" },
+ modified : { label : "Last Modified", width : "20%", type : "text" },
+ rights : { label : "Rights", width: "15%", type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setLocation(20, 48);
+ lv.setRight(335);
+ lv.setBottom(48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_6.html
new file mode 100644
index 0000000000..81654bb883
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_6.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Supports minimum and maximum width of columns.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, minWidth : "auto", type : "text" },
+ size: { label : "Size", width : 50, minWidth : 50, type : "text" },
+ type : { label : "Type", width : 80, minWidth : 80, type : "text" },
+ modified : { label : "Last Modified", width : 100, minWidth : 100, maxWidth : 100, type : "text" },
+ rights : { label : "Rights", width: 80, minWidth : 50, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_7.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_7.html
new file mode 100644
index 0000000000..44babe954c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_7.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Added some buttons to fill/clear the list dynamically.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(500);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+ function add(nu)
+ {
+ nu = nu||10;
+
+ for (var i=0, t; i<nu; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + ld.length }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ lv.updateSort();
+ lv.update();
+ };
+
+ function remove(nu)
+ {
+ nu = Math.min(ld.length, nu || 10);
+
+ ld.splice(ld.length-nu, nu);
+
+ lv.updateSort();
+ lv.update();
+ };
+
+ function clear()
+ {
+ ld.removeAll();
+ lv.update();
+ };
+
+ var btnAdd10 = new qx.ui.form.Button("Add 10", "icon/16/insert-table-row.png");
+ var btnAdd50 = new qx.ui.form.Button("Add 50", "icon/16/insert-table-row.png");
+ var btnAdd100 = new qx.ui.form.Button("Add 100", "icon/16/insert-table-row.png");
+ var btnAdd1000 = new qx.ui.form.Button("Add 1000", "icon/16/insert-table-row.png");
+
+ var btnRemove10 = new qx.ui.form.Button("Remove 10", "icon/16/delete-table-row.png");
+ var btnRemove50 = new qx.ui.form.Button("Remove 50", "icon/16/delete-table-row.png");
+ var btnRemove100 = new qx.ui.form.Button("Remove 100", "icon/16/delete-table-row.png");
+ var btnRemove1000 = new qx.ui.form.Button("Remove 1000", "icon/16/delete-table-row.png");
+
+ var btnClear = new qx.ui.form.Button("Clear", "icon/16/delete-table.png");
+
+ btnAdd10.setLocation(550, 48);
+ btnAdd50.setLocation(550, 78);
+ btnAdd100.setLocation(550, 108);
+ btnAdd1000.setLocation(550, 138);
+
+ btnRemove10.setLocation(550, 188);
+ btnRemove50.setLocation(550, 218);
+ btnRemove100.setLocation(550, 248);
+ btnRemove1000.setLocation(550, 278);
+
+ btnClear.setLocation(550, 328);
+
+ btnAdd10.addEventListener("execute", function(e) { add(10); });
+ btnAdd50.addEventListener("execute", function(e) { add(50); });
+ btnAdd100.addEventListener("execute", function(e) { add(100); });
+ btnAdd1000.addEventListener("execute", function(e) { add(1000); });
+
+ btnRemove10.addEventListener("execute", function(e) { remove(10); });
+ btnRemove50.addEventListener("execute", function(e) { remove(50); });
+ btnRemove100.addEventListener("execute", function(e) { remove(100); });
+ btnRemove1000.addEventListener("execute", function(e) { remove(1000); });
+
+ btnClear.addEventListener("execute", function(e) { clear(); });
+
+ qx.ui.core.ClientDocument.getInstance().add(btnAdd10, btnAdd50, btnAdd100, btnAdd1000, btnRemove10, btnRemove50, btnRemove100, btnRemove1000, btnClear);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_8.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_8.html
new file mode 100644
index 0000000000..91df8ceb8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_8.html
@@ -0,0 +1,121 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>And with drag and drop between the two qx.ui.listview.ListViews.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc1 =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lc2 =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+
+ function handleDrag(e)
+ {
+ e.addData("qx.ui.listview.ListViewEntries", qx.lang.Array.copy(e.getCurrentTarget().getManager().getSelectedItems()));
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDrop(e)
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ switch(e.getAction())
+ {
+ case "move":
+ sourceView.getPane().getManager().setSelectedItems([]);
+ sourceView.getPane().getManager().setAnchorItem(null);
+ sourceView.getPane().getManager().setLeadItem(null);
+
+ for (var i=0, l=data.length; i<l; i++)
+ {
+ qx.lang.Array.remove(sourceView.getData(), data[i]);
+ destView.getData().push(data[i]);
+ };
+
+ destView.getPane().getManager().setSelectedItems(data);
+
+ sourceView.updateSort();
+ destView.updateSort();
+
+ sourceView.update();
+ destView.update();
+ };
+ };
+
+
+
+
+
+ var sourceView = new qx.ui.listview.ListView(ld, lc1);
+
+ sourceView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ sourceView.setBackgroundColor("white");
+ sourceView.setWidth(600);
+ sourceView.setHeight(250);
+ sourceView.setLocation(20, 48);
+
+ sourceView.getPane().getManager().setDragSelection(false);
+ sourceView.getPane().addEventListener("dragstart", handleDrag);
+
+ qx.ui.core.ClientDocument.getInstance().add(sourceView);
+
+
+
+
+ var destView = new qx.ui.listview.ListView([], lc2);
+
+ destView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ destView.setBackgroundColor("white");
+ destView.setWidth(600);
+ destView.setHeight(250);
+ destView.setLocation(20, 318);
+
+ destView.getPane().getManager().setDragSelection(false);
+ destView.getPane().setDropDataTypes(["qx.ui.listview.ListViewEntries"]);
+ destView.getPane().addEventListener("dragdrop", handleDrop);
+
+ qx.ui.core.ClientDocument.getInstance().add(destView);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_9.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_9.html
new file mode 100644
index 0000000000..990e591613
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ListView_9.html
@@ -0,0 +1,119 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>And with drag and drop between the two qx.ui.listview.ListViews.</p>
+ <p>Reduced columns for second listview.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc1 =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lc2 =
+ {
+ name : { label : "Name", width : 200, type : "text", sortable : true, sortProp : "text" },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" }
+ };
+
+
+ function handleDrag(e)
+ {
+ e.addData("qx.ui.listview.ListViewEntries", qx.lang.Array.copy(e.getCurrentTarget().getManager().getSelectedItems()));
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDrop(e)
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ switch(e.getAction())
+ {
+ case "move":
+ sourceView.getPane().getManager().setSelectedItems([]);
+ sourceView.getPane().getManager().setAnchorItem(null);
+ sourceView.getPane().getManager().setLeadItem(null);
+
+ for (var i=0, l=data.length; i<l; i++)
+ {
+ qx.lang.Array.remove(sourceView.getData(), data[i]);
+ destView.getData().push(data[i]);
+ };
+
+ destView.getPane().getManager().setSelectedItems(data);
+
+ sourceView.updateSort();
+ destView.updateSort();
+
+ sourceView.update();
+ destView.update();
+ };
+ };
+
+
+
+
+
+ var sourceView = new qx.ui.listview.ListView(ld, lc1);
+
+ sourceView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ sourceView.setBackgroundColor("white");
+ sourceView.setWidth(600);
+ sourceView.setHeight(250);
+ sourceView.setLocation(20, 48);
+
+ sourceView.getPane().getManager().setDragSelection(false);
+ sourceView.getPane().addEventListener("dragstart", handleDrag);
+
+ qx.ui.core.ClientDocument.getInstance().add(sourceView);
+
+
+
+
+ var destView = new qx.ui.listview.ListView([], lc2);
+
+ destView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ destView.setBackgroundColor("white");
+ destView.setWidth(600);
+ destView.setHeight(250);
+ destView.setLocation(20, 318);
+
+ destView.getPane().getManager().setDragSelection(false);
+ destView.getPane().setDropDataTypes(["qx.ui.listview.ListViewEntries"]);
+ destView.getPane().addEventListener("dragdrop", handleDrop);
+
+ qx.ui.core.ClientDocument.getInstance().add(destView);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_1.html
new file mode 100644
index 0000000000..c610878d02
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_1.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>List implementation. Now testing auto dimensions.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var l1 = new qx.ui.form.List;
+
+ l1.set({ top : 48, left: 20, height: 200, width: "auto", overflow : "scrollY" });
+
+ var item;
+ for( var i=1; i<=35; i++ )
+ {
+ // item = new qx.ui.form.ListItem("Item No " + i);
+ item = new qx.ui.form.ListItem("Item No " + i, "icon/" + ((i % 4) ? "16" : "48") + "/folder.png");
+
+ !(i % 9) && (item.setEnabled(false));
+
+ l1.add(item);
+ };
+
+ d.add(l1);
+
+ var l2 = new qx.ui.form.List;
+
+ l2.set({ top : 48, left: 400, height: 200, width: "auto" });
+ l2.getManager().setMultiSelection(false);
+ //l2.setOverflow("scrollY");
+ l2.setHeight("auto");
+
+ var l2l = [ "red", "violett", "rose", "blue", "green", "cyan", "magenta", "yellow", "brown", "orange", "black", "white", "grey", "gray", "brown" ];
+
+ for (var i=0; i<l2l.length; i++) {
+ l2.add(new qx.ui.form.ListItem(l2l[i]));
+ };
+
+ d.add(l2);
+
+
+
+
+ var c1 = new qx.ui.form.CheckBox("Enable Multi-Selection");
+ var c2 = new qx.ui.form.CheckBox("Enable Drag-Selection");
+ var c3 = new qx.ui.form.CheckBox("Allow Deselection");
+ var c4 = new qx.ui.form.CheckBox("Enable Inline Find");
+
+ c1.setLocation(180, 48);
+ c2.setLocation(180, 68);
+ c3.setLocation(180, 88);
+ c4.setLocation(180, 108);
+
+ d.add(c1, c2, c3, c4);
+
+ c1.setChecked(true);
+ c2.setChecked(true);
+ c3.setChecked(true);
+ c4.setChecked(true);
+
+ c1.addEventListener("changeChecked", function(e) {
+ l1.getManager().setMultiSelection(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ l1.getManager().setDragSelection(e.getData());
+ });
+
+ c3.addEventListener("changeChecked", function(e) {
+ l1.getManager().setCanDeselect(e.getData());
+ });
+
+ c4.addEventListener("changeChecked", function(e) {
+ l1.setEnableInlineFind(e.getData());
+ });
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Label", "label");
+ var rd2 = new qx.ui.form.RadioButton("Show Icon", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Both", "both");
+
+ rd1.set( { left: 180, top: 128 } );
+ rd2.set( { left: 180, top: 148 } );
+ rd3.set( { left: 180, top: 168 } );
+
+ d.add(rd1, rd2, rd3);
+
+ rd3.setChecked(true);
+
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2, rd3]);
+
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ for( var i=0; i<l1.getChildrenLength(); i++ ) {
+ l1.getChildren()[i].setShow(e.getData().getValue());
+ };
+ });
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 200, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_2.html
new file mode 100644
index 0000000000..d7c51c24fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_2.html
@@ -0,0 +1,111 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>List implementation</p>
+ <p>Drag and Drop Handling added</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ // Create list to drag from
+
+
+ var sourceList = new qx.ui.form.List();
+ sourceList.setWidth(100);
+ sourceList.setHeight(250);
+ sourceList.setLeft(20);
+ sourceList.setTop(48);
+
+ // Set vertical scroll bar to always visible
+ sourceList.setOverflow("scrollY");
+ // Set selection mode to single explicitly
+ // sourceList.getManager().setMultiSelection(false);
+ // Set drag selection mode to off
+ sourceList.getManager().setDragSelection(false);
+
+ // Add items to source list
+
+ for (var i = 1; i <= 10; i++)
+ {
+ var item = new qx.ui.form.ListItem("Item " + i);
+ item.addEventListener("dragstart", handleStartDrag);
+ sourceList.add(item);
+ };
+
+ doc.add(sourceList);
+
+
+
+ // Create list to drop to
+
+ var destList = new qx.ui.form.List();
+ destList.setWidth(100);
+ destList.setHeight(250);
+ destList.setLeft(320);
+ destList.setTop(48);
+
+ // Set vertical scroll bar to always visible
+ destList.setOverflow("scrollY");
+ // Set selection mode to single explicitly
+ // destList.getManager().setMultiSelection(false);
+ // Set drag selection mode to off
+ destList.getManager().setDragSelection(false);
+
+ doc.add(destList);
+
+ // Define event handlers
+
+ function handleStartDrag(e)
+ {
+ e.addData("ListItems", qx.lang.Array.copy(sourceList.getManager().getSelectedItems()));
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleListDrop(e)
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ // this.debug("Drag&Drop Action: " + e.getAction());
+
+ switch(e.getAction())
+ {
+ case "move":
+ sourceList.getManager().setSelectedItems([]);
+ sourceList.getManager().setAnchorItem(null);
+ sourceList.getManager().setLeadItem(null);
+
+ for (var i=0, l=data.length; i<l; i++) {
+ destList.add(data[i]);
+ };
+
+ destList.getManager().setSelectedItems(data);
+ break;
+ };
+ };
+
+
+
+ // Set event properties for destination list
+
+ destList.setDropDataTypes(["ListItems"]);
+ destList.addEventListener("dragdrop", handleListDrop);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_3.html
new file mode 100644
index 0000000000..0ce48f0555
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/List_3.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.form.List Item Sorting demo</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var list = new qx.ui.form.List(); list.set({top:50,left:50,height:150,width:100});
+
+ list.add(new qx.ui.form.ListItem('Will',null,'1'));
+ list.add(new qx.ui.form.ListItem('Anna',null,'2'));
+ list.add(new qx.ui.form.ListItem('Tom',null,'3'));
+ list.add(new qx.ui.form.ListItem('Diana',null,'4'));
+ list.add(new qx.ui.form.ListItem('Pete',null,'5'));
+ list.add(new qx.ui.form.ListItem('Carol',null,'6'));
+
+ var btn1 = new qx.ui.form.Button('Sort By Label'); btn1.set({top:50,left:200});
+ btn1.addEventListener('click',function(e){
+ list.sortItemsByString();
+ });
+
+ var btn2 = new qx.ui.form.Button('Sort By Label Reverse'); btn2.set({top:80,left:200});
+ btn2.addEventListener('click',function(e){
+ list.sortItemsByString(true);
+ });
+
+ var btn3 = new qx.ui.form.Button('Sort By Value'); btn3.set({top:140,left:200});
+ btn3.addEventListener('click',function(e){
+ list.sortItemsByValue();
+ });
+
+ var btn4 = new qx.ui.form.Button('Sort By Value Reverse'); btn4.set({top:170,left:200});
+ btn4.addEventListener('click',function(e){
+ list.sortItemsByValue(true);
+ });
+
+ qx.ui.core.ClientDocument.getInstance().add(btn1,btn2,btn3,btn4);
+ qx.ui.core.ClientDocument.getInstance().add(list);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_1.html
new file mode 100644
index 0000000000..87791f948d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_1.html
@@ -0,0 +1,129 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.menu.Menu Implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists");
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting");
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font");
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo");
+ var mb1_06 = new qx.ui.menu.Button("Redo");
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png");
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png");
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png");
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png");
+ var mb1_11 = new qx.ui.menu.Button("Select All");
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search");
+ var mb1_13 = new qx.ui.menu.Button("Search Again");
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.dom.Location.getPageBoxLeft(el));
+ m1.setTop(qx.dom.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 180, 48);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 380, 48);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_2.html
new file mode 100644
index 0000000000..0b2d136952
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Menu_2.html
@@ -0,0 +1,205 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.menu.Menu Implementation.</p>
+ <p>Added qx.client.Command support tests.</p>
+ <p>Create the menu instances on the first opening.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var q1 = new qx.client.Command("Ctrl+Z");
+ q1.addEventListener("execute", function(e) {
+ alert("Undo");
+ });
+
+ var q2 = new qx.client.Command("Ctrl+Y");
+ q2.addEventListener("execute", function(e) {
+ alert("Redo");
+ });
+
+ var q3 = new qx.client.Command("Ctrl+X");
+ q3.addEventListener("execute", function(e) {
+ alert("Cut");
+ });
+
+ var q4 = new qx.client.Command("Ctrl+C");
+ q4.addEventListener("execute", function(e) {
+ alert("Copy");
+ });
+
+ var q5 = new qx.client.Command("Ctrl+V");
+ q5.addEventListener("execute", function(e) {
+ alert("Paste");
+ });
+
+ var q6 = new qx.client.Command("Del");
+ q6.addEventListener("execute", function(e) {
+ alert("Delete");
+ });
+
+ var q7 = new qx.client.Command("Ctrl+A");
+ q7.addEventListener("execute", function(e) {
+ alert("Select All");
+ });
+
+ var q8 = new qx.client.Command("Ctrl+F");
+ q8.addEventListener("execute", function(e) {
+ alert("Search");
+ });
+
+ var q9 = new qx.client.Command("Ctrl+G");
+ q9.addEventListener("execute", function(e) {
+ alert("Search Again");
+ });
+
+ var q10 = new qx.client.Command();
+ q10.addEventListener("execute", function(e) {
+ alert("Syntax Highlighting");
+ });
+
+ var q11 = new qx.client.Command("Esc");
+ q11.addEventListener("execute", function(e) {
+ alert("Escape");
+ });
+
+ var q12 = new qx.client.Command(null, qx.event.type.KeyEvent.keys.space);
+ q12.addEventListener("execute", function(e) {
+ alert("Space");
+ });
+
+
+ var m1, m2, m3;
+
+ function createMenus()
+ {
+ m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+
+
+ m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+
+ m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists", null, q12);
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting", null, q10);
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font", null, q11);
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, q1);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, q2);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", q3);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", q4);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", q5);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", q6);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, q7);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, q8);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, q9);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+ };
+
+
+
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (!m1) {
+ createMenus();
+ };
+
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.dom.Location.getPageBoxLeft(el));
+ m1.setTop(qx.dom.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+
+
+
+
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 180, 48);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 380, 48);
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Node_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Node_1.html
new file mode 100644
index 0000000000..8fed535e7e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Node_1.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.embed.NodeEmbed makes a dom node a widget.</p>
+ </div>
+
+ <div id="text1" style="display:none">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui <strong>qooxdoo</strong> blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.</div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var n = new qx.ui.embed.NodeEmbed("text1");
+
+ n.setLocation(20, 48);
+ n.setRight(335);
+ n.setBottom(48);
+ n.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ n.setBackgroundColor("white");
+ n.setColor("blue");
+ n.setPadding(10);
+
+ d.add(n);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Pollution_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Pollution_1.html
new file mode 100644
index 0000000000..64699060da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Pollution_1.html
@@ -0,0 +1,271 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test global namespace pollution through qooxdoo.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+
+ // setWidth("auto");
+ };
+
+ var btns1 = [
+ { type : "button", icon : "file-new", text : "New" },
+ { type : "separator" },
+ { type : "button", icon : "edit-copy", text : "Copy" },
+ { type : "button", icon : "edit-cut", text : "Cut" },
+ { type : "button", icon : "edit-paste", text : "Paste" }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "up", text : "Upload" },
+ { type : "button", icon : "down", text : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "help", text : "Help" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var useParts = true;
+
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.text, "icon/22/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ d.addEventListener("changeLayout", changeLayout, o);
+ d.addEventListener("changeSize", changeSize, o);
+
+ o.addEventListener("execute", buttonExecute);
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ setChecked(true);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e) {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+ // Icon Sizes
+ var b3 = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/colors.png");
+
+ with(b3)
+ {
+ setTop(140);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b3.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+
+ var b4 = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/colors.png");
+
+ with(b4)
+ {
+ setTop(170);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b4.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+
+ d.add(b3, b4);
+
+
+
+
+
+ var pollTxt = new qx.ui.embed.HtmlEmbed;
+ pollTxt.setLocation(20, 300);
+ pollTxt.setRight(450);
+ pollTxt.setBottom(48);
+ pollTxt.setOverflow("auto");
+ pollTxt.setBorder("1px solid black");
+ pollTxt.setBackgroundColor("white");
+ qx.ui.core.ClientDocument.getInstance().add(pollTxt);
+
+ var pollWinBtn = new qx.ui.form.Button("Print Window");
+ pollWinBtn.setTop(300);
+ pollWinBtn.setRight(335);
+ qx.ui.core.ClientDocument.getInstance().add(pollWinBtn);
+
+ var pollDocBtn = new qx.ui.form.Button("Print Document");
+ pollDocBtn.setTop(330);
+ pollDocBtn.setRight(335);
+ qx.ui.core.ClientDocument.getInstance().add(pollDocBtn);
+
+ var pollBodyBtn = new qx.ui.form.Button("Print Body");
+ pollBodyBtn.setTop(360);
+ pollBodyBtn.setRight(335);
+ qx.ui.core.ClientDocument.getInstance().add(pollBodyBtn);
+
+ pollWinBtn.addEventListener("execute", function(e) {
+ pollTxt.setHtml(qx.dev.Pollution.getHtmlTable("window"));
+ });
+
+ pollDocBtn.addEventListener("execute", function(e) {
+ pollTxt.setHtml(qx.dev.Pollution.getHtmlTable("document"));
+ });
+
+ pollBodyBtn.addEventListener("execute", function(e) {
+ pollTxt.setHtml(qx.dev.Pollution.getHtmlTable("body"));
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_1.html
new file mode 100644
index 0000000000..3dc6e634a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_1.html
@@ -0,0 +1,106 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for the qx.ui.popup.Popup widget. qx.ui.popup.Popups are planned as the source constructor for tooltips, menus, ...</p>
+ <p>There is also a qx.manager.object.PopupManager which hides all registered qx.ui.popup.Popup instances which are configured to auto hide.
+ This is a nice method to omit to show more than one qx.ui.popup.Popup together (omit multiple QxTooltips, ...).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var w1 = new qx.ui.form.Button("Press");
+ with(w1)
+ {
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w1);
+
+
+ var w2 = new qx.ui.form.Button("Press");
+ with(w2)
+ {
+ setTop(48);
+ setLeft(140);
+ setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w2);
+
+
+
+
+
+
+
+
+ var p1 = new qx.ui.popup.Popup;
+ d.add(p1);
+
+ var a1 = new qx.ui.basic.Atom("Hello World #1", "icon/16/paint.png");
+ p1.add(a1);
+
+ with(p1)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#FFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w1.addEventListener("click", function(e)
+ {
+ p1.setTop(e.getPageY() + 3);
+ p1.setLeft(e.getPageX() + 3);
+ p1.show();
+ p1.bringToFront();
+ });
+
+
+
+ var p2 = new qx.ui.popup.Popup;
+ d.add(p2);
+
+ var a2 = new qx.ui.basic.Atom("Hello World #2", "icon/32/clock.png");
+ p2.add(a2);
+
+ with(p2)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#DFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w2.addEventListener("click", function(e)
+ {
+ p2.setTop(e.getPageY() + 3);
+ p2.setLeft(e.getPageX() + 3);
+ p2.show();
+ p2.bringToFront();
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_2.html
new file mode 100644
index 0000000000..f71e867ae2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Popups_2.html
@@ -0,0 +1,102 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for the qx.ui.popup.Popup widget. qx.ui.popup.Popups are planned as the source constructor for tooltips, menus, ...</p>
+ <p>There is also a qx.manager.object.PopupManager which hides all registered qx.ui.popup.Popup instances which are configured to auto hide.
+ This is a nice method to omit to show more than one qx.ui.popup.Popup together (omit multiple QxTooltips, ...).</p>
+ <p>In this example we use a qx.ui.popup.PopupAtom. This is a popup with an automatically included qx.ui.basic.Atom, which
+ allowes you to easily use it for messages to the user or something like this.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var w1 = new qx.ui.form.Button("Press");
+ with(w1)
+ {
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w1);
+
+
+ var w2 = new qx.ui.form.Button("Press");
+ with(w2)
+ {
+ setTop(48);
+ setLeft(140);
+ setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w2);
+
+
+
+
+
+
+
+
+ var p1 = new qx.ui.popup.PopupAtom("Hello World #1", "icon/16/paint.png");
+ d.add(p1);
+
+ with(p1)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#FFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w1.addEventListener("click", function(e)
+ {
+ p1.setTop(e.getPageY() + 3);
+ p1.setLeft(e.getPageX() + 3);
+ p1.show();
+ p1.bringToFront();
+ });
+
+
+
+ var p2 = new qx.ui.popup.PopupAtom("Hello World #2", "icon/32/clock.png");
+ d.add(p2);
+
+ with(p2)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#DFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w2.addEventListener("click", function(e)
+ {
+ p2.setTop(e.getPageY() + 3);
+ p2.setLeft(e.getPageX() + 3);
+ p2.show();
+ p2.bringToFront();
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_1.html
new file mode 100644
index 0000000000..2acd201cbb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_1.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a simple echo-style service on the server. The server
+ method accepts a string and sends back a string that says
+ "Client said: [input string]".
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var async = new qx.ui.form.CheckBox("Asynchronous (must be checked if cross-domain is selected)");
+ layout1.add(async);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ layout1.add(new qx.ui.basic.Label("Method:"));
+ var method = new qx.ui.form.TextField("echo");
+ layout1.add(method);
+
+ var layout2 = new qx.ui.layout.HorizontalBoxLayout();
+ layout2.setHeight("auto");
+ layout2.setVerticalChildrenAlign("middle");
+ layout2.setSpacing(4);
+ var message = new qx.ui.form.TextField("Hello");
+ message.setWidth(200);
+ layout2.add(message);
+ var send = new qx.ui.form.Button("Send to server");
+ layout2.add(send);
+ var abort = new qx.ui.form.Button("Abort");
+ abort.setEnabled(false);
+ layout2.add(abort);
+ layout1.add(layout2);
+
+ // We'll be setting url and service upon execute; no need to do it now.
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(10000);
+ var mycall = null;
+
+ send.addEventListener("execute", function() {
+ // Allow the user to reset the URL and Service on each call
+ rpc.setUrl(url.getValue());
+ rpc.setServiceName(service.getValue());
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ if (async.isChecked()) {
+ send.setEnabled(false);
+ abort.setEnabled(true);
+ mycall = rpc.callAsync(function(result, ex, id) {
+ mycall = null;
+ if (ex == null) {
+ alert("Async(" + id + ") result: " + result);
+ } else {
+ alert("Async(" + id + ") exception: " + ex);
+ }
+ send.setEnabled(true);
+ abort.setEnabled(false);
+ }, method.getValue(), message.getValue());
+ } else {
+ try {
+ var result = rpc.callSync(method.getValue(), message.getValue());
+ alert("Sync result: " + result);
+ } catch (ex) {
+ alert("Sync exception: " + ex);
+ }
+ }
+ });
+
+ abort.addEventListener("execute", function() {
+ rpc.abort(mycall);
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_2.html
new file mode 100644
index 0000000000..14778b3fb0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_2.html
@@ -0,0 +1,134 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This tests the ability to issue multiple asynchronous RPC calls to the
+ same service/method, and determine from which request we have received a
+ response. We issue multiple 'sleep' calls, for decreasing amounts of
+ time, and ensure that we can associate the resonses from the
+ later-issued requests to the earlier-received responses.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ /*
+ * Sigh. Both IE and Firefox follow (too strictly) RFC2616 and limit
+ * the number of simultaneous asyncronous HTTP requests to 2. We'll
+ * allow testing just 2 simultaneous requests or issuing 6 simultaneous
+ * requests. In the former case, we'll get expected results. In the
+ * latter, we'll see two at a time being processed.
+ *
+ * Note that this applies to both XmlHTTPTransport and IframeTransport.
+ * It is an HTTP limitation, not a limitation of a particular method of
+ * issuing a request.
+ */
+ var tooMany = new qx.ui.form.CheckBox("Issue more requests than IE's and Firefox's implementations of HTTP will process simultaneously");
+ layout1.add(tooMany);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var layout2 = new qx.ui.layout.HorizontalBoxLayout();
+ layout2.setHeight("auto");
+ layout2.setVerticalChildrenAlign("middle");
+ layout2.setSpacing(4);
+ var start = new qx.ui.form.Button("Start Test");
+ layout2.add(start);
+ var abort = new qx.ui.form.Button("Abort");
+ layout2.add(abort);
+ layout1.add(layout2);
+
+ // ensure there's room in the queue for all of our requests
+ qx.io.remote.RequestQueue.getInstance().setMaxConcurrentRequests(8);
+
+ // We'll be setting url and service upon execute; no need to do it now.
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(60000);
+ var mycall;
+ var mycalls = [];
+
+ start.addEventListener("execute", function() {
+ t0 = new Date().getTime();
+
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ rpc.setUrl(url.getValue());
+ rpc.setServiceName(service.getValue());
+
+ var seqnum;
+ for (i=(tooMany.isChecked() ? 30 : 10); i > 0; i-=5) {
+ /*
+ * Always issue an asynchronous request! Issuing a synchronous
+ * request can lock up the entire browser until a response is
+ * received. Bad browser developers! Bad!
+ */
+ mycall = rpc.callAsync(function(result, ex, seqnum) {
+ mycalls[seqnum] = null;
+ t = new Date().getTime() - t0;
+ if (ex == null) {
+ layout1.warn(t + ": response " + seqnum + ": " + result);
+ } else {
+ layout1.warn(t + ": exception " + seqnum + ": " + ex);
+ }
+ }, "sleep", i.toString()); // FIXME: Why is this sent as a string?
+
+ t = new Date().getTime() - t0;
+ seqnum = mycall.getSequenceNumber();
+ mycalls[seqnum] = mycall;
+ layout1.warn(t + ": request " + seqnum + " = " + i.toString());
+ }
+ });
+
+ abort.addEventListener("execute", function() {
+ for (seqnum in mycalls) {
+ if (mycalls[seqnum] !== null) {
+ rpc.abort(mycalls[seqnum]);
+ mycalls[seqnum] = null;
+ }
+ }
+ mycalls = [];
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_3.html
new file mode 100644
index 0000000000..843818d5e9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_3.html
@@ -0,0 +1,240 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a whole set of functions to test each of the primitive
+ data types. The comparison results should all end with ": true", and
+ the last test generates an Application Error (#1000). No other test
+ generates that error, so receiving it means the complete set of tests
+ was run.
+ </p>
+ <p>
+ These functions all use the synchronous interface. You should not use
+ the synchronous interface because with some browsers, the entire browser
+ environment locks up during a synchronous call. If the server hangs for
+ a minute or two, so will the browser! You have been warned.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() { var layout1 = new
+ qx.ui.layout.VerticalBoxLayout(); layout1.setTop(40); layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service path:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ var rpc;
+ var mycall = null;
+ var test;
+
+ start.addEventListener("execute", function() {
+ try
+ {
+ var rpc = new qx.io.remote.Rpc(url.getValue(), service.getValue());
+ rpc.setTimeout(10000);
+
+ test = "getCurrentTimestamp";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: now=" + result.now);
+ layout1.warn("result: jsonDate=" + result.json.toString());
+
+ test = "getInteger";
+ layout1.warn("Calling '" + test + "'");
+ var result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a number, got " + typeof(result) + ": " + (typeof(result) == "number" && isFinite(result) ? "true" : "false"));
+
+ test = "isInteger";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, 1);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an integer: " + result);
+
+ test = "getString";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + (typeof(result) == "string"));
+
+ test = "isString";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, "Hello World");
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + result);
+
+ test = "getNull";
+ layout1.warn("Calling '" + test + "'");
+ var result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + (typeof(result) == "object" && result === null ? "true" : "false"));
+
+ test = "isNull";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, null);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + result);
+
+ test = "getArrayInteger";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+
+ test = "getArrayString";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+
+ var dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, dataArray);
+ layout1.warn("result: {" + result + "}");
+
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = "Element " + i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, dataArray);
+ layout1.warn("result: {" + result + "}");
+
+ test = "getFloat";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a float: " + (typeof(result) == "number"));
+
+ test = "getObject";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an object: " + (typeof(result) == "object"));
+
+ test = "isObject";
+ layout1.warn("Calling '" + test + "'");
+ obj = new Object();
+ obj.s = "Hi there.";
+ obj.n = 23;
+ obj.o = new Object();
+ obj.o.s = "This is a test.";
+ result = rpc.callSync(test, obj);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns an object: " + result);
+
+ test = "getTrue";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = true: " + (typeof(result) == "boolean"));
+
+ test = "getFalse";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = false: " + (typeof(result) == "boolean"));
+
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, true);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, false);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+
+ Date.prototype.classname = "Date";
+ var date = new Date();
+ test = "getParam";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, date);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a date object, got " + (result.classname == date.classname));
+ layout1.warn("Returns matching time " + date.getTime() + " = " + result.getTime() + " :" + (result.getTime() == date.getTime()));
+
+ dataArray = new Array();
+ dataArray[0] = true;
+ dataArray[1] = false;
+ dataArray[2] = 1;
+ dataArray[3] = 1.1;
+ dataArray[4] = "Hello World";
+ dataArray[5] = new Array(5);
+ dataArray[6] = new Object();
+ dataArray[7] = new Date();
+
+ test = "getParams";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4], dataArray[5], dataArray[6], dataArray[7]);
+ layout1.warn("result: {" + result + "}");
+
+ for (i=0; i< dataArray.length; i++)
+ {
+ layout1.warn("Returned parameter (" + i + ") value '" + result[i] + "' matches '" + dataArray[i] + "': " + (result[i].toString() == dataArray[i].toString()));
+ layout1.warn("Returned parameter (" + i + ") type '" + typeof(result[i]) + "' matches '" + typeof(dataArray[i]) + "': " + (typeof(result[i]) == typeof(dataArray[i])));
+ };
+
+ test = "getError";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ // should never get here; we should receive an exception
+ layout1.warn("ERROR: Should have received an exception! Got: " + result);
+
+ }
+ catch (ex)
+ {
+ alert("Exception on test " + test + ": " + ex);
+ }
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_4.html
new file mode 100644
index 0000000000..628268193a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_4.html
@@ -0,0 +1,470 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a whole set of functions to test each of the primitive
+ data types. The comparison results should all end with ": true", and
+ the last test generates an Application Error (#1000). No other test
+ generates that error, so receiving it means the complete set of tests
+ was run.
+ </p>
+ <p>
+ These functions all use the asynchronous interface. This is the
+ interface that your applications should use. See the warning in
+ RPC_3.html regarding use of the synchronous interface.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service path:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ var mycall = null;
+ var test;
+ var testNum;
+
+ start.addEventListener("execute", function() {
+ var obj;
+ var date;
+ var dataArray;
+
+ /*
+ * Create an array of each of the tests. Each array element is itself
+ * an array of two function: the first to issue the test request, and
+ * the second to validate the result.
+ */
+ var tests =
+ [
+ [
+ function()
+ {
+ test = "getCurrentTimestamp";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: now=" + result.now);
+ layout1.warn("result: jsonDate=" + result.json.toString());
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a number, got " + typeof(result) + ": " + (typeof(result) == "number" && isFinite(result) ? "true" : "false"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, 1);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an integer: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + (typeof(result) == "string"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, "Hello World");
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getNull";
+ layout1.warn("Calling '" + test + "'");
+ var mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + (typeof(result) == "object" && mycall === null ? "true" : "false"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isNull";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, null);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getArrayInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getArrayString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = "Element " + i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getFloat";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a float: " + (typeof(result) == "number"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getObject";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an object: " + (typeof(result) == "object"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isObject";
+ layout1.warn("Calling '" + test + "'");
+ obj = new Object();
+ obj.s = "Hi there.";
+ obj.n = 23;
+ obj.o = new Object();
+ obj.o.s = "This is a test.";
+ mycall = rpc.callAsync(handler, test, obj);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns an object: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, false);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, true);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getTrue";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = true: " + (typeof(result) == "boolean"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getFalse";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = false: " + (typeof(result) == "boolean"));
+ }
+ ],
+
+ [
+ function()
+ {
+ Date.prototype.classname = "Date";
+ date = new Date();
+ test = "getParam";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, date);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a date object, got " + (result.classname == date.classname));
+ layout1.warn("Returns matching time " + date.getTime() + " = " + result.getTime() + " :" + (result.getTime() == date.getTime()));
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array();
+ dataArray[0] = true;
+ dataArray[1] = false;
+ dataArray[2] = 1;
+ dataArray[3] = 1.1;
+ dataArray[4] = "Hello World";
+ dataArray[5] = new Array(5);
+ dataArray[6] = new Object();
+ dataArray[7] = new Date();
+
+ test = "getParams";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4], dataArray[5], dataArray[6], dataArray[7]);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+
+ for (i=0; i< dataArray.length; i++)
+ {
+ layout1.warn("Returned parameter (" + i + ") value '" + result[i] + "' matches '" + dataArray[i] + "': " + (result[i].toString() == dataArray[i].toString()));
+ layout1.warn("Returned parameter (" + i + ") type '" + typeof(result[i]) + "' matches '" + typeof(dataArray[i]) + "': " + (typeof(result[i]) == typeof(dataArray[i])));
+ };
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getError";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ // should never get here; we should receive an exception
+ layout1.warn("ERROR: Should have received an exception! Got: " + result);
+ }
+ ]
+ ];
+
+ /*
+ * This is the generic handler, used by each of the tests. It
+ * ascertains whether an exception occured and alert()s with the
+ * exception if so; otherwise it calls the result validation function
+ * and then starts the next test.
+ */
+ handler = function(result, ex, id) {
+ mycall = null;
+ if (ex !== null) {
+ alert("Async(" + id + ") exception: " + ex);
+ } else {
+ // display results of the completed test
+ tests[testNum][1](result); // [][1] = validate response
+
+ // start the next test
+ ++testNum;
+
+ // Are we done?
+ if (testNum < tests.length) {
+ // Nope. Run the next test.
+ tests[testNum][0]();
+ }
+ }
+ }
+
+ // Determine which transport to use
+ rpc = new qx.io.remote.Rpc(url.getValue(), service.getValue());
+ rpc.setTimeout(10000);
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ // start the first test
+ testNum = 0;
+ tests[testNum][0](); // [][0] = request
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_5.html
new file mode 100644
index 0000000000..44f9493aeb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/RPC_5.html
@@ -0,0 +1,95 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls remote function getParams(), passing a defined field in
+ an object, and an undefined field in an object. Depending on the
+ setting of qx.core.Settings.jsonEncodeUndefined, the undefined field
+ should or should not be sent. We also send some (ignored) server data
+ in this test, if requested.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var encodeUndefined = new qx.ui.form.CheckBox("Encode 'undefined' as null");
+ layout1.add(encodeUndefined);
+
+ var sendServerData = new qx.ui.form.CheckBox("Send server data");
+ layout1.add(sendServerData);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ // We'll be setting url and service upon execute; no need to do it now.
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(10000);
+ var mycall = null;
+
+ start.addEventListener("execute", function() {
+ // Allow the user to reset the URL and Service on each call
+ rpc.setUrl(url.getValue());
+ rpc.setServiceName(service.getValue());
+ rpc.setCrossDomain(false);
+
+ if (sendServerData.isChecked()) {
+ rpc.setServerData(new Date());
+ } else {
+ rpc.setServerData(undefined);
+ }
+
+ qx.Settings.setCustomOfClass("qx.io.Json", "encodeUndefined",
+ encodeUndefined.isChecked());
+
+ try {
+ obj = new Object();
+ obj.def = "defined";
+ var result = rpc.callSync("getParams", obj.undef, obj.def);
+ alert("Sync result: " + result);
+ } catch (ex) {
+ alert("Sync exception: " + ex);
+ }
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/SplitPane_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/SplitPane_1.html
new file mode 100644
index 0000000000..aa12e85243
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/SplitPane_1.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for Splitpane functionality with enabled live resize.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var frame = new qx.ui.layout.CanvasLayout;
+ frame.setLocation(20, 48);
+ frame.setBottom(48);
+ frame.setRight(300);
+ frame.setBackgroundColor("#134275");
+ frame.setPadding(20);
+ frame.addToDocument();
+
+ // the splitpane itself
+ var splitpane = new qx.ui.splitpane.HorizontalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+ frame.add(splitpane);
+
+ // left Widget
+ var leftWidget = new qx.ui.form.TextArea("LeftWidget");
+ leftWidget.setWrap(true);
+ leftWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ leftWidget.setWidth("100%");
+ leftWidget.setHeight("100%");
+
+ // rightWidget (another splitpane)
+ var rightWidget = new qx.ui.splitpane.VerticalSplitPane;
+ rightWidget.setHeight("100%");
+ rightWidget.setWidth("100%");
+
+ // add widgets to splitpane
+ splitpane.addLeft(leftWidget);
+ splitpane.addRight(rightWidget);
+
+
+
+ // right top widget
+ var topWidget = new qx.ui.form.TextArea("Right Top Widget");
+ topWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ topWidget.setHeight("100%");
+ topWidget.setWidth("100%");
+
+ // right bottom widget
+ var bottomWidget = new qx.ui.embed.Iframe("http://www.qooxdoo.org");
+ bottomWidget.setHeight("100%");
+ bottomWidget.setWidth("100%");
+
+ // add widgets to right splitpane
+ rightWidget.addTop(topWidget);
+ rightWidget.addBottom(bottomWidget);
+
+
+
+
+ var toggleButton = new qx.ui.form.Button("Toggle Layout", "icon/16/rotate.png");
+ toggleButton.setBottom(48);
+ toggleButton.setLeft(20);
+ toggleButton.addToDocument();
+ toggleButton.addEventListener("execute", function(e)
+ {
+ if (splitpane.getOrientation() == "horizontal")
+ {
+ splitpane.setOrientation("vertical");
+ rightWidget.setOrientation("horizontal");
+ }
+ else
+ {
+ splitpane.setOrientation("horizontal");
+ rightWidget.setOrientation("vertical");
+ }
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_1.html
new file mode 100644
index 0000000000..720f0ebc7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_1.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>The default table using divs and nodeValue.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_2.html
new file mode 100644
index 0000000000..5f44bfab3b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_2.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>a table using divs and Array.join.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ qx.ui.table.TablePane.USE_ARRAY_JOIN = true;
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_3.html
new file mode 100644
index 0000000000..cd0a0b218b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table using table elements and nodeValue.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ qx.ui.table.TablePane.USE_TABLE = true;
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_4.html
new file mode 100644
index 0000000000..7ebdb5bc6a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_4.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table using table elements and Array.join.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ qx.ui.table.TablePane.USE_TABLE = true;
+ qx.ui.table.TablePane.USE_ARRAY_JOIN = true;
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_5.html
new file mode 100644
index 0000000000..f36e96eb7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Table_5.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table having few rows.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ //qx.dev.log.Logger.ROOT_LOGGER.addAppender(new qx.dev.log.WindowAppender);
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 20; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ setColumnWidth(0, 80);
+ setColumnWidth(1, 200);
+ setColumnWidth(2, 150);
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_1.html
new file mode 100644
index 0000000000..9287087fd6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_1.html
@@ -0,0 +1,227 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introduce qx.ui.menu.Menu which opens on qx.ui.toolbar.ToolBarMenuButtons.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+ };
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1 = new qx.ui.menu.Button("Folder");
+ var ms1 = new qx.ui.menu.Separator;
+ var mb2 = new qx.ui.menu.Button("Word Document");
+ var mb3 = new qx.ui.menu.Button("Text File");
+ var mb4 = new qx.ui.menu.Button("Image");
+
+ m1.add(mb1, ms1, mb2, mb3, mb4);
+ d.add(m1);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb5 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png");
+ var mb6 = new qx.ui.menu.Button("Move", "icon/16/edit-cut.png");
+ var mb7 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png");
+
+ m2.add(mb5, mb6, mb7);
+ d.add(m2);
+
+
+
+
+ var btns1 = [
+ { type : "menu", icon : "file-new", label : "New", menu : m1 },
+ { type : "menu", icon : "edit", label : "Edit", menu : m2 }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "up", label : "Upload" },
+ { type : "button", icon : "down", label : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "idea", label : "Tip" },
+ { type : "button", icon : "help", label : "Help" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ var useParts = true;
+
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "menu":
+ var o = new qx.ui.toolbar.MenuButton(btn.label, btn.menu, "icon/22/" + btn.icon + ".png", 22, 22);
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ // uncomment this to omit changes on one button
+ // if (btn.icon != "upload")
+ d.addEventListener("changeLayout", changeLayout, o );
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.label, "icon/22/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ // uncomment this to omit changes on one button
+ // if (btn.icon != "upload")
+ d.addEventListener("changeLayout", changeLayout, o );
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ setChecked(true);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e) {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_2.html
new file mode 100644
index 0000000000..8eb984138c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_2.html
@@ -0,0 +1,113 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Create ten toolbars. Stress Test.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var btns1 = [
+ { type : "button", icon : "file-new", text : "New" },
+ { type : "separator" },
+ { type : "button", icon : "edit-copy", text : "Copy" },
+ { type : "button", icon : "edit-cut", text : "Cut" },
+ { type : "button", icon : "edit-paste", text : "Paste" }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "up", text : "Upload" },
+ { type : "button", icon : "down", text : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "help", text : "Hilfe" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ var useParts = true;
+
+ for (var k=0; k<10; k++)
+ {
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48+(k*50));
+ setLeft(20);
+ setRight(335);
+ };
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.text, "icon/22/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ d.addEventListener("changeLayout", changeLayout, o);
+ d.addEventListener("changeSize", changeSize, o);
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_3.html
new file mode 100644
index 0000000000..0dc31bfb6c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_3.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the new flash support for qx.ui.toolbar.ToolBarButtons (inherited from qx.ui.basic.Atom).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+
+ tb.setTop(48);
+ tb.setLeft(20);
+ tb.setRight(335);
+
+ d.add(tb);
+
+ for (var i=1; i<8; i++)
+ {
+ var tbb = new qx.ui.toolbar.Button("Flash #" + i, "icon/22/reload.png", 22, 22, "./image/flash/color/file" + i + ".swf");
+ tb.add(tbb);
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_4.html
new file mode 100644
index 0000000000..4f5743f9c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/ToolBar_4.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Again a nice example which shows how to use qx.ui.toolbar.ToolBar as a menubar system.</p>
+ <p>Added some parts and a new flex zone which aligns the help button to the right edge</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.client.Command();
+ c1.addEventListener("execute", function(e) {
+ this.debug("Execute: " + e.getData().getLabel());
+ });
+
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New", null, c1);
+ var mb1_02 = new qx.ui.menu.Button("Open", null, c1);
+ var mb1_03 = new qx.ui.menu.Button("Save", null, c1);
+ var mb1_04 = new qx.ui.menu.Button("Save as", null, c1);
+ var mb1_05 = new qx.ui.menu.Button("Close", null, c1);
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", null, c1);
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo", null, c1);
+ var mb2_02 = new qx.ui.menu.Button("Redo", null, c1);
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/edit-cut.png", c1);
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/edit-copy.png", c1);
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/edit-paste.png", c1);
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/edit-delete.png", c1);
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All", null, c1);
+ var mb2_08 = new qx.ui.menu.Button("Find", null, c1);
+ var mb2_09 = new qx.ui.menu.Button("Find Again", null, c1);
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", c1, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", c1, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", c1, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt", null, c1);
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt", null, c1);
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt", null, c1);
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt", null, c1);
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt", null, c1);
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt", null, c1);
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt", null, c1);
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt", null, c1);
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt", null, c1);
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt", null, c1);
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt", null, c1);
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt", null, c1);
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt", null, c1);
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt", null, c1);
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt", null, c1);
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second", null, c1);
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, c1, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, c1, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", null, c1);
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", null, c1);
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences", null, c1);
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window", null, c1);
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", c1, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", c1);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", c1);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window", null, c1);
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window", null, c1);
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help", null, c1);
+ var mb5_02 = new qx.ui.menu.Button("About", null, c1);
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ mb1.setTop(48);
+ mb1.setRight(335);
+ mb1.setLeft(20);
+
+ var mp1 = new qx.ui.toolbar.Part;
+ var mp2 = new qx.ui.toolbar.Part;
+ var mp3 = new qx.ui.toolbar.Part;
+
+ mb1.add(mp1, mp2, new qx.ui.basic.HorizontalSpacer, mp3);
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+
+ mp1.add(mbb1, mbb2);
+ mp2.add(mbb3, mbb4);
+ mp3.add(mbb5);
+
+ d.add(mb1);
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_1.html
new file mode 100644
index 0000000000..ee934470e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_1.html
@@ -0,0 +1,196 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.xml"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/apply.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.form.TextArea;
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", "text/plain");
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ req.setCrossDomain(false);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_2.html
new file mode 100644
index 0000000000..854bd1f608
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_2.html
@@ -0,0 +1,190 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing different file sizes with timeouts and other built-in transport features.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/filesize/40kb.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/filesize/400kb.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/filesize/4000kb.xml"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/apply.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.basic.Label("Disabled because of large filesize");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", "text/plain");
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_3.html
new file mode 100644
index 0000000000..7246f52742
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_3.html
@@ -0,0 +1,126 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing multiple parallel requests of files with different sizes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var lab1 = new qx.ui.basic.Label("40KB");
+ var lab2 = new qx.ui.basic.Label("400KB");
+ var lab3 = new qx.ui.basic.Label("4000KB");
+
+ var spin1 = new qx.ui.form.Spinner(0, 3, 50);
+ var spin2 = new qx.ui.form.Spinner(0, 3, 20);
+ var spin3 = new qx.ui.form.Spinner(0, 3, 10);
+
+
+
+
+ var grid = new qx.ui.layout.GridLayout;
+
+ grid.setLocation(20, 48);
+ grid.setDimension("auto", "auto");
+ grid.setHorizontalSpacing(10);
+ grid.setVerticalSpacing(4);
+ grid.setBorder(qx.renderer.border.BorderPresets.getInstance().thinOutset);
+ grid.setBackgroundColor("white");
+ grid.setPadding(10);
+
+ grid.setColumnCount(3);
+ grid.setRowCount(2);
+
+ grid.setColumnWidth(0, 50);
+ grid.setColumnWidth(1, 50);
+ grid.setColumnWidth(2, 50);
+
+ grid.setRowHeight(0, 18);
+ grid.setRowHeight(1, 22);
+
+ qx.ui.core.ClientDocument.getInstance().add(grid);
+
+ grid.add(lab1, 0, 0);
+ grid.add(lab2, 1, 0);
+ grid.add(lab3, 2, 0);
+
+ grid.add(spin1, 0, 1);
+ grid.add(spin2, 1, 1);
+ grid.add(spin3, 2, 1);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/button-ok.png");
+ btn.setLocation(20, 120);
+ qx.ui.core.ClientDocument.getInstance().add(btn);
+
+
+
+ var area = new qx.ui.form.TextArea("");
+ area.setLocation(20, 154);
+ area.setDimension(192, 400);
+ qx.ui.core.ClientDocument.getInstance().add(area);
+
+
+
+ btn.addEventListener("execute", function(e)
+ {
+ var s1 = parseInt(spin1.getValue());
+ var s2 = parseInt(spin2.getValue());
+ var s3 = parseInt(spin3.getValue());
+
+ while ((s1+s2+s3) > 0)
+ {
+ if (s1 > 0)
+ {
+ makeRequest(40);
+ s1--;
+ };
+
+ if (s2 > 0)
+ {
+ makeRequest(400);
+ s2--;
+ };
+
+ if (s3 > 0)
+ {
+ makeRequest(4000);
+ s3--;
+ };
+ };
+ });
+
+ function makeRequest(size)
+ {
+ var req = new qx.io.remote.Request("data/filesize/" + size + "kb.xml", "GET", "application/xml");
+
+ req.addEventListener("completed", function(e) {
+ area.setValue(area.getValue() + "Request " + size + "kb: completed\n");
+ });
+
+ req.addEventListener("failed", function(e) {
+ area.setValue(area.getValue() + "Request " + size + "kb: failed\n");
+ });
+
+ req.addEventListener("timeout", function(e) {
+ area.setValue(area.getValue() + "Request " + size + "kb: timeout\n");
+ });
+
+ req.send();
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_4.html
new file mode 100644
index 0000000000..9219c7706b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_4.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ <p>Using text content in this case.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.txt"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.txt"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.txt"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.txt"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/apply.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.form.TextArea;
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", "text/plain");
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_5.html
new file mode 100644
index 0000000000..4fa0734abd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_5.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ <p>Using html content in this case.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.html"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.html"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.html"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.html"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/apply.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.embed.HtmlEmbed("&#160;");
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", "text/html");
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_6.html
new file mode 100644
index 0000000000..083444d718
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Transport_6.html
@@ -0,0 +1,222 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ <p>Using javascript/json content in this case.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.js"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.js"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.js"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.js"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/apply.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.layout.VerticalBoxLayout;
+ area.setSpacing(6);
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+ var fgivenname = new qx.ui.basic.Label("Given Name");
+ var fname = new qx.ui.basic.Label("Name");
+ var fage = new qx.ui.basic.Label("Age");
+ var fstreet = new qx.ui.basic.Label("Street");
+ var fplz = new qx.ui.basic.Label("PLZ");
+ var fcity = new qx.ui.basic.Label("City");
+ var fcountry = new qx.ui.basic.Label("Country");
+ var fphone = new qx.ui.basic.Label("Phone");
+
+ area.add(fgivenname, fname, fage, fstreet, fplz, fcity, fcountry, fphone);
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", "text/json");
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ // This combination couldn't be handled currently
+ // req.setCrossDomain(true);
+ // req.setAsynchronous(false);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+
+ var vContent = e.getData().getContent();
+
+ fgivenname.setHtml(vContent.givenName.toString());
+ fname.setHtml(vContent.name.toString());
+ fage.setHtml(vContent.age.toString());
+ fstreet.setHtml(vContent.street.toString());
+ fplz.setHtml(vContent.plz.toString());
+ fcity.setHtml(vContent.city.toString());
+ fcountry.setHtml(vContent.country.toString());
+ fphone.setHtml(vContent.phone.toString());
+
+ qx.ui.core.Widget.flushGlobalQueues();
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_1.html
new file mode 100644
index 0000000000..730de4afd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_1.html
@@ -0,0 +1,171 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introducing qx.ui.tree.Tree. A first small example.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+ var vShowItems = new qx.ui.form.Button("Show Items");
+
+ with(vShowItems) {
+ setTop(100);
+ setLeft(0);
+ };
+
+ commandFrame.add(vShowItems);
+
+ vShowItems.addEventListener("execute", function(e) {
+ alert(t.getItems());
+ });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_2.html
new file mode 100644
index 0000000000..8775c9a9c1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_2.html
@@ -0,0 +1,294 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This example is bigger than the previous one.</p>
+ </div>
+
+ <div id="control" style="display:none">
+ <p>
+ <strong>Create</strong>:
+ <br/>
+ Push into:
+ <a href="javascript://" onclick="void(root.add(new qx.ui.tree.TreeFile('Foo Bar')))">Root</a>
+ <a href="javascript://" onclick="void(inbox.add(new qx.ui.tree.TreeFile('Foo Bar')))">Inbox</a>
+ <a href="javascript://" onclick="void(workspace.add(new qx.ui.tree.TreeFile('Foo Bar')))">Workspace</a>
+ <a href="javascript://" onclick="void(desktop.add(new qx.ui.tree.TreeFile('Foo Bar')))">Desktop</a>
+ <a href="javascript://" onclick="void(edit.add(new qx.ui.tree.TreeFile('Foo Bar')))">Edit</a>
+ <a href="javascript://" onclick="void(spam.add(new qx.ui.tree.TreeFile('Foo Bar')))">Spam</a>
+ </p>
+
+ <hr/>
+
+ <p>
+ <strong>Inbox</strong>:
+ <a href="javascript://" onclick="void(inbox.getParent().remove(inbox))">Delete</a>
+ <br/>
+ Push into:
+ <a href="javascript://" onclick="void(root.add(inbox))">Root</a>
+ <a href="javascript://" onclick="void(workspace.add(inbox))">Workspace</a>
+ <a href="javascript://" onclick="void(desktop.add(inbox))">Desktop</a>
+ <a href="javascript://" onclick="void(edit.add(inbox))">Edit</a>
+ <a href="javascript://" onclick="void(spam.add(inbox))">Spam</a>
+ </p>
+
+ <p>
+ <strong>Workspace</strong>:
+ <a href="javascript://" onclick="void(workspace.getParent().remove(workspace))">Delete</a>
+ <br/>
+ Push into:
+ <a href="javascript://" onclick="void(root.add(workspace))">Root</a>
+ <a href="javascript://" onclick="void(inbox.add(workspace))">Inbox</a>
+ <a href="javascript://" onclick="void(desktop.add(workspace))">Desktop</a>
+ <a href="javascript://" onclick="void(edit.add(workspace))">Edit</a>
+ <a href="javascript://" onclick="void(spam.add(workspace))">Spam</a>
+ <br/>
+ Push into before:
+ <a href="javascript://" onclick="void(root.addBefore(workspace, desktop))">Root (before:Desktop)</a>
+ <a href="javascript://" onclick="void(root.addBefore(workspace, inbox))">Root (before:Inbox)</a>
+ <a href="javascript://" onclick="void(inbox.addBefore(workspace, spam))">Inbox (before:Spam)</a>
+ <a href="javascript://" onclick="void(inbox.addBefore(workspace, edit))">Inbox (before:Edit)</a>
+ <br/>
+ Push into after:
+ <a href="javascript://" onclick="void(root.addAfter(workspace, desktop))">Root (after:Desktop)</a>
+ <a href="javascript://" onclick="void(root.addAfter(workspace, inbox))">Root (after:Inbox)</a>
+ <a href="javascript://" onclick="void(inbox.addAfter(workspace, spam))">Inbox (after:Spam)</a>
+ <a href="javascript://" onclick="void(inbox.addAfter(workspace, edit))">Inbox (after:Edit)</a>
+ <br/>
+ Add at:
+ <a href="javascript://" onclick="void(root.addAt(workspace, 0))">Root (at:0)</a>
+ <a href="javascript://" onclick="void(root.addAt(workspace, 1))">Root (at:1)</a>
+ <a href="javascript://" onclick="void(root.addAt(workspace, 2))">Root (at:2)</a>
+ <a href="javascript://" onclick="void(inbox.addAt(workspace, 0))">Inbox (at:0)</a>
+ <a href="javascript://" onclick="void(inbox.addAt(workspace, 3))">Inbox (at:3)</a>
+ <a href="javascript://" onclick="void(inbox.addAt(workspace, 5))">Inbox (at:5)</a>
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ var desktop, workspace, root, inbox, edit, spam;
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ root = t;
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ workspace = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ inbox = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ edit = te2_5;
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i=0;i<10; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ };
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+
+
+
+
+
+
+ var ct1 = new qx.ui.basic.Label(document.getElementById("control").innerHTML);
+
+ with(ct1)
+ {
+ setWidth(300);
+ setRight(335);
+
+ setHeight(null);
+ setTop(48);
+ setBottom(48);
+
+ setOverflow("hidden");
+ setStyleProperty("whiteSpace", "normal");
+
+ setBackgroundColor("white");
+ setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ setPadding(10);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(ct1);
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_3.html
new file mode 100644
index 0000000000..2526e2d5a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_3.html
@@ -0,0 +1,201 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Nothing special, like the previous example but here the tree lines are by default off.</p>
+ <p>This allows you to easily compare the performance costs for the tree lines: Just compare this and the previous example.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+ setUseTreeLines(false);
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ editieren = te2_5;
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i=0;i<50; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ };
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_4.html
new file mode 100644
index 0000000000..1af14828c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_4.html
@@ -0,0 +1,40 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test an empty tree</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_5.html
new file mode 100644
index 0000000000..a2ed5459de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_5.html
@@ -0,0 +1,148 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Drag and Drop between trees and inside a tree.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function handleDragStart(e)
+ {
+ e.addData("qx.ui.tree.AbstractTreeElement", e.getCurrentTarget());
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDragDrop(e)
+ {
+ var vType = e.getDropDataTypes()[0];
+ var vSource = e.getData(vType);
+ var vTarget = e.getCurrentTarget();
+
+ vSource.getTree().getManager().deselectAll();
+ vTarget.add(vSource);
+
+ e.stopPropagation();
+ };
+
+ function supportsDrop(vDragCache) {
+ return !vDragCache.sourceWidget.contains(this);
+ };
+
+ function handleDragOver(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.setStyleProperty("textDecoration", "underline");
+ };
+
+ function handleDragOut(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.removeStyleProperty("textDecoration");
+ };
+
+
+
+ var treeSource = new qx.ui.tree.Tree("Source");
+
+ with(treeSource)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeSource);
+
+ for (var i=1, f; i<4; i++)
+ {
+ f = new qx.ui.tree.TreeFolder("Folder " + i);
+
+ f.addEventListener("dragstart", handleDragStart);
+ f.addEventListener("dragdrop", handleDragDrop);
+ f.addEventListener("dragover", handleDragOver);
+ f.addEventListener("dragout", handleDragOut);
+
+ f.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ f.supportsDrop = supportsDrop;
+
+ treeSource.add(f);
+
+ for (var j=1, g; j<4; j++)
+ {
+ g = new qx.ui.tree.TreeFolder("Subfolder " + j);
+
+ g.addEventListener("dragstart", handleDragStart);
+ g.addEventListener("dragdrop", handleDragDrop);
+ g.addEventListener("dragover", handleDragOver);
+ g.addEventListener("dragout", handleDragOut);
+
+ g.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ g.supportsDrop = supportsDrop;
+
+ f.add(g);
+
+ for (var k=1, h; k<4; k++)
+ {
+ h = new qx.ui.tree.TreeFile("File " + k);
+
+ h.addEventListener("dragstart", handleDragStart);
+
+ g.add(h);
+ };
+ };
+ };
+
+
+
+
+ var treeDest = new qx.ui.tree.Tree("Dest");
+
+ with(treeDest)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(240);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeDest);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_6.html
new file mode 100644
index 0000000000..c980eef9ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_6.html
@@ -0,0 +1,231 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Drag and Drop between trees and inside a tree.</p>
+ <p>Added support for positioned move/insert (not complete yet!)</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var vLastIndex = null;
+
+ function handleDragStart(e)
+ {
+ e.addData("qx.ui.tree.AbstractTreeElement", e.getCurrentTarget());
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDragDrop(e)
+ {
+ var vType = e.getDropDataTypes()[0];
+ var vSource = e.getData(vType);
+ var vTarget = e.getCurrentTarget();
+
+ vSource.getTree().getManager().deselectAll();
+
+ // this.debug("Add At: " + vLastIndex);
+
+ vLastIndex == null ? vTarget.addAtEnd(vSource) : vTarget.addBefore(vSource, vLastIndex);
+ vLastIndex = null;
+
+ e.stopPropagation();
+ treeMarkerLine.setStyleProperty("display", "none");
+ };
+
+ function supportsDrop(vDragCache) {
+ return !vDragCache.sourceWidget.contains(this);
+ };
+
+ function handleDragOver(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.setStyleProperty("textDecoration", "underline");
+ };
+
+ function handleDragOut(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.removeStyleProperty("textDecoration");
+ };
+
+ function handleDragEnd(e)
+ {
+ vLastIndex = null;
+ treeMarkerLine.setStyleProperty("display", "none");
+ };
+
+ function handleDragMove(e)
+ {
+ vLastIndex = null;
+
+ var vTarget = e.getTarget();
+
+ if (!vTarget || !(vTarget instanceof qx.ui.tree.TreeFolder))
+ {
+ treeMarkerLine.setStyleProperty("display", "none");
+ return;
+ };
+
+ var vContainer = vTarget.getContainerObject();
+
+ if (!vContainer)
+ {
+ treeMarkerLine.setStyleProperty("display", "none");
+ return;
+ };
+
+ var vChildren = vContainer.getVisibleChildren();
+ var vChildrenLength = vChildren.length;
+ var vEventTop = e.getPageY();
+
+ for (var i=0, vChild, vTop; i<vChildrenLength; i++)
+ {
+ vChild = vChildren[i];
+
+ vTop = qx.dom.Location.getPageBoxTop(vChild.getElement());
+ if ((vTop - vEventTop) > -4 && (vTop - vEventTop) < 4)
+ {
+ if (vEventTop > vTop && vChild.isFirstChild()) {
+ continue;
+ };
+
+ treeMarkerLine._applyRuntimeTop(vTop+1);
+ treeMarkerLine._applyRuntimeLeft(QxDom.getComputedPageBoxLeft(vChild.getLabelObject().getElement()) - 20);
+
+ treeMarkerLine.removeStyleProperty("display");
+
+ // this.debug("Index: " + vLastIndex + " :: " + vEventTop + " <> " + vTop);
+ vLastIndex = vChild;
+
+ return;
+ };
+ };
+
+ treeMarkerLine.setStyleProperty("display", "none");
+ };
+
+
+
+ var treeMarkerLine = new qx.ui.basic.Terminator;
+
+ treeMarkerLine.setHeight(2);
+ treeMarkerLine.setBackgroundColor("#335EA8");
+ treeMarkerLine.setWidth(20);
+ treeMarkerLine.setZIndex(1e7);
+ treeMarkerLine.setAnonymous(true);
+ treeMarkerLine.setStyleProperty("display", "none");
+
+ qx.ui.core.ClientDocument.getInstance().add(treeMarkerLine);
+
+
+
+ var treeSource = new qx.ui.tree.Tree("Source");
+
+ with(treeSource)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+ addEventListener("dragmove", handleDragMove);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeSource);
+
+ for (var i=1, f; i<3; i++)
+ {
+ f = new qx.ui.tree.TreeFolder("Folder " + i);
+
+ f.addEventListener("dragstart", handleDragStart);
+ f.addEventListener("dragdrop", handleDragDrop);
+ f.addEventListener("dragover", handleDragOver);
+ f.addEventListener("dragout", handleDragOut);
+ f.addEventListener("dragend", handleDragEnd);
+
+ f.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ f.supportsDrop = supportsDrop;
+
+ treeSource.add(f);
+
+ for (var j=1, g; j<6; j++)
+ {
+ g = new qx.ui.tree.TreeFolder("Subfolder " + j);
+
+ g.addEventListener("dragstart", handleDragStart);
+ g.addEventListener("dragdrop", handleDragDrop);
+ g.addEventListener("dragover", handleDragOver);
+ g.addEventListener("dragout", handleDragOut);
+ g.addEventListener("dragend", handleDragEnd);
+
+ g.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ g.supportsDrop = supportsDrop;
+
+ f.add(g);
+
+ for (var k=1, h; k<9; k++)
+ {
+ h = new qx.ui.tree.TreeFile("File " + k);
+
+ h.addEventListener("dragstart", handleDragStart);
+
+ g.add(h);
+ };
+ };
+ };
+
+
+
+
+
+
+ var treeDest = new qx.ui.tree.Tree("Dest");
+
+ with(treeDest)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(240);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+ addEventListener("dragmove", handleDragMove);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeDest);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_7.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_7.html
new file mode 100644
index 0000000000..0ad6e222e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Tree_7.html
@@ -0,0 +1,233 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Trying dynamic Folder and File creation and deletion.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ function createItems (t) {
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ t.add(te2);
+ }
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ if(e.getData()[0]) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ this.debug('classname: ' + e.getData()[0].classname);
+ }
+ else {
+ tCurrentInput.setValue('');
+ }
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+ var vShowItems = new qx.ui.form.Button("Show Items");
+
+ with(vShowItems) {
+ setTop(100);
+ setLeft(0);
+ };
+
+ commandFrame.add(vShowItems);
+
+ vShowItems.addEventListener("execute", function(e) {
+ alert(t.getItems());
+ });
+
+
+ var vDestroyTreeContent = new qx.ui.form.Button("Destroy tree content");
+
+ with(vDestroyTreeContent) {
+ setTop(180);
+ setLeft(0);
+ };
+
+ commandFrame.add(vDestroyTreeContent);
+
+ vDestroyTreeContent.addEventListener("execute", function(e) {
+ t.destroyContent();
+ });
+
+
+ var vCreateItems = new qx.ui.form.Button("Create items");
+
+ with(vCreateItems) {
+ setTop(140);
+ setLeft(0);
+ };
+
+ commandFrame.add(vCreateItems);
+
+ vCreateItems.addEventListener("execute", function(e) {
+ createItems(t);
+ });
+
+ var vDestroySelectedItem = new qx.ui.form.Button("Destroy selected item");
+
+ with(vDestroySelectedItem) {
+ setTop(220);
+ setLeft(0);
+ };
+
+ commandFrame.add(vDestroySelectedItem);
+
+ vDestroySelectedItem.addEventListener("execute", function(e) {
+ var vItem = t.getManager().getSelectedItem();
+ if(vItem) {
+ vItem.destroy();
+ }
+ });
+
+
+ var vDestroyContenSelectedItem = new qx.ui.form.Button("Destroy content of selected item");
+
+ with(vDestroyContenSelectedItem) {
+ setTop(260);
+ setLeft(0);
+ };
+
+ commandFrame.add(vDestroyContenSelectedItem);
+
+ vDestroyContenSelectedItem.addEventListener("execute", function(e) {
+ var vItem = t.getManager().getSelectedItem();
+ if(vItem && vItem instanceof qx.ui.tree.TreeFolder) {
+ vItem.destroyContent();
+ }
+ });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Umlauts_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Umlauts_1.html
new file mode 100644
index 0000000000..9d085235a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Umlauts_1.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test some Umlauts methods from the String.prototype.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ alert("Umlauts Short: " + qx.util.Normalization.umlautsShort("äöüÄÖÜß"))
+ alert("Umlauts Long: " + qx.util.Normalization.umlautsLong("äöüÄÖÜß"))
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_1.html
new file mode 100644
index 0000000000..97031e2549
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_1.html
@@ -0,0 +1,1257 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.VerticalBoxLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ TOP ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setWidth("auto")
+ hbl1.setBottom(48);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setHorizontalChildrenAlign("right");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setHeight(25);
+ w1_1.setWidth(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxWidth(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setHeight(25);
+ w1_2.setWidth(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setRight(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setHeight(25);
+ w1_3.setWidth("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setHeight(25);
+ w1_4.setWidth(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setHeight(40);
+ // w1_5.setWidth(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setHeight(25);
+ w1_6.setWidth(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setLeft(15);
+ w1_6.setTop(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setHeight(25);
+ w1_9.setWidth(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setHeight(25);
+ w1_10.setWidth(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setWidth("auto");
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ BOTTOM ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl2.setLeft(110);
+ hbl2.setTop(48);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setWidth("auto");
+ hbl2.setBottom(48);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setVerticalChildrenAlign("bottom");
+ hbl2.setHorizontalChildrenAlign("center");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setHeight(25);
+ w2_1.setWidth(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxWidth(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setHeight(25);
+ w2_2.setWidth(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setRight(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setHeight(25);
+ w2_3.setWidth("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setHeight(25);
+ w2_4.setWidth(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setHeight(40);
+ // w2_5.setWidth(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setHeight(25);
+ w2_6.setWidth(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setLeft(15);
+ w2_6.setTop(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setHeight(25);
+ w2_9.setWidth(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setHeight(25);
+ w2_10.setWidth(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setWidth("auto");
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl3.setLeft(200);
+ hbl3.setTop(48);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setWidth("auto");
+ hbl3.setBottom(48);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setVerticalChildrenAlign("middle");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setHeight(25);
+ w3_1.setWidth(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxWidth(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setHeight(25);
+ w3_2.setWidth(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setRight(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setHeight(25);
+ w3_3.setWidth("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setHeight(25);
+ w3_4.setWidth(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setHeight(40);
+ // w3_5.setWidth(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setHeight(25);
+ w3_6.setWidth(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setLeft(15);
+ w3_6.setTop(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setHeight(25);
+ w3_9.setWidth(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setHeight(25);
+ w3_10.setWidth(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setWidth("auto");
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ TOP ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl4.setLeft(290);
+ hbl4.setTop(48);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setHeight(null);
+ hbl4.setBottom(48);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setHorizontalChildrenAlign("right");
+
+ hbl4.setWidth(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setHeight(25);
+ w4_1.setWidth(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxWidth(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setHeight(25);
+ w4_2.setWidth(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setRight(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setHeight(25);
+ w4_3.setWidth("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setHeight(25);
+ w4_4.setWidth(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setHeight(40);
+ // w4_5.setWidth(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setHeight(25);
+ w4_6.setWidth(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setLeft(15);
+ w4_6.setTop(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setHeight(25);
+ w4_9.setWidth(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setHeight(25);
+ w4_10.setWidth(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setWidth(80);
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ BOTTOM ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl5.setLeft(380);
+ hbl5.setTop(48);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setHeight(null);
+ hbl5.setBottom(48);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setVerticalChildrenAlign("bottom");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setHorizontalChildrenAlign("center");
+
+ hbl5.setWidth(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setHeight(25);
+ w5_1.setWidth(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxWidth(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setHeight(25);
+ w5_2.setWidth(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setRight(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setHeight(25);
+ w5_3.setWidth("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setHeight(25);
+ w5_4.setWidth(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setHeight(40);
+ // w5_5.setWidth(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setHeight(25);
+ w5_6.setWidth(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setLeft(15);
+ w5_6.setTop(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setHeight(25);
+ w5_9.setWidth(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setHeight(25);
+ w5_10.setWidth(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setWidth(80);
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl6.setLeft(470);
+ hbl6.setTop(48);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setHeight(null);
+ hbl6.setBottom(48);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setVerticalChildrenAlign("middle");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setWidth(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setHeight(25);
+ w6_1.setWidth(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxWidth(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setHeight(25);
+ w6_2.setWidth(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setRight(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setHeight(25);
+ w6_3.setWidth("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setHeight(25);
+ w6_4.setWidth(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setHeight(40);
+ // w6_5.setWidth(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setHeight(25);
+ w6_6.setWidth(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setLeft(15);
+ w6_6.setTop(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setHeight(25);
+ w6_9.setWidth(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setHeight(25);
+ w6_10.setWidth(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setWidth(80);
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_2.html
new file mode 100644
index 0000000000..9a8781e312
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_2.html
@@ -0,0 +1,1227 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.VerticalBoxLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ TOP ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setWidth("auto");
+ hbl1.setBottom(48);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setHorizontalChildrenAlign("right");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setHeight(25);
+ w1_1.setWidth(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxWidth(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setHeight(25);
+ w1_2.setWidth(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setRight(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setHeight(25);
+ w1_3.setWidth("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setHeight(25);
+ w1_4.setWidth(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setHeight("15%");
+ // w1_5.setWidth(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setHeight(25);
+ w1_6.setWidth(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setLeft(15);
+ w1_6.setTop(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setHeight(25);
+ w1_9.setWidth(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setHeight(25);
+ w1_10.setWidth(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth(80);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ BOTTOM ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl2.setLeft(110);
+ hbl2.setTop(48);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setWidth("auto");
+ hbl2.setBottom(48);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setVerticalChildrenAlign("bottom");
+ hbl2.setHorizontalChildrenAlign("center");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setHeight(25);
+ w2_1.setWidth(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxWidth(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setHeight(25);
+ w2_2.setWidth(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setRight(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setHeight(25);
+ w2_3.setWidth("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setHeight(25);
+ w2_4.setWidth(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setHeight("15%");
+ // w2_5.setWidth(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setHeight(25);
+ w2_6.setWidth(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setLeft(15);
+ w2_6.setTop(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setHeight(25);
+ w2_9.setWidth(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setHeight(25);
+ w2_10.setWidth(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth(80);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl3.setLeft(200);
+ hbl3.setTop(48);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setWidth("auto");
+ hbl3.setBottom(48);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setVerticalChildrenAlign("middle");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setHeight(25);
+ w3_1.setWidth(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxWidth(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setHeight(25);
+ w3_2.setWidth(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setRight(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setHeight(25);
+ w3_3.setWidth("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setHeight(25);
+ w3_4.setWidth(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setHeight("15%");
+ // w3_5.setWidth(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setHeight(25);
+ w3_6.setWidth(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setLeft(15);
+ w3_6.setTop(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setHeight(25);
+ w3_9.setWidth(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setHeight(25);
+ w3_10.setWidth(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth(80);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ TOP ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl4.setLeft(290);
+ hbl4.setTop(48);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setHeight(null);
+ hbl4.setBottom(48);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setHorizontalChildrenAlign("right");
+
+ hbl4.setWidth(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setHeight(25);
+ w4_1.setWidth(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxWidth(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setHeight(25);
+ w4_2.setWidth(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setRight(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setHeight(25);
+ w4_3.setWidth("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setHeight(25);
+ w4_4.setWidth(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setHeight("15%");
+ // w4_5.setWidth(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setHeight(25);
+ w4_6.setWidth(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setLeft(15);
+ w4_6.setTop(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setHeight(25);
+ w4_9.setWidth(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setHeight(25);
+ w4_10.setWidth(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth("auto");
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ BOTTOM ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl5.setLeft(380);
+ hbl5.setTop(48);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setHeight(null);
+ hbl5.setBottom(48);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setVerticalChildrenAlign("bottom");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setHorizontalChildrenAlign("center");
+
+ hbl5.setWidth(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setHeight(25);
+ w5_1.setWidth(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxWidth(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setHeight(25);
+ w5_2.setWidth(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setRight(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setHeight(25);
+ w5_3.setWidth("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setHeight(25);
+ w5_4.setWidth(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setHeight("15%");
+ // w5_5.setWidth(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setHeight(25);
+ w5_6.setWidth(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setLeft(15);
+ w5_6.setTop(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setHeight(25);
+ w5_9.setWidth(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setHeight(25);
+ w5_10.setWidth(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth("auto");
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl6.setLeft(470);
+ hbl6.setTop(48);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setHeight(null);
+ hbl6.setBottom(48);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setVerticalChildrenAlign("middle");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setWidth(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setHeight(25);
+ w6_1.setWidth(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxWidth(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setHeight(25);
+ w6_2.setWidth(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setRight(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setHeight(25);
+ w6_3.setWidth("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setHeight(25);
+ w6_4.setWidth(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setHeight("15%");
+ // w6_5.setWidth(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setHeight(25);
+ w6_6.setWidth(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setLeft(15);
+ w6_6.setTop(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/colors.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setHeight(25);
+ w6_9.setWidth(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setHeight(25);
+ w6_10.setWidth(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth("auto");
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/clock.png" ? this.setSource("icon/64/clock.png") : this.setSource("icon/32/clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/colors.png" ? this.setSource("icon/16/colors.png") : this.setSource("icon/32/colors.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_3.html
new file mode 100644
index 0000000000..ffd67a7308
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/VerticalBoxLayout_3.html
@@ -0,0 +1,552 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.VerticalBoxLayout widget.<br/>
+ <br/>
+ 1. Simple testing, one static and one flex child<br/>
+ 2. Two flex children with the same priority<br/>
+ 3. The same as #2, but the second has the doubled priority compared to the first<br/>
+ <br/>
+
+ 4. The same as #3, but now the second child has a max-height of 50px<br/>
+ 5. The same as #4, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 6. The same as #3, but now the second has a min height of 300px<br/>
+ 7. The same as #6, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 8. Three children with the priorities: 1, 2 and 3. The second has a maxHeight of 50px<br/>
+ 9. The same as #8, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 10. Three children with the priorities: 1, 2 and 3. Added a few mouse actions.<br/>
+ 11. Three children with the priorities: 1, a static height of 80px and 3.<br/>
+ 12. The same as #11, but configured as 'auto' height.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ /* ***********************************************
+
+ EXAMPLE 1:
+
+ *********************************************** */
+
+ var te1 = new qx.ui.basic.Label("#1");
+ te1.setLocation(20, 48);
+ d.add(te1);
+
+ var hbl1 = new qx.ui.layout.VerticalBoxLayout;
+ hbl1.setTop(78);
+ hbl1.setLeft(20);
+ hbl1.setBottom(48);
+ hbl1.setHeight(null);
+ hbl1.setWidth("auto");
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setSpacing(4);
+ hbl1.setPadding(2);
+ d.add(hbl1);
+
+ var t1_1 = new qx.ui.basic.Terminator;
+ t1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_1.setHeight(20);
+ t1_1.setWidth(10);
+ t1_1.setBackgroundColor("green");
+ hbl1.add(t1_1);
+
+ t1_1.addEventListener("click", function() {
+ this.setHeight(this.getHeight() == 20 ? 100 : 20);
+ });
+
+ var t1_2 = new qx.ui.basic.Terminator;
+ t1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_2.setHeight("1*");
+ t1_2.setWidth(10);
+ t1_2.setBackgroundColor("blue");
+ hbl1.add(t1_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 2:
+
+ *********************************************** */
+
+ var te2 = new qx.ui.basic.Label("#2");
+ te2.setLocation(40, 48);
+ d.add(te2);
+
+ var hbl2 = new qx.ui.layout.VerticalBoxLayout;
+ hbl2.setTop(78);
+ hbl2.setLeft(40);
+ hbl2.setBottom(48);
+ hbl2.setHeight(null);
+ hbl2.setWidth("auto");
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setSpacing(4);
+ hbl2.setPadding(2);
+ d.add(hbl2);
+
+ var t2_1 = new qx.ui.basic.Terminator;
+ t2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_1.setHeight("1*");
+ t2_1.setWidth(10);
+ t2_1.setBackgroundColor("green");
+ hbl2.add(t2_1);
+
+ var t2_2 = new qx.ui.basic.Terminator;
+ t2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_2.setHeight("1*");
+ t2_2.setWidth(10);
+ t2_2.setBackgroundColor("blue");
+ hbl2.add(t2_2);
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 3:
+
+ *********************************************** */
+
+ var te3 = new qx.ui.basic.Label("#3");
+ te3.setLocation(60, 48);
+ d.add(te3);
+
+ var hbl3 = new qx.ui.layout.VerticalBoxLayout;
+ hbl3.setTop(78);
+ hbl3.setLeft(60);
+ hbl3.setBottom(48);
+ hbl3.setHeight(null);
+ hbl3.setWidth("auto");
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setSpacing(4);
+ hbl3.setPadding(2);
+ d.add(hbl3);
+
+ var t3_1 = new qx.ui.basic.Terminator;
+ t3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_1.setHeight("1*");
+ t3_1.setWidth(10);
+ t3_1.setBackgroundColor("green");
+ hbl3.add(t3_1);
+
+ var t3_2 = new qx.ui.basic.Terminator;
+ t3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_2.setHeight("2*");
+ t3_2.setWidth(10);
+ t3_2.setBackgroundColor("blue");
+ hbl3.add(t3_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 4:
+
+ *********************************************** */
+
+ var te4 = new qx.ui.basic.Label("#4");
+ te4.setLocation(100, 48);
+ d.add(te4);
+
+ var hbl4 = new qx.ui.layout.VerticalBoxLayout;
+ hbl4.setTop(78);
+ hbl4.setLeft(100);
+ hbl4.setBottom(48);
+ hbl4.setHeight(null);
+ hbl4.setWidth("auto");
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setSpacing(4);
+ hbl4.setPadding(2);
+ d.add(hbl4);
+
+ var t4_1 = new qx.ui.basic.Terminator;
+ t4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_1.setHeight("1*");
+ t4_1.setWidth(10);
+ t4_1.setBackgroundColor("green");
+ hbl4.add(t4_1);
+
+ var t4_2 = new qx.ui.basic.Terminator;
+ t4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_2.setHeight("2*");
+ t4_2.setWidth(10);
+ t4_2.setMaxHeight(50);
+ t4_2.setBackgroundColor("blue");
+ hbl4.add(t4_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 5:
+
+ *********************************************** */
+
+ var te5 = new qx.ui.basic.Label("#5");
+ te5.setLocation(120, 48);
+ d.add(te5);
+
+ var hbl5 = new qx.ui.layout.VerticalBoxLayout;
+ hbl5.setTop(78);
+ hbl5.setLeft(120);
+ hbl5.setBottom(48);
+ hbl5.setHeight(null);
+ hbl5.setWidth("auto");
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setSpacing(4);
+ hbl5.setPadding(2);
+ hbl5.setUseAdvancedFlexAllocation(true);
+ d.add(hbl5);
+
+ var t5_1 = new qx.ui.basic.Terminator;
+ t5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_1.setHeight("1*");
+ t5_1.setWidth(10);
+ t5_1.setBackgroundColor("green");
+ hbl5.add(t5_1);
+
+ var t5_2 = new qx.ui.basic.Terminator;
+ t5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_2.setHeight("2*");
+ t5_2.setWidth(10);
+ t5_2.setMaxHeight(50);
+ t5_2.setBackgroundColor("blue");
+ hbl5.add(t5_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 6:
+
+ *********************************************** */
+
+ var te6 = new qx.ui.basic.Label("#6");
+ te6.setLocation(160, 48);
+ d.add(te6);
+
+ var hbl6 = new qx.ui.layout.VerticalBoxLayout;
+ hbl6.setTop(78);
+ hbl6.setLeft(160);
+ hbl6.setBottom(48);
+ hbl6.setHeight(null);
+ hbl6.setWidth("auto");
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setSpacing(4);
+ hbl6.setPadding(2);
+ d.add(hbl6);
+
+ var t6_1 = new qx.ui.basic.Terminator;
+ t6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_1.setHeight("1*");
+ t6_1.setWidth(10);
+ t6_1.setBackgroundColor("green");
+ hbl6.add(t6_1);
+
+ var t6_2 = new qx.ui.basic.Terminator;
+ t6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_2.setHeight("2*");
+ t6_2.setWidth(10);
+ t6_2.setMinHeight(300);
+ t6_2.setBackgroundColor("blue");
+ hbl6.add(t6_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 7:
+
+ *********************************************** */
+
+ var te7 = new qx.ui.basic.Label("#7");
+ te7.setLocation(180, 48);
+ d.add(te7);
+
+ var hbl7 = new qx.ui.layout.VerticalBoxLayout;
+ hbl7.setTop(78);
+ hbl7.setLeft(180);
+ hbl7.setBottom(48);
+ hbl7.setHeight(null);
+ hbl7.setWidth("auto");
+ hbl7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl7.setSpacing(4);
+ hbl7.setPadding(2);
+ hbl7.setUseAdvancedFlexAllocation(true);
+ d.add(hbl7);
+
+ var t7_1 = new qx.ui.basic.Terminator;
+ t7_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_1.setHeight("1*");
+ t7_1.setWidth(10);
+ t7_1.setBackgroundColor("green");
+ hbl7.add(t7_1);
+
+ var t7_2 = new qx.ui.basic.Terminator;
+ t7_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_2.setHeight("2*");
+ t7_2.setWidth(10);
+ t7_2.setMinHeight(300);
+ t7_2.setBackgroundColor("blue");
+ hbl7.add(t7_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 8:
+
+ *********************************************** */
+
+ var te8 = new qx.ui.basic.Label("#8");
+ te8.setLocation(220, 48);
+ d.add(te8);
+
+ var hbl8 = new qx.ui.layout.VerticalBoxLayout;
+ hbl8.setTop(78);
+ hbl8.setLeft(220);
+ hbl8.setBottom(48);
+ hbl8.setHeight(null);
+ hbl8.setWidth("auto");
+ hbl8.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl8.setSpacing(4);
+ hbl8.setPadding(2);
+ d.add(hbl8);
+
+ var t8_1 = new qx.ui.basic.Terminator;
+ t8_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_1.setHeight("1*");
+ t8_1.setWidth(10);
+ t8_1.setBackgroundColor("green");
+ hbl8.add(t8_1);
+
+ var t8_2 = new qx.ui.basic.Terminator;
+ t8_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_2.setHeight("2*");
+ t8_2.setWidth(10);
+ t8_2.setBackgroundColor("blue");
+ t8_2.setMaxHeight(50);
+ hbl8.add(t8_2);
+
+ var t8_3 = new qx.ui.basic.Terminator;
+ t8_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_3.setHeight("3*");
+ t8_3.setWidth(10);
+ t8_3.setBackgroundColor("red");
+ hbl8.add(t8_3);
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 9:
+
+ *********************************************** */
+
+ var te9 = new qx.ui.basic.Label("#9");
+ te9.setLocation(240, 48);
+ d.add(te9);
+
+ var hbl9 = new qx.ui.layout.VerticalBoxLayout;
+ hbl9.setTop(78);
+ hbl9.setLeft(240);
+ hbl9.setBottom(48);
+ hbl9.setHeight(null);
+ hbl9.setWidth("auto");
+ hbl9.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl9.setSpacing(4);
+ hbl9.setPadding(2);
+ hbl9.setUseAdvancedFlexAllocation(true);
+ d.add(hbl9);
+
+ var t9_1 = new qx.ui.basic.Terminator;
+ t9_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_1.setHeight("1*");
+ t9_1.setWidth(10);
+ t9_1.setBackgroundColor("green");
+ hbl9.add(t9_1);
+
+ var t9_2 = new qx.ui.basic.Terminator;
+ t9_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_2.setHeight("2*");
+ t9_2.setWidth(10);
+ t9_2.setBackgroundColor("blue");
+ t9_2.setMaxHeight(50);
+ hbl9.add(t9_2);
+
+ var t9_3 = new qx.ui.basic.Terminator;
+ t9_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_3.setHeight("3*");
+ t9_3.setWidth(10);
+ t9_3.setBackgroundColor("red");
+ hbl9.add(t9_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 10:
+
+ *********************************************** */
+
+ var te10 = new qx.ui.basic.Label("#10");
+ te10.setLocation(280, 48);
+ d.add(te10);
+
+ var hbl10 = new qx.ui.layout.VerticalBoxLayout;
+ hbl10.setTop(78);
+ hbl10.setLeft(280);
+ hbl10.setBottom(48);
+ hbl10.setHeight(null);
+ hbl10.setWidth("auto");
+ hbl10.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl10.setSpacing(4);
+ hbl10.setPadding(2);
+ hbl10.setUseAdvancedFlexAllocation(true);
+ d.add(hbl10);
+
+ var t10_1 = new qx.ui.basic.Terminator;
+ t10_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_1.setHeight("1*");
+ t10_1.setWidth(10);
+ t10_1.setBackgroundColor("green");
+ t10_1.addEventListener("click", function(e) { this.setHeight(this.getHeight() == "1*" ? "4*" : "1*"); });
+ hbl10.add(t10_1);
+
+ var t10_2 = new qx.ui.basic.Terminator;
+ t10_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_2.setHeight("2*");
+ t10_2.setWidth(10);
+ t10_2.setBackgroundColor("blue");
+ t10_2.addEventListener("click", function(e) { this.setHeight(this.getHeight() == "2*" ? "1*" : "2*"); });
+ hbl10.add(t10_2);
+
+ var t10_3 = new qx.ui.basic.Terminator;
+ t10_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_3.setHeight("3*");
+ t10_3.setWidth(10);
+ t10_3.setBackgroundColor("red");
+ t10_3.addEventListener("click", function(e) { this.setHeight(this.getHeight() == "3*" ? "6*" : "3*"); });
+ hbl10.add(t10_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 11:
+
+ *********************************************** */
+
+ var te11 = new qx.ui.basic.Label("#11");
+ te11.setLocation(300, 48);
+ d.add(te11);
+
+ var hbl11 = new qx.ui.layout.VerticalBoxLayout;
+ hbl11.setTop(78);
+ hbl11.setLeft(300);
+ hbl11.setBottom(48);
+ hbl11.setHeight(null);
+ hbl11.setWidth("auto");
+ hbl11.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl11.setSpacing(4);
+ hbl11.setPadding(2);
+ d.add(hbl11);
+
+ var t11_1 = new qx.ui.basic.Terminator;
+ t11_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_1.setHeight("1*");
+ t11_1.setWidth(10);
+ t11_1.setBackgroundColor("green");
+ hbl11.add(t11_1);
+
+ var t11_2 = new qx.ui.basic.Terminator;
+ t11_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_2.setHeight(80);
+ t11_2.setWidth(10);
+ t11_2.setBackgroundColor("blue");
+ hbl11.add(t11_2);
+
+ var t11_3 = new qx.ui.basic.Terminator;
+ t11_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_3.setHeight("3*");
+ t11_3.setWidth(10);
+ t11_3.setBackgroundColor("red");
+ hbl11.add(t11_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 12:
+
+ *********************************************** */
+
+ var te12 = new qx.ui.basic.Label("#13");
+ te12.setLocation(320, 48);
+ d.add(te12);
+
+ var hbl12 = new qx.ui.layout.VerticalBoxLayout;
+ hbl12.setTop(78);
+ hbl12.setLeft(320);
+ hbl12.setWidth("auto");
+ hbl12.setHeight("auto");
+ hbl12.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl12.setSpacing(4);
+ hbl12.setPadding(2);
+ d.add(hbl12);
+
+ var t12_1 = new qx.ui.basic.Terminator;
+ t12_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_1.setHeight("1*");
+ t12_1.setWidth(10);
+ t12_1.setBackgroundColor("green");
+ hbl12.add(t12_1);
+
+ var t12_2 = new qx.ui.basic.Terminator;
+ t12_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_2.setHeight(80);
+ t12_2.setWidth(10);
+ t12_2.setBackgroundColor("blue");
+ hbl12.add(t12_2);
+
+ var t12_3 = new qx.ui.basic.Terminator;
+ t12_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_3.setHeight("3*");
+ t12_3.setWidth(10);
+ t12_3.setBackgroundColor("red");
+ hbl12.add(t12_3);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_1.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_1.html
new file mode 100644
index 0000000000..e2d39dbe11
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_1.html
@@ -0,0 +1,179 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Who Framed Roger Rabbit?</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w0 = new qx.ui.layout.CanvasLayout;
+ w0.set({left:20, top:48, right: 335, bottom: 48, backgroundColor:"Background", border:qx.renderer.border.BorderPresets.getInstance().inset});
+ w0.setOverflow("hidden");
+ d.add(w0);
+
+ var w1 = new qx.ui.window.Window("First Window");
+ w1.setSpace(20, 400, 20, 250);
+ w0.add(w1);
+
+ var w2 = new qx.ui.window.Window("Second Window", "icon/16/colors.png");
+ w2.setSpace(200, 300, 80, 350);
+ w0.add(w2);
+
+ var w3 = new qx.ui.window.Window("Third Window", "icon/16/network.png");
+ w3.setSpace(100, 300, 200, 200);
+ w3.setMaxWidth(450);
+ w3.setMaxHeight(300);
+ w0.add(w3);
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/favorites.png");
+ a1.set({ top: 4, left: 4 });
+ w1.add(a1);
+
+
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 10, top: 52, right: 10, bottom: 10 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Explore");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Internet");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Future");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ w1.add(tf1);
+
+
+
+ var at1 = new qx.ui.basic.Atom("Second Window", "icon/22/clock.png");
+ at1.setLocation(4, 4);
+ w2.add(at1);
+
+
+ var at2 = new qx.ui.basic.Atom("Third Window", "icon/48/colors.png");
+ at2.setLocation(4, 4);
+ w3.add(at2);
+
+
+
+
+
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Settings");
+ fs1.setLocation(4, 30);
+ fs1.setRight(4);
+ fs1.setBottom(4);
+
+
+ var chk1 = new qx.ui.form.CheckBox("Show Icon");
+ chk1.setLocation(0, 0);
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ w2.setShowIcon(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Caption");
+ chk2.setLocation(0, 20);
+ chk2.setChecked(true);
+ chk2.addEventListener("changeChecked", function(e) {
+ w2.setShowCaption(e.getData());
+ });
+
+
+
+ var chk3 = new qx.ui.form.CheckBox("Resizeable");
+ chk3.setLocation(0, 50);
+ chk3.setChecked(true);
+ chk3.addEventListener("changeChecked", function(e) {
+ w2.setResizeable(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Moveable");
+ chk4.setLocation(0, 70);
+ chk4.setChecked(true);
+ chk4.addEventListener("changeChecked", function(e) {
+ w2.setMoveable(e.getData());
+ });
+
+
+
+ var chk5 = new qx.ui.form.CheckBox("Show Close");
+ chk5.setLocation(0, 100);
+ chk5.setChecked(true);
+ chk5.addEventListener("changeChecked", function(e) {
+ w2.setShowClose(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Show Maximize/Restore");
+ chk6.setLocation(0, 120);
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ w2.setShowMaximize(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Show Minimize");
+ chk7.setLocation(0, 140);
+ chk7.setChecked(true);
+ chk7.addEventListener("changeChecked", function(e) {
+ w2.setShowMinimize(e.getData());
+ });
+
+
+
+ var chk8 = new qx.ui.form.CheckBox("Allow Close");
+ chk8.setLocation(0, 170);
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ w2.setAllowClose(e.getData());
+ });
+
+ var chk9 = new qx.ui.form.CheckBox("Allow Maximize");
+ chk9.setLocation(0, 190);
+ chk9.setChecked(true);
+ chk9.addEventListener("changeChecked", function(e) {
+ w2.setAllowMaximize(e.getData());
+ });
+
+ var chk10 = new qx.ui.form.CheckBox("Allow Minimize");
+ chk10.setLocation(0, 210);
+ chk10.setChecked(true);
+ chk10.addEventListener("changeChecked", function(e) {
+ w2.setAllowMinimize(e.getData());
+ });
+
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10);
+ w2.add(fs1);
+
+
+ w1.open();
+ w2.open();
+ w3.open();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_2.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_2.html
new file mode 100644
index 0000000000..0a1c3153d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_2.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing auto dimension possibility of qx.ui.window.Window.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.window.Window("First Window");
+ w1.getPane().setPadding(10);
+ w1.setLocation(100, 100);
+ w1.setWidth("auto");
+ w1.setHeight("auto");
+
+ d.add(w1);
+
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/bookmark.png");
+ a1.set({ top: 0, left: 100 });
+ w1.add(a1);
+
+ var chk1 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk1.set({ top: 45, left: 0 });
+
+ chk1.addEventListener("changeChecked", function(e) {
+ w1.setShowStatusbar(e.getData());
+ });
+
+ var btn1 = new qx.ui.form.Button("Yes", "icon/16/button-ok.png");
+ btn1.set({ top: 70, left : 0 });
+
+ var btn2 = new qx.ui.form.Button("No", "icon/16/button-cancel.png");
+ btn2.set({ top: 70, right : 0 });
+
+ w1.add(chk1, btn1, btn2);
+
+ w1.open();
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_3.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_3.html
new file mode 100644
index 0000000000..6493e7b81e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_3.html
@@ -0,0 +1,99 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Modal dialog with qx.ui.form.TextField and qx.ui.form.TextArea</p>
+ </div>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var txtfld;
+
+ var dialogEditFrage = new qx.ui.window.Window("Edit", "icon/16/editor.png");
+
+ with(dialogEditFrage) {
+ setSpace(300, 400, 100, 300);
+ setModal(true);
+
+ setShowClose(false);
+
+ var qx_widget = new qx.ui.basic.Atom('Question');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:10,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = txtfld = new qx.ui.form.TextArea();
+ with (qx_widget) {
+ set({top:10,right:10,width:'70%'})
+ };
+ add(qx_widget);
+
+ qx_widget = new qx.ui.basic.Atom('Type');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:70,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = new qx.ui.form.TextField();
+ with (qx_widget) {
+ set({top:70,right:10,width:'70%'})
+ };
+ add(qx_widget);
+
+
+ var btnOK = new qx.ui.form.Button("OK", "icon/16/button-ok.png");
+ var btnCancel = new qx.ui.form.Button("Cancel", "icon/16/button-cancel.png");
+ var btnSetText = new qx.ui.form.Button("Reload", "icon/16/reload.png");
+
+ btnOK.set({ bottom : 10, right : 10 });
+ btnCancel.set({ bottom : 10, left : 10 });
+ btnSetText.set({ bottom : 10, left : 100 });
+
+ btnCancel.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+ btnOK.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+
+ btnSetText.addEventListener("execute", function(e) {
+ txtfld.setValue("Some Text here!");
+ txtfld.setFocused(true);
+ });
+
+ add(btnOK, btnCancel, btnSetText);
+ }
+
+
+ var btnOpen = new qx.ui.form.Button("Open the dialog");
+ btnOpen.set({ top : 50, left : 20 });
+ btnOpen.addEventListener("click", function(e) {
+ dialogEditFrage.open();
+ });
+
+ d.add(btnOpen,dialogEditFrage);
+ });
+
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_4.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_4.html
new file mode 100644
index 0000000000..1d46a8099a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_4.html
@@ -0,0 +1,104 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Dialog with qx.ui.form.TextField and qx.ui.form.TextArea</p>
+ <p>Testing minimize handling.</p>
+ </div>
+
+
+ <script type="text/javascript" language="JavaScript">
+
+ qx.core.Init.getInstance().defineMain(function() {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var txtfld;
+
+ var dialogEditFrage = new qx.ui.window.Window("Edit", "icon/16/editor.png");
+ with(dialogEditFrage) {
+ setSpace(300, 400, 100, 300);
+
+ setShowClose(false);
+
+ var qx_widget = new qx.ui.basic.Atom('Question');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:10,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = txtfld = new qx.ui.form.TextArea();
+ with (qx_widget) {
+ set({top:10,right:10,width:'70%'})
+ }
+ add(qx_widget);
+
+ qx_widget = new qx.ui.basic.Atom('Type');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:70,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = new qx.ui.form.TextField();
+ with (qx_widget) {
+ set({top:70,right:10,width:'70%'})
+ }
+ add(qx_widget);
+
+
+ var btnOK = new qx.ui.form.Button("OK", "icon/16/button-ok.png");
+ var btnCancel = new qx.ui.form.Button("Cancel", "icon/16/button-cancel.png");
+ var btnSetText = new qx.ui.form.Button("Reload", "icon/16/reload.png");
+
+ btnOK.set({ bottom : 10, right : 10 });
+ btnCancel.set({ bottom : 10, left : 10 });
+ btnSetText.set({ bottom : 10, left : 100 });
+
+ btnCancel.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+ btnOK.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+
+ btnSetText.addEventListener("execute", function(e) {
+ txtfld.setValue("Some Text here!");
+ txtfld.setFocused(true);
+ });
+
+ add(btnOK, btnCancel, btnSetText);
+ }
+
+
+ var btnOpen = new qx.ui.form.Button("Open the dialog");
+ btnOpen.set({ top : 50, left : 20 });
+ btnOpen.addEventListener("click", function(e) {
+ dialogEditFrage.open();
+ });
+
+ var btnRestore = new qx.ui.form.Button("Restore the dialog");
+ btnRestore.set({ top : 80, left : 20 });
+ btnRestore.addEventListener("click", function(e) {
+ dialogEditFrage.restore();
+ });
+
+ d.add(btnOpen,btnRestore,dialogEditFrage);
+ });
+
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_5.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_5.html
new file mode 100644
index 0000000000..d1c48bcc4d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_5.html
@@ -0,0 +1,221 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for zIndex handling for different widgets.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var btnaler = new qx.ui.form.Button("Open Alert", "icon/16/error.png");
+ btnaler.setLocation(450, 50);
+ qx.ui.core.ClientDocument.getInstance().add(btnaler);
+
+
+ var aler = new qx.ui.popup.PopupAtom("Attention", "icon/128/error.png");
+ aler.setLocation(40, 70);
+ aler.setBackgroundColor("yellow");
+ aler.setOpacity(0.5);
+ qx.ui.core.ClientDocument.getInstance().add(aler);
+
+ btnaler.addEventListener("execute", function(e)
+ {
+ aler.show();
+ });
+
+
+
+ var bar = new qx.ui.basic.Terminator;
+ bar.setLocation(0, 0);
+ bar.setWidth(50);
+ bar.setBottom(0);
+ bar.setBackgroundColor("black");
+ bar.setOpacity(0.5);
+ bar.setZIndex(1e7);
+ qx.ui.core.ClientDocument.getInstance().add(bar);
+
+
+
+
+ var w1 = new qx.ui.window.Window("Application Window");
+ w1.setSpace(20, 400, 48, 250);
+ d.add(w1);
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb11 = new qx.ui.menu.Button("Open");
+ var mb12 = new qx.ui.menu.Button("Save");
+ var mb13 = new qx.ui.menu.Button("Close");
+ var mb14 = new qx.ui.menu.Button("Exit");
+
+ m1.add(mb11, mb12, mb13, mb14);
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb21 = new qx.ui.menu.Button("Cut");
+ var mb22 = new qx.ui.menu.Button("Copy");
+ var mb23 = new qx.ui.menu.Button("Paste");
+
+ m2.add(mb21, mb22, mb23);
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb31 = new qx.ui.menu.Button("Toolbars");
+ var mb32 = new qx.ui.menu.Button("Options");
+
+ m3.add(mb31, mb32);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var mb41 = new qx.ui.menu.Button("Help");
+ var mb42 = new qx.ui.menu.Button("Info");
+
+ m4.add(mb41, mb42);
+
+ qx.ui.core.ClientDocument.getInstance().add(m1, m2, m3, m4);
+
+
+
+
+
+
+
+ var t1 = new qx.ui.toolbar.ToolBar;
+
+ t1.setLocation(0, 0);
+ t1.setRight(0);
+
+ var tb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var tb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var tb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var tb4 = new qx.ui.toolbar.MenuButton("Help", m4);
+
+ t1.add(tb1, tb2, tb3, tb4);
+
+ w1.add(t1);
+
+ var tt1 = new qx.ui.popup.ToolTip("File Menu Button");
+ var tt2 = new qx.ui.popup.ToolTip("Edit Menu Button");
+ var tt3 = new qx.ui.popup.ToolTip("View Menu Button");
+ var tt4 = new qx.ui.popup.ToolTip("Help Menu Button");
+
+ tb1.setToolTip(tt1);
+ tb2.setToolTip(tt2);
+ tb3.setToolTip(tt3);
+ tb4.setToolTip(tt4);
+
+ qx.ui.core.ClientDocument.getInstance().add(tt1, tt2, tt3, tt4);
+
+
+
+
+
+
+
+
+ var c1 = new qx.ui.form.ComboBox;
+
+ c1.setLocation(0, 35);
+
+ c1.getList().add(new qx.ui.form.ListItem("Item 1"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 2"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 3"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 4"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 5"));
+
+ w1.add(c1);
+
+
+
+
+
+ var square = new qx.ui.basic.Terminator;
+ square.setDimension(50, 50);
+ square.setLocation(0, 70);
+ square.setBackgroundColor("blue");
+ w1.add(square);
+
+
+ var p1 = new qx.ui.popup.PopupAtom("Hello World");
+ p1.setBorder(4, "solid", "red");
+ p1.setBackgroundColor("yellow");
+ p1.setLocation(0, 70);
+ p1.setAutoHide(false);
+ w1.add(p1);
+
+ var p2 = new qx.ui.popup.PopupAtom("Hello World");
+ p2.setBorder(4, "solid", "yellow");
+ p2.setBackgroundColor("red");
+ p2.setLocation(30, 70);
+ p2.setAutoHide(false);
+ w1.add(p2);
+
+
+ var btn1 = new qx.ui.form.Button("Show1");
+ btn1.setLocation(140, 70);
+ w1.add(btn1);
+
+ var btn2 = new qx.ui.form.Button("Hide1");
+ btn2.setLocation(190, 70);
+ w1.add(btn2);
+
+ btn1.addEventListener("execute", function(e) {
+ p1.show();
+ });
+
+ btn2.addEventListener("execute", function(e) {
+ p1.hide();
+ });
+
+
+
+ var btn3 = new qx.ui.form.Button("Show2");
+ btn3.setLocation(250, 70);
+ w1.add(btn3);
+
+ var btn4 = new qx.ui.form.Button("Hide2");
+ btn4.setLocation(300, 70);
+ w1.add(btn4);
+
+ btn3.addEventListener("execute", function(e) {
+ p2.show();
+ });
+
+ btn4.addEventListener("execute", function(e) {
+ p2.hide();
+ });
+
+
+
+ w1.open();
+
+
+
+
+
+ var w2 = new qx.ui.window.Window("Test 2");
+ w2.setDimension(400, 200);
+ w2.setLocation(200, 200);
+ qx.ui.core.ClientDocument.getInstance().add(w2);
+ w2.show();
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_6.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_6.html
new file mode 100644
index 0000000000..af837c4c65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/Window_6.html
@@ -0,0 +1,109 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Dialog with qx.ui.form.TextField and qx.ui.form.TextArea</p>
+ <p>Testing initial focus handling.</p>
+ </div>
+
+
+ <script type="text/javascript" language="JavaScript">
+
+
+ qx.core.Init.getInstance().defineMain(function() {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var txtfld;
+
+ var dialogEditFrage = new qx.ui.window.Window("Edit", "icon/16/editor.png");
+
+
+ with(dialogEditFrage) {
+ setSpace(300, 400, 100, 300);
+
+ setShowClose(false);
+
+ var qxObj = new qx.ui.basic.Atom('Question');
+ with(qxObj)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:10,left:10,width:'20%'});
+ };
+ add(qxObj);
+
+ qxObj = txtfld = new qx.ui.form.TextArea();
+ with (qxObj) {
+ set({top:10,right:10,width:'70%'})
+ }
+ add(qxObj);
+
+ txtfld.addEventListener("appear", function(e) {
+ this.focus();
+ });
+
+ qxObj = new qx.ui.basic.Atom('Type');
+ with(qxObj)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:70,left:10,width:'20%'});
+ };
+ add(qxObj);
+
+ qxObj = new qx.ui.form.TextField();
+ with (qxObj) {
+ set({top:70,right:10,width:'70%'})
+ }
+ add(qxObj);
+
+
+ var btnOK = new qx.ui.form.Button("OK", "icon/16/button-ok.png");
+ var btnCancel = new qx.ui.form.Button("Cancel", "icon/16/button-cancel.png");
+ var btnSetFocus = new qx.ui.form.Button("Set Focus To First Field", "icon/16/reload.png");
+
+ btnOK.set({ bottom : 10, right : 10 });
+ btnCancel.set({ bottom : 10, left : 10 });
+ btnSetFocus.set({ bottom : 10, left : 100 });
+
+ btnCancel.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+ btnOK.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+
+ btnSetFocus.addEventListener("execute", function(e) {
+ txtfld.focus();
+ });
+
+ add(btnOK, btnCancel, btnSetFocus);
+ }
+
+ var btnOpen = new qx.ui.form.Button("Open the dialog");
+ btnOpen.set({ top : 50, left : 20 });
+ btnOpen.addEventListener("click", function(e) {
+ dialogEditFrage.open();
+ });
+
+ var btnRestore = new qx.ui.form.Button("Restore the dialog");
+ btnRestore.set({ top : 80, left : 20 });
+ btnRestore.addEventListener("click", function(e) {
+ dialogEditFrage.restore();
+ });
+
+ d.add(btnOpen,btnRestore,dialogEditFrage);
+ });
+
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/bigFont.css b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/bigFont.css
new file mode 100644
index 0000000000..568085d899
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/bigFont.css
@@ -0,0 +1,3 @@
+.box {
+ font-size: large;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/boldFont.css b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/boldFont.css
new file mode 100644
index 0000000000..c7f3aca388
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/boldFont.css
@@ -0,0 +1,3 @@
+.box {
+ font-weight: bold;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/cssQuery-p.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/cssQuery-p.js
new file mode 100644
index 0000000000..ecaa760da3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/cssQuery-p.js
@@ -0,0 +1,6 @@
+/*
+ cssQuery, version 2.0.2 (2005-08-19)
+ Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/)
+ License: http://creativecommons.org/licenses/LGPL/2.1/
+*/
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 x=6(){7 1D="2.0.2";7 C=/\\s*,\\s*/;7 x=6(s,A){33{7 m=[];7 u=1z.32.2c&&!A;7 b=(A)?(A.31==22)?A:[A]:[1g];7 1E=18(s).1l(C),i;9(i=0;i<1E.y;i++){s=1y(1E[i]);8(U&&s.Z(0,3).2b("")==" *#"){s=s.Z(2);A=24([],b,s[1])}1A A=b;7 j=0,t,f,a,c="";H(j<s.y){t=s[j++];f=s[j++];c+=t+f;a="";8(s[j]=="("){H(s[j++]!=")")a+=s[j];a=a.Z(0,-1);c+="("+a+")"}A=(u&&V[c])?V[c]:21(A,t,f,a);8(u)V[c]=A}m=m.30(A)}2a x.2d;5 m}2Z(e){x.2d=e;5[]}};x.1Z=6(){5"6 x() {\\n [1D "+1D+"]\\n}"};7 V={};x.2c=L;x.2Y=6(s){8(s){s=1y(s).2b("");2a V[s]}1A V={}};7 29={};7 19=L;x.15=6(n,s){8(19)1i("s="+1U(s));29[n]=12 s()};x.2X=6(c){5 c?1i(c):o};7 D={};7 h={};7 q={P:/\\[([\\w-]+(\\|[\\w-]+)?)\\s*(\\W?=)?\\s*([^\\]]*)\\]/};7 T=[];D[" "]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=X(f[i],t,n);9(j=0;(e=s[j]);j++){8(M(e)&&14(e,n))r.z(e)}}};D["#"]=6(r,f,i){7 e,j;9(j=0;(e=f[j]);j++)8(e.B==i)r.z(e)};D["."]=6(r,f,c){c=12 1t("(^|\\\\s)"+c+"(\\\\s|$)");7 e,i;9(i=0;(e=f[i]);i++)8(c.l(e.1V))r.z(e)};D[":"]=6(r,f,p,a){7 t=h[p],e,i;8(t)9(i=0;(e=f[i]);i++)8(t(e,a))r.z(e)};h["2W"]=6(e){7 d=Q(e);8(d.1C)9(7 i=0;i<d.1C.y;i++){8(d.1C[i]==e)5 K}};h["2V"]=6(e){};7 M=6(e){5(e&&e.1c==1&&e.1f!="!")?e:23};7 16=6(e){H(e&&(e=e.2U)&&!M(e))28;5 e};7 G=6(e){H(e&&(e=e.2T)&&!M(e))28;5 e};7 1r=6(e){5 M(e.27)||G(e.27)};7 1P=6(e){5 M(e.26)||16(e.26)};7 1o=6(e){7 c=[];e=1r(e);H(e){c.z(e);e=G(e)}5 c};7 U=K;7 1h=6(e){7 d=Q(e);5(2S d.25=="2R")?/\\.1J$/i.l(d.2Q):2P(d.25=="2O 2N")};7 Q=6(e){5 e.2M||e.1g};7 X=6(e,t){5(t=="*"&&e.1B)?e.1B:e.X(t)};7 17=6(e,t,n){8(t=="*")5 M(e);8(!14(e,n))5 L;8(!1h(e))t=t.2L();5 e.1f==t};7 14=6(e,n){5!n||(n=="*")||(e.2K==n)};7 1e=6(e){5 e.1G};6 24(r,f,B){7 m,i,j;9(i=0;i<f.y;i++){8(m=f[i].1B.2J(B)){8(m.B==B)r.z(m);1A 8(m.y!=23){9(j=0;j<m.y;j++){8(m[j].B==B)r.z(m[j])}}}}5 r};8(![].z)22.2I.z=6(){9(7 i=0;i<1z.y;i++){o[o.y]=1z[i]}5 o.y};7 N=/\\|/;6 21(A,t,f,a){8(N.l(f)){f=f.1l(N);a=f[0];f=f[1]}7 r=[];8(D[t]){D[t](r,A,f,a)}5 r};7 S=/^[^\\s>+~]/;7 20=/[\\s#.:>+~()@]|[^\\s#.:>+~()@]+/g;6 1y(s){8(S.l(s))s=" "+s;5 s.P(20)||[]};7 W=/\\s*([\\s>+~(),]|^|$)\\s*/g;7 I=/([\\s>+~,]|[^(]\\+|^)([#.:@])/g;7 18=6(s){5 s.O(W,"$1").O(I,"$1*$2")};7 1u={1Z:6(){5"\'"},P:/^(\'[^\']*\')|("[^"]*")$/,l:6(s){5 o.P.l(s)},1S:6(s){5 o.l(s)?s:o+s+o},1Y:6(s){5 o.l(s)?s.Z(1,-1):s}};7 1s=6(t){5 1u.1Y(t)};7 E=/([\\/()[\\]?{}|*+-])/g;6 R(s){5 s.O(E,"\\\\$1")};x.15("1j-2H",6(){D[">"]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=1o(f[i]);9(j=0;(e=s[j]);j++)8(17(e,t,n))r.z(e)}};D["+"]=6(r,f,t,n){9(7 i=0;i<f.y;i++){7 e=G(f[i]);8(e&&17(e,t,n))r.z(e)}};D["@"]=6(r,f,a){7 t=T[a].l;7 e,i;9(i=0;(e=f[i]);i++)8(t(e))r.z(e)};h["2G-10"]=6(e){5!16(e)};h["1x"]=6(e,c){c=12 1t("^"+c,"i");H(e&&!e.13("1x"))e=e.1n;5 e&&c.l(e.13("1x"))};q.1X=/\\\\:/g;q.1w="@";q.J={};q.O=6(m,a,n,c,v){7 k=o.1w+m;8(!T[k]){a=o.1W(a,c||"",v||"");T[k]=a;T.z(a)}5 T[k].B};q.1Q=6(s){s=s.O(o.1X,"|");7 m;H(m=s.P(o.P)){7 r=o.O(m[0],m[1],m[2],m[3],m[4]);s=s.O(o.P,r)}5 s};q.1W=6(p,t,v){7 a={};a.B=o.1w+T.y;a.2F=p;t=o.J[t];t=t?t(o.13(p),1s(v)):L;a.l=12 2E("e","5 "+t);5 a};q.13=6(n){1d(n.2D()){F"B":5"e.B";F"2C":5"e.1V";F"9":5"e.2B";F"1T":8(U){5"1U((e.2A.P(/1T=\\\\1v?([^\\\\s\\\\1v]*)\\\\1v?/)||[])[1]||\'\')"}}5"e.13(\'"+n.O(N,":")+"\')"};q.J[""]=6(a){5 a};q.J["="]=6(a,v){5 a+"=="+1u.1S(v)};q.J["~="]=6(a,v){5"/(^| )"+R(v)+"( |$)/.l("+a+")"};q.J["|="]=6(a,v){5"/^"+R(v)+"(-|$)/.l("+a+")"};7 1R=18;18=6(s){5 1R(q.1Q(s))}});x.15("1j-2z",6(){D["~"]=6(r,f,t,n){7 e,i;9(i=0;(e=f[i]);i++){H(e=G(e)){8(17(e,t,n))r.z(e)}}};h["2y"]=6(e,t){t=12 1t(R(1s(t)));5 t.l(1e(e))};h["2x"]=6(e){5 e==Q(e).1H};h["2w"]=6(e){7 n,i;9(i=0;(n=e.1F[i]);i++){8(M(n)||n.1c==3)5 L}5 K};h["1N-10"]=6(e){5!G(e)};h["2v-10"]=6(e){e=e.1n;5 1r(e)==1P(e)};h["2u"]=6(e,s){7 n=x(s,Q(e));9(7 i=0;i<n.y;i++){8(n[i]==e)5 L}5 K};h["1O-10"]=6(e,a){5 1p(e,a,16)};h["1O-1N-10"]=6(e,a){5 1p(e,a,G)};h["2t"]=6(e){5 e.B==2s.2r.Z(1)};h["1M"]=6(e){5 e.1M};h["2q"]=6(e){5 e.1q===L};h["1q"]=6(e){5 e.1q};h["1L"]=6(e){5 e.1L};q.J["^="]=6(a,v){5"/^"+R(v)+"/.l("+a+")"};q.J["$="]=6(a,v){5"/"+R(v)+"$/.l("+a+")"};q.J["*="]=6(a,v){5"/"+R(v)+"/.l("+a+")"};6 1p(e,a,t){1d(a){F"n":5 K;F"2p":a="2n";1a;F"2o":a="2n+1"}7 1m=1o(e.1n);6 1k(i){7 i=(t==G)?1m.y-i:i-1;5 1m[i]==e};8(!Y(a))5 1k(a);a=a.1l("n");7 m=1K(a[0]);7 s=1K(a[1]);8((Y(m)||m==1)&&s==0)5 K;8(m==0&&!Y(s))5 1k(s);8(Y(s))s=0;7 c=1;H(e=t(e))c++;8(Y(m)||m==1)5(t==G)?(c<=s):(s>=c);5(c%m)==s}});x.15("1j-2m",6(){U=1i("L;/*@2l@8(@\\2k)U=K@2j@*/");8(!U){X=6(e,t,n){5 n?e.2i("*",t):e.X(t)};14=6(e,n){5!n||(n=="*")||(e.2h==n)};1h=1g.1I?6(e){5/1J/i.l(Q(e).1I)}:6(e){5 Q(e).1H.1f!="2g"};1e=6(e){5 e.2f||e.1G||1b(e)};6 1b(e){7 t="",n,i;9(i=0;(n=e.1F[i]);i++){1d(n.1c){F 11:F 1:t+=1b(n);1a;F 3:t+=n.2e;1a}}5 t}}});19=K;5 x}();',62,190,'|||||return|function|var|if|for||||||||pseudoClasses||||test|||this||AttributeSelector|||||||cssQuery|length|push|fr|id||selectors||case|nextElementSibling|while||tests|true|false|thisElement||replace|match|getDocument|regEscape||attributeSelectors|isMSIE|cache||getElementsByTagName|isNaN|slice|child||new|getAttribute|compareNamespace|addModule|previousElementSibling|compareTagName|parseSelector|loaded|break|_0|nodeType|switch|getTextContent|tagName|document|isXML|eval|css|_1|split|ch|parentNode|childElements|nthChild|disabled|firstElementChild|getText|RegExp|Quote|x22|PREFIX|lang|_2|arguments|else|all|links|version|se|childNodes|innerText|documentElement|contentType|xml|parseInt|indeterminate|checked|last|nth|lastElementChild|parse|_3|add|href|String|className|create|NS_IE|remove|toString|ST|select|Array|null|_4|mimeType|lastChild|firstChild|continue|modules|delete|join|caching|error|nodeValue|textContent|HTML|prefix|getElementsByTagNameNS|end|x5fwin32|cc_on|standard||odd|even|enabled|hash|location|target|not|only|empty|root|contains|level3|outerHTML|htmlFor|class|toLowerCase|Function|name|first|level2|prototype|item|scopeName|toUpperCase|ownerDocument|Document|XML|Boolean|URL|unknown|typeof|nextSibling|previousSibling|visited|link|valueOf|clearCache|catch|concat|constructor|callee|try'.split('|'),0,{}))
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/4000kb.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/4000kb.xml
new file mode 100644
index 0000000000..d622c917a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/4000kb.xml
@@ -0,0 +1,102321 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>
+<all>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+</all>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/400kb.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/400kb.xml
new file mode 100644
index 0000000000..0f448c2f85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/400kb.xml
@@ -0,0 +1,10224 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>
+<all>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+</all>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/40kb.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/40kb.xml
new file mode 100644
index 0000000000..8cc7bd573f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/filesize/40kb.xml
@@ -0,0 +1,1003 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>
+<all>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+</all>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.html
new file mode 100644
index 0000000000..44c7219ef4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Anita Hummel</h1>
+ <p>42</p>
+ <p>Getho Bals</p>
+ <p>22432</p>
+ <p>Paris</p>
+ <p>France</p>
+ <p>0044.44930209</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.js
new file mode 100644
index 0000000000..6f348b6aea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Hummel",
+ "givenName" : "Anita",
+ "age" : 42,
+ "street" : "Getho Bals",
+ "plz" : 22432,
+ "city" : "Paris",
+ "country" : "France",
+ "phone" : "0044.44930209"
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.txt b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.txt
new file mode 100644
index 0000000000..a8a98376eb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.txt
@@ -0,0 +1,8 @@
+name = Hummel
+givenName = Anita
+age = 42
+street = Getho Bals
+plz = 22432
+city = Paris
+country = France
+phone = 0044.44930209
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.xml
new file mode 100644
index 0000000000..ecad1f77aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/anita.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Hummel</name>
+ <givenName>Anita</givenName>
+ <age>42</age>
+ <street>Getho Bals</street>
+ <plz>22432</plz>
+ <city>Paris</city>
+ <country>France</country>
+ <phone>0044.44930209</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.html
new file mode 100644
index 0000000000..610c1584aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Harald Schmidt</h1>
+ <p>65</p>
+ <p>Karlsruher Allee</p>
+ <p>78392</p>
+ <p>Stuttgart</p>
+ <p>Germany</p>
+ <p>0049.750930302</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.js
new file mode 100644
index 0000000000..f593737448
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Schmidt",
+ "givenName" : "Harald",
+ "age" : 65,
+ "street" : "Karlsruher Allee",
+ "plz" : 78392,
+ "city" : "Stuttgart",
+ "country" : "Germany",
+ "phone" : "0049.750930302"
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.txt b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.txt
new file mode 100644
index 0000000000..215a27dd9e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.txt
@@ -0,0 +1,8 @@
+name = Schmidt
+givenName = Harald
+age = 65
+street = Karlsruher Allee
+plz = 78392
+city = Stuttgart
+country = Germany
+phone = 0049.750930302
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.xml
new file mode 100644
index 0000000000..425a8fdc21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/harald.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Schmidt</name>
+ <givenName>Harald</givenName>
+ <age>65</age>
+ <street>Karlsruher Allee</street>
+ <plz>78392</plz>
+ <city>Stuttgart</city>
+ <country>Germany</country>
+ <phone>0049.750930302</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.html
new file mode 100644
index 0000000000..e2a5a55504
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Lisbeth Meyer</h1>
+ <p>74</p>
+ <p>Burlington Plaza</p>
+ <p>32323</p>
+ <p>New York</p>
+ <p>United States</p>
+ <p>0030.302020234</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.js
new file mode 100644
index 0000000000..40dfd03463
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Meyer",
+ "givenName" : "Lisbeth",
+ "age" : 74,
+ "street" : "Burlington Plaza",
+ "plz" : 32323,
+ "city" : "New York",
+ "country" : "United States",
+ "phone" : "0030.302020234"
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.txt b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.txt
new file mode 100644
index 0000000000..def297f12a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.txt
@@ -0,0 +1,8 @@
+name = Meyer
+givenName = Lisbeth
+age = 74
+street = Burlington Plaza
+plz = 32323
+city = New York
+country = United States
+phone = 0030.302020234
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.xml
new file mode 100644
index 0000000000..a67a98d4ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/lisbeth.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Meyer</name>
+ <givenName>Lisbeth</givenName>
+ <age>74</age>
+ <street>Burlington Plaza</street>
+ <plz>32323</plz>
+ <city>New York</city>
+ <country>United States</country>
+ <phone>0030.302020234</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.html
new file mode 100644
index 0000000000..f43ad8b091
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Paul Fuettner</h1>
+ <p>27</p>
+ <p>Bismarckstrasse</p>
+ <p>33990</p>
+ <p>Garbsen</p>
+ <p>Germany</p>
+ <p>0049.57232067</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.js b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.js
new file mode 100644
index 0000000000..9739f477bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Fuettner",
+ "givenName" : "Paul",
+ "age" : 27,
+ "street" : "Bismarckstrasse",
+ "plz" : 33990,
+ "city" : "Garbsen",
+ "country" : "Germany",
+ "phone" : "0049.57232067"
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.txt b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.txt
new file mode 100644
index 0000000000..c79abc65a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.txt
@@ -0,0 +1,8 @@
+name = Fuettner
+givenName = Paul
+age = 27
+street = Bismarckstrasse
+plz = 33990
+city = Garbsen
+country = Germany
+phone = 0049.57232067
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.xml b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.xml
new file mode 100644
index 0000000000..3ddfa44b29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/data/persons/paul.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Fuettner</name>
+ <givenName>Paul</givenName>
+ <age>27</age>
+ <street>Bismarckstrasse</street>
+ <plz>33990</plz>
+ <city>Garbsen</city>
+ <country>Germany</country>
+ <phone>0049.57232067</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file1.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file1.swf
new file mode 100644
index 0000000000..2e6d69a3fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file1.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file10.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file10.swf
new file mode 100644
index 0000000000..eeafa9a8f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file10.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file2.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file2.swf
new file mode 100644
index 0000000000..51c8f0ff76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file2.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file3.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file3.swf
new file mode 100644
index 0000000000..0b6b56be85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file3.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file4.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file4.swf
new file mode 100644
index 0000000000..746baa8cd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file4.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file5.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file5.swf
new file mode 100644
index 0000000000..a3333e1c31
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file5.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file6.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file6.swf
new file mode 100644
index 0000000000..2cad550081
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file6.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file7.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file7.swf
new file mode 100644
index 0000000000..b5f4eb4ddf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file7.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file8.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file8.swf
new file mode 100644
index 0000000000..54c9a11edc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file8.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file9.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file9.swf
new file mode 100644
index 0000000000..cc41ff1c10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/color/file9.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.fla b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.fla
new file mode 100644
index 0000000000..afd4bb6134
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.fla
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.swf b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.swf
new file mode 100644
index 0000000000..8e0b966bca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/flash/fo_tester.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/grid_dialog_box.png b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/grid_dialog_box.png
new file mode 100644
index 0000000000..2bc24a8018
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/image/grid_dialog_box.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/index.html
new file mode 100644
index 0000000000..6f2d4721c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/html/test/index.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/qx.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Please choose a test from above.</p>
+ <p>These tests may not always be up-to-date and functioning.</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/index.html b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/index.html
new file mode 100644
index 0000000000..96c1bfda59
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/index.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
+ <title>qooxdoo demo</title>
+ <link type="text/css" rel="stylesheet" href="resource/css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="resource/css/layout_ie.css"/>
+ <![endif]-->
+ <style type="text/css">
+*{
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+img{
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+}
+
+#content{
+ margin: 40px 20px 0;
+ width: 400px;
+}
+
+h1{
+ font-size: 20px;
+ margin-bottom: 20px;
+}
+
+h2{
+ font-size: 14px;
+}
+
+a{
+ color: #335EA8;
+}
+
+li{
+ margin-left: 16px;
+ list-style: square;
+ margin-bottom: 20px;
+}
+
+p{
+ font-size: 12px;
+}
+ </style>
+</head>
+<body>
+ <div id="demoHead">qooxdoo: <span>The new era of web interface development</span></div>
+ <div id="demoFoot"></div>
+
+ <div id="content" style="position:absolute;top:0px;left:0px">
+ <h1>qooxdoo <span>demo</demo></h1>
+
+ <ul>
+ <li>
+ <h2><a href="html/at-a-glance/index.html">At-a-Glance</a></h2>
+ <p>A good example for qooxdoo's versatility.</p>
+ </li>
+ <li>
+ <h2><a href="html/showcase/Showcase_1.html">Showcase</a></h2>
+ <p>Complex application-like interface using multiple qooxdoo widgets.</p>
+ </li>
+ <li>
+ <h2><a href="html/example/index.html">Example</a></h2>
+ <p>Easily to understand examples. The basic features of each qooxdoo widget is demonstrated in a separate example. This section is probably the one you are looking for!</p>
+ </li>
+ <li>
+ <h2><a href="html/test/index.html">Test</a></h2>
+ <p>These tests demonstrate internal functionality of qooxdoo. Not really useful for the typical qooxdoo user, but needed for developers to test some complex layout stuff, performance related problems and more. The tests may not always be up-to-date and functioning!</p>
+ </li>
+ <li>
+ <h2><a href="html/performance/index.html">Performance</a></h2>
+ <p>These tests are used to test performance of different javascript/qooxdoo rountines and allows them to compare them with each other</p>
+ </li>
+ </ul>
+ </div>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout.css b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout.css
new file mode 100644
index 0000000000..077d71d3be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout.css
@@ -0,0 +1,162 @@
+body{
+ font-size: 11px;
+ font-family: Arial, "Bitstream Vera Sans", Verdana, sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+p{
+ margin: 6px 0;
+}
+
+#demoHead,
+#demoFoot{
+ position: absolute;
+ left: 0px;
+ right: 0px;
+ width: 100%;
+ background: #134275;
+ padding: 3px 8px;
+ height: 20px;
+ color: white;
+ font-weight: bold;
+ overflow: hidden;
+ z-index: 1000000000;
+}
+
+#demoHead{
+ top: 0px;
+}
+
+#demoHead span{
+ font-weight: normal;
+}
+
+#demoFoot{
+ bottom: 0px;
+}
+
+#demoFoot a{
+ color: white;
+}
+
+#demoFrame{
+ position: absolute;
+ top: 20px;
+ bottom: 20px;
+ right: 0;
+ width: 280px;
+ background: #fff;
+ border-left: 10px solid #134275;
+ z-index: 1000000000;
+}
+
+#demoFiles{
+ font-size: 11px;
+ font-family: Tahoma, Verdana, sans-serif;
+
+ position: absolute;
+ top: 24px;
+ right: 50px;
+ width: 215px;
+ z-index: 1000000002;
+}
+
+#demoJump{
+ position: absolute;
+ top: 24px;
+ right: 4px;
+ width: 45px;
+ text-align: right;
+ z-index: 1000000002;
+}
+
+#demoDescription{
+ position: absolute;
+ top: 44px;
+ height : 120px;
+ width: 266px;
+ right: 4px;
+ z-index: 1000000002;
+ overflow: auto;
+ border-bottom: 10px solid #134275;
+ padding: 0px 6px 0px 4px;
+}
+
+#demoDescription p{
+ margin: 4px 0;
+}
+
+#demoDescription h1{
+ font-size: 12px;
+ margin: 8px 0 4px;
+}
+
+#demoDebug{
+ position: absolute;
+ top: 160px;
+ bottom: 24px;
+ right: 4px;
+ width: 266px;
+ font-size: 10px;
+ font-family: "Bitstream Vera Sans Mono", "Courier New", "Courier", monospace;
+ z-index: 1000000102;
+}
+
+#demoDebug .log-body{
+ overflow: auto;
+ position: absolute;
+ top: 30px;
+ bottom: 0px;
+ width: 266px;
+ padding: 4px;
+}
+
+#demoDebug .log-debug{
+ color: gray;
+ padding-left: 6px;
+}
+
+#demoDebug .log-info{
+ background: #DFEBFD;
+ padding-left: 6px;
+}
+
+#demoDebug .log-warn{
+ background: #F5FAAD;
+ padding-left: 6px;
+}
+
+#demoDebug .log-error{
+ background: #D2623E;
+ color: black;
+ padding-left: 6px;
+}
+
+#demoDebug .log-group{
+ margin-top: 4px;
+ margin-bottom: 1px;
+ text-decoration: underline;
+}
+
+#demoDebug .log-head{
+ padding: 8px 2px 4px;
+}
+
+#demoJump button,
+#demoDebug .log-head button{
+ border: 1px solid #335EA8;
+ margin: 0 2px;
+ font-size: 11px;
+ background: #EBE9ED;
+ font-family: Tahoma, Verdana, sans-serif;
+}
+
+#demoDebug .log-head button{
+ visibility: visible;
+}
+
+#demoJump button{
+ width: 16px;
+ -moz-appearance: none !important;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout_ie.css b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout_ie.css
new file mode 100644
index 0000000000..70de91b69e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/source/resource/css/layout_ie.css
@@ -0,0 +1,11 @@
+#demoFrame{
+ height: expression(document.body.offsetHeight - 40);
+}
+
+#demoDebug{
+ height: expression(document.body.offsetHeight - 184);
+}
+
+#demoDebug .log-body{
+ height: expression(document.body.offsetHeight - 214);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.js.in b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.js.in
new file mode 100644
index 0000000000..dcd32b5b28
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.js.in
@@ -0,0 +1,118 @@
+(function()
+{
+ var pos = Number(window.location.href.substring(window.location.href.lastIndexOf("/")+1, window.location.href.length-5));
+ var tnpos = pos + 1;
+ var tppos = pos - 1;
+
+ if (tnpos < 10)
+ tnpos = String("000" + tnpos)
+ else if (tnpos < 100)
+ tnpos = String("00" + tnpos)
+ else if (tnpos < 1000)
+ tnpos = String("0" + tnpos)
+ else
+ tnpos = String(tnpos)
+
+ if (tppos < 10)
+ tppos = String("000" + tppos)
+ else if (tppos < 100)
+ tppos = String("00" + tppos)
+ else if (tppos < 1000)
+ tppos = String("0" + tppos)
+ else
+ tppos = String(tppos)
+
+
+ document.write('<div id="demoHead">qooxdoo: <span>The new era of web development</span></div>');
+ document.write('<div id="demoFoot">');
+
+ if( /\/showcase\//.test(window.location.href) ) {
+ document.write('Selected: Showcase | ');
+ document.write('[<a href="../../index.html">Back to overview</a>] &#160;');
+ } else if( /\/example\//.test(window.location.href) ) {
+ document.write('Selected: Example | ');
+ document.write('[<a href="../../index.html">Back to overview</a>] &#160;');
+ } else if( /\/performance\//.test(window.location.href) ) {
+ document.write('Selected: Performance | ');
+ document.write('[<a href="../../index.html">Back to overview</a>] &#160;');
+ } else {
+ document.write('Selected: Test | ');
+ document.write('[<a href="../../index.html">Back to overview</a>] &#160;');
+ };
+
+ document.write('[<a href="javascript:qx.dev.Pollution.consoleInfo(\'window\');">Global Pollution</a>] &#160;');
+ document.write('[<a href="javascript:qx.core.Object.summary();">Object Summary</a>] &#160;');
+
+ document.write('</div>');
+ document.write('<div id="demoDebug"></div>');
+ document.write('<div id="demoFrame">&#160;</div>');
+
+ qx.dev.log.Logger.ROOT_LOGGER.removeAllAppenders();
+ qx.dev.log.Logger.ROOT_LOGGER.addAppender(new qx.dev.log.DivAppender("demoDebug"));
+
+ function showTestFiles()
+ {
+ var str = "";
+ if( window.location.href.search(/\/showcase\//)+1 ) {
+ str = showstr;
+ }
+ else if( window.location.href.search(/\/example\//)+1 ) {
+ str = exastr;
+ }
+ else if( window.location.href.search(/\/performance\//)+1 ) {
+ str = perfstr;
+ }
+ else if( window.location.href.search(/\/test\//)+1 ) {
+ str = teststr;
+ }
+
+ var arr = str.split(" ");
+ var p = window.location.pathname.replace(/\\/g, "/");
+ var sel = -1;
+
+ document.writeln('<select id="demoFiles" onchange="if(this.options[this.selectedIndex].value)window.location.href=this.options[this.selectedIndex].value">');
+ document.writeln('<option value=""></option>');
+ for( var i=1; i<arr.length; i++ ) {
+ document.write('<option value="' + arr[i] + '"');
+ if(p.search(new RegExp( "\/" + arr[i]) )+1) {
+ document.write(' selected="selected"');
+ sel = i;
+ }
+ document.writeln('>' + arr[i].replace(/_/g, " ").replace(/\.html/, "") + '</option>');
+ }
+ document.writeln('</select>');
+
+ if (sel != -1)
+ {
+ document.writeln('<div id="demoJump">');
+
+ if (sel > 1) {
+ document.writeln("<button onclick='window.location.href=\"" + arr[sel-1] + "\"'>&lt;</button>");
+ }
+
+ if (sel < arr.length-1) {
+ document.writeln("<button onclick='window.location.href=\"" + arr[sel+1] + "\"'>&gt;</button>");
+ }
+
+ document.writeln('</div>');
+ };
+ }
+
+ var url = location.href;
+ var pos = url.indexOf("/html/")+6;
+ var split = url.substring(pos).split("/");
+ var category = split[0];
+ category = category.charAt(0).toUpperCase() + category.substring(1);
+ var pagename = split[1].replace(".html", "").replace(/_/g, " ");
+ pagename = pagename.charAt(0).toUpperCase() + pagename.substring(1);
+
+ document.title = "qooxdoo » Demo » " + category + " » " + pagename;
+
+ if (window.location.href.indexOf("demo.qooxdoo.org") != -1)
+ {
+ document.write('<script type="text/javascript">var a_vars = []; var pagename=""; var phpmyvisitesSite = 5; var phpmyvisitesURL = "http://counter.qooxdoo.org/phpmyvisites.php";</script>');
+ document.write('<script type="text/javascript" src="http://counter.qooxdoo.org/phpmyvisites.js"></script>');
+ document.write('<script type="text/javascript" src="http://www.google-analytics.com/urchin.js"></script>');
+ document.write('<script type="text/javascript">_uacct = "UA-415440-1"; function urchinStart() { urchinTracker() }; if (window.addEventListener)window.addEventListener("load", urchinStart, false); else if(window.attachEvent)window.attachEvent("onload", urchinStart);</script>');
+ }
+//})();
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.sh b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.sh
new file mode 100755
index 0000000000..b30d283b65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/demo/tool/layout.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+
+BASE="tool/layout.js.in"
+DIST="$1"
+SCAN="$2"
+TITLE="$3"
+
+mkdir -p `dirname $DIST`
+
+cat $BASE > $DIST
+
+showstr=""
+for file in $SCAN/showcase/*.html ;
+do
+ if [ `basename $file` != "index.html" ]; then
+ showstr="$showstr `basename $file`";
+ fi
+done
+echo "var showstr = \"$showstr\";" >> $DIST
+
+exastr=""
+for file in $SCAN/example/*.html ;
+do
+ if [ `basename $file` != "index.html" ]; then
+ exastr="$exastr `basename $file`";
+ fi
+done
+echo "var exastr = \"$exastr\";" >> $DIST
+
+perfstr=""
+for file in $SCAN/performance/*.html ;
+do
+ if [ `basename $file` != "index.html" ]; then
+ perfstr="$perfstr `basename $file`";
+ fi
+done
+echo "var perfstr = \"$perfstr\";" >> $DIST
+
+teststr=""
+for file in $SCAN/test/*.html ;
+do
+ if [ `basename $file` != "index.html" ]; then
+ teststr="$teststr `basename $file`";
+ fi
+done
+echo "var teststr = \"$teststr\";" >> $DIST
+
+echo "showTestFiles();" >> $DIST
+
+echo "})();" >> $DIST
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/Makefile b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/Makefile
new file mode 100644
index 0000000000..97b4ada374
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/Makefile
@@ -0,0 +1,167 @@
+###################################################################################
+# VARIABLES
+###################################################################################
+
+FRAMEWORK=.
+GENERATOR=$(FRAMEWORK)/tool/generator.py
+CACHE=$(FRAMEWORK)/.cache
+SOURCELOADER=
+NICE=10
+TIMEFLAG = `date +'%s'`
+
+ifneq ($(SOURCELOADER),)
+ SOURCELDR = --source-loader-type $(SOURCELOADER)
+else
+ SOURCELDR =
+endif
+
+
+###################################################################################
+# DEFAULT TARGET
+###################################################################################
+
+all: build
+
+
+
+###################################################################################
+# COMMON TARGETS
+###################################################################################
+
+source: generate-source
+build: generate-build
+debug: generate-debug
+pretty: generate-pretty
+fix: generate-fix
+
+
+###################################################################################
+# CLEANUP TARGETS
+###################################################################################
+
+clean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @rm -f build/script/qx.js source/script/qx.js
+
+realclean: clean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (REAL)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) rm -rf build source/script
+ @nice -n $(NICE) rm -rf debug-tokens debug-tree
+
+distclean: realclean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (DIST)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) find tool -name "*.pyc" | xargs rm -f
+ @nice -n $(NICE) find . -name "*~" -o -name "*.bak" -o -name "*.old" -o -name "*.compiled" | xargs rm -rf
+ @nice -n $(NICE) rm -rf $(CACHE)
+
+
+
+
+###################################################################################
+# GENERATOR TARGETS
+###################################################################################
+
+generate-all:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --generate-compiled-script \
+ --compiled-script-file build/script/qx.js \
+ --optimize-strings \
+ --optimize-variables \
+ --copy-resources \
+ --resource-input source/resource \
+ --resource-output build/resource \
+ --source-script-path ../class \
+ --generate-source-script $(SOURCELDR) \
+ --source-script-file source/script/qx.js \
+ --cache-directory $(CACHE)
+
+generate-compile:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --generate-compiled-script \
+ --compiled-script-file build/script/qx.js \
+ --optimize-strings \
+ --optimize-variables \
+ --cache-directory $(CACHE)
+
+generate-resource:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --copy-resources \
+ --resource-input source/resource \
+ --resource-output build/resource \
+ --cache-directory $(CACHE)
+
+generate-build:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --generate-compiled-script \
+ --compiled-script-file build/script/qx.js \
+ --optimize-strings \
+ --optimize-variables \
+ --copy-resources \
+ --resource-input source/resource \
+ --resource-output build/resource \
+ --cache-directory $(CACHE)
+
+generate-source:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --source-script-path ../class \
+ --generate-source-script $(SOURCELDR) \
+ --source-script-file source/script/qx.js \
+ --cache-directory $(CACHE)
+
+generate-tree:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --tree-output-directory debug-tree \
+ --store-tree \
+ --cache-directory $(CACHE)
+
+generate-tokens:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --token-output-directory debug-tokens \
+ --store-tokens \
+ --cache-directory $(CACHE)
+
+generate-debug:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --tree-output-directory debug-tree \
+ --token-output-directory debug-tokens \
+ --store-tree \
+ --store-tokens \
+ --cache-directory $(CACHE)
+
+generate-pretty:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --pretty-print \
+ --cache-directory $(CACHE)
+
+generate-fix:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --fix-source \
+ --cache-directory $(CACHE)
+
+revision-bump:
+ @echo
+ @echo " REVISION BUMP"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Updating version file..."
+ @tool/modules/tagtool.py source/class/qx/core/Version.js
+ @echo " * Committing to SVN..."
+ @svn commit -m 'Revision bump: Online demo update' source/class/qx/core/Version.js
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js
new file mode 100644
index 0000000000..f4e25452b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js
@@ -0,0 +1,749 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#id(qx.OO)
+#module(core)
+#after(qx.Settings)
+#load(qx.lang.Core)
+#load(qx.util.Return)
+#optional(qx.event.type.DataEvent)
+
+************************************************************************ */
+
+// Usage of this hacky construct to make qx.OO available inside the API viewer
+qx.OO = {};
+qx.OO.defineClass = function() {};
+qx.Class = qx.OO;
+qx.OO.defineClass("qx.OO");
+
+qx.Class.classes = {};
+qx.Class.setter = {};
+qx.Class.getter = {};
+qx.Class.resetter = {};
+qx.Class.values = {};
+qx.Class.propertyNumber = 0;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFINE CLASS IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+/**
+ * define a new qooxdoo class
+ * All classes should be defined in this way.
+ *
+ * @param vClassName {string} fully qualified class name (e.g. "qx.ui.form.Button")
+ * @param vSuper {Object} super class
+ * @param vConstructor {Function} the constructor of the new class
+ */
+qx.Class.defineClass = function(vClassName, vSuper, vConstructor)
+{
+ var vSplitName = vClassName.split(".");
+ var vNameLength = vSplitName.length-1;
+ var vTempObject = window;
+
+ // Setting up namespace
+ for (var i=0; i<vNameLength; i++)
+ {
+ if (typeof vTempObject[vSplitName[i]] === "undefined") {
+ vTempObject[vSplitName[i]] = {};
+ }
+
+ vTempObject = vTempObject[vSplitName[i]];
+ }
+
+ // Instantiate objects/inheritance
+ if (typeof vSuper === "undefined")
+ {
+ if (typeof vConstructor !== "undefined") {
+ throw new Error("SuperClass is undefined, but constructor was given for class: " + vClassName);
+ }
+
+ qx.Class = vTempObject[vSplitName[i]] = {};
+ qx.Proto = null;
+ qx.Super = null;
+ }
+ else if (typeof vConstructor === "undefined")
+ {
+ qx.Class = vTempObject[vSplitName[i]] = vSuper;
+ qx.Proto = null;
+ qx.Super = vSuper;
+ }
+ else
+ {
+ qx.Class = vTempObject[vSplitName[i]] = vConstructor;
+
+ // build helper function
+ // this omits the initial constructor call while inherit properties
+ var vHelperConstructor = function() {};
+ vHelperConstructor.prototype = vSuper.prototype;
+ qx.Proto = vConstructor.prototype = new vHelperConstructor;
+
+ qx.Super = vConstructor.superclass = vSuper;
+
+ qx.Proto.classname = vConstructor.classname = vClassName;
+ qx.Proto.constructor = vConstructor;
+ }
+
+ // Store reference to global classname registry
+ qx.OO.classes[vClassName] = qx.Class;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OBJECT PROPERTY EXTENSION
+---------------------------------------------------------------------------
+*/
+
+qx.Class.addFastProperty = function(vConfig)
+{
+ var vName = vConfig.name;
+ var vUpName = qx.lang.String.toFirstUp(vName);
+
+ var vStorageField = "_value" + vUpName;
+ var vGetterName = "get" + vUpName;
+ var vSetterName = "set" + vUpName;
+ var vComputerName = "_compute" + vUpName;
+
+ qx.Proto[vStorageField] = typeof vConfig.defaultValue !== "undefined" ? vConfig.defaultValue : null;
+
+ if (vConfig.noCompute)
+ {
+ qx.Proto[vGetterName] = function() {
+ return this[vStorageField];
+ }
+ }
+ else
+ {
+ qx.Proto[vGetterName] = function() {
+ return this[vStorageField] == null ? this[vStorageField] = this[vComputerName]() : this[vStorageField];
+ }
+ }
+
+ if (vConfig.setOnlyOnce)
+ {
+ qx.Proto[vSetterName] = function(vValue)
+ {
+ this[vStorageField] = vValue;
+ this[vSetterName] = null;
+
+ return vValue;
+ }
+ }
+ else
+ {
+ qx.Proto[vSetterName] = function(vValue) {
+ return this[vStorageField] = vValue;
+ }
+ }
+
+ if (!vConfig.noCompute)
+ {
+ qx.Proto[vComputerName] = function() {
+ return null;
+ }
+ }
+}
+
+qx.OO.addCachedProperty = function(p)
+{
+ var vName = p.name;
+ var vUpName = qx.lang.String.toFirstUp(vName);
+
+ var vStorageField = "_cached" + vUpName;
+ var vComputerName = "_compute" + vUpName;
+ var vChangeName = "_change" + vUpName;
+
+ if (typeof p.defaultValue !== "undefined") {
+ qx.Proto[vStorageField] = p.defaultValue;
+ }
+
+ qx.Proto["get" + vUpName] = function()
+ {
+ if (this[vStorageField] == null) {
+ this[vStorageField] = this[vComputerName]();
+ }
+
+ return this[vStorageField];
+ }
+
+ qx.Proto["_invalidate" + vUpName] = function()
+ {
+ if (this[vStorageField] != null)
+ {
+ this[vStorageField] = null;
+
+ if (p.addToQueueRuntime) {
+ this.addToQueueRuntime(p.name);
+ }
+ }
+ }
+
+ qx.Proto["_recompute" + vUpName] = function()
+ {
+ var vOld = this[vStorageField];
+ var vNew = this[vComputerName]();
+
+ if (vNew != vOld)
+ {
+ this[vStorageField] = vNew;
+ this[vChangeName](vNew, vOld);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ qx.Proto[vChangeName] = function(vNew, vOld) {};
+ qx.Proto[vComputerName] = function() { return null; };
+}
+
+qx.Class.addPropertyGroup = function(p)
+{
+ /* --------------------------------------------------------------------------------
+ PRE-CHECKS
+ -------------------------------------------------------------------------------- */
+ if(typeof p !== "object") {
+ throw new Error("Param should be an object!");
+ }
+
+ if (qx.util.Validation.isInvalid(p.name)) {
+ throw new Error("Malformed input parameters: name needed!");
+ }
+
+ if (qx.util.Validation.isInvalid(p.members)) {
+ throw new Error("Malformed input parameters: members needed!");
+ }
+
+ p.method = qx.lang.String.toFirstUp(p.name);
+
+
+ /* --------------------------------------------------------------------------------
+ CACHING
+ -------------------------------------------------------------------------------- */
+ p.getter = [];
+ p.setter = [];
+
+ for (var i=0, l=p.members.length; i<l; i++) {
+ p.setter.push("set" + qx.lang.String.toFirstUp(p.members[i]));
+ }
+
+ for (var i=0, l=p.members.length; i<l; i++) {
+ p.getter.push("get" + qx.lang.String.toFirstUp(p.members[i]));
+ }
+
+
+ /* --------------------------------------------------------------------------------
+ GETTER
+ -------------------------------------------------------------------------------- */
+ qx.Proto["get" + p.method] = function()
+ {
+ var a = [];
+ var g = p.getter;
+
+ for (var i=0, l=g.length; i<l; i++) {
+ a.push(this[g[i]]());
+ }
+
+ return a;
+ };
+
+
+ /* --------------------------------------------------------------------------------
+ SETTER
+ -------------------------------------------------------------------------------- */
+ switch(p.mode)
+ {
+ case "shorthand":
+ qx.Proto["set" + p.method] = function()
+ {
+ if (arguments.length > 4 || arguments.length == 0) {
+ throw new Error("Invalid number of arguments for property " + p.name + ": " + arguments);
+ }
+
+ try
+ {
+ var ret = qx.lang.Array.fromShortHand(arguments);
+ }
+ catch(ex)
+ {
+ throw new Error("Invalid shorthand values for property " + p.name + ": " + arguments + ": " + ex);
+ }
+
+ var s = p.setter;
+ var l = s.length;
+
+ for (var i=0; i<l; i++) {
+ this[s[i]](ret[i]);
+ }
+ };
+ break;
+
+ default:
+ qx.Proto["set" + p.method] = function()
+ {
+ var s = p.setter;
+ var l = s.length;
+
+ if (arguments.length != l) {
+ throw new Error("Invalid number of arguments (needs: " + l + ", is: " + arguments.length + ") for property " + p.name + ": " + qx.lang.Array.fromArguments(arguments).toString());
+ }
+
+ for (var i=0; i<l; i++) {
+ this[s[i]](arguments[i]);
+ }
+ };
+ }
+}
+
+qx.Class.removeProperty = function(p)
+{
+ if (typeof qx.Proto._properties !== "string") {
+ throw new Error("Has no properties!");
+ }
+
+ if(typeof p !== "object") {
+ throw new Error("Param should be an object!");
+ }
+
+ if (qx.util.Validation.isInvalid(p.name)) {
+ throw new Error("Malformed input parameters: name needed!");
+ }
+
+ // building shorter prototype access
+ var pp = qx.Proto;
+
+ p.method = qx.lang.String.toFirstUp(p.name);
+ p.implMethod = p.impl ? qx.lang.String.toFirstUp(p.impl) : p.method;
+
+ var valueKey = "_value" + p.method;
+
+ // Remove property from list
+ pp._properties = qx.lang.String.remove(pp._properties, p.name);
+
+ // Reset default value to null
+ pp[valueKey] = null;
+
+ // Reset methods
+ pp["get" + p.method] = null;
+ pp["set" + p.method] = null;
+ pp["reset" + p.method] = null;
+ pp["apply" + p.method] = null;
+ pp["force" + p.method] = null;
+ pp["getDefault" + p.method] = null;
+ pp["setDefault" + p.method] = null;
+}
+
+qx.Class._createProperty = function(p)
+{
+ if(typeof p !== "object") {
+ throw new Error("AddProperty: Param should be an object!");
+ }
+
+ if (qx.util.Validation.isInvalid(p.name)) {
+ throw new Error("AddProperty: Malformed input parameters: name needed!");
+ }
+
+ // building shorter prototype access
+ var pp = qx.Proto;
+
+ p.method = qx.lang.String.toFirstUp(p.name);
+ p.implMethod = p.impl ? qx.lang.String.toFirstUp(p.impl) : p.method;
+
+ if (p.defaultValue == undefined) {
+ p.defaultValue = null;
+ }
+
+ if (qx.util.Validation.isInvalidBoolean(p.allowNull)) {
+ p.allowNull = true;
+ }
+
+ if (qx.util.Validation.isInvalidBoolean(p.allowMultipleArguments)) {
+ p.allowMultipleArguments = false;
+ }
+
+
+
+
+
+
+ if (typeof p.type === "string") {
+ p.hasType = true;
+ }
+ else if (typeof p.type !== "undefined") {
+ throw new Error("AddProperty: Invalid type definition for property " + p.name + ": " + p.type);
+ }
+ else {
+ p.hasType = false;
+ }
+
+ if (typeof p.instance === "string") {
+ p.hasInstance = true;
+ }
+ else if (typeof p.instance !== "undefined") {
+ throw new Error("AddProperty: Invalid instance definition for property " + p.name + ": " + p.instance);
+ }
+ else {
+ p.hasInstance = false;
+ }
+
+ if (typeof p.classname === "string") {
+ p.hasClassName = true;
+ }
+ else if (typeof p.classname !== "undefined") {
+ throw new Error("AddProperty: Invalid classname definition for property " + p.name + ": " + p.classname);
+ }
+ else {
+ p.hasClassName = false;
+ }
+
+
+
+
+
+
+ p.hasConvert = qx.util.Validation.isValidFunction(p.convert);
+ p.hasPossibleValues = qx.util.Validation.isValidArray(p.possibleValues);
+ p.hasUnitDetection = qx.util.Validation.isValidString(p.unitDetection);
+
+ p.addToQueue = p.addToQueue || false;
+ p.addToQueueRuntime = p.addToQueueRuntime || false;
+
+ // upper-case name
+ p.up = p.name.toUpperCase();
+
+ // register global uppercase name
+ qx.OO["PROPERTY_" + p.up] = p.name;
+
+ var valueKey = "_value" + p.method;
+ var evalKey = "_eval" + p.method;
+ var changeKey = "change" + p.method;
+ var modifyKey = "_modify" + p.implMethod;
+ var checkKey = "_check" + p.implMethod;
+
+ if (!qx.OO.setter[p.name])
+ {
+ qx.OO.setter[p.name] = "set" + p.method;
+ qx.OO.getter[p.name] = "get" + p.method;
+ qx.OO.resetter[p.name] = "reset" + p.method;
+ qx.OO.values[p.name] = valueKey;
+ }
+
+ // unit detection support
+ if (p.hasUnitDetection)
+ {
+ // computed unit
+ var cu = "_computed" + p.method;
+ pp[cu + "Value"] = null;
+ pp[cu + "Parsed"] = null;
+ pp[cu + "Type"] = null;
+ pp[cu + "TypeNull"] = true;
+ pp[cu + "TypePixel"] = false;
+ pp[cu + "TypePercent"] = false;
+ pp[cu + "TypeAuto"] = false;
+ pp[cu + "TypeFlex"] = false;
+
+ var unitDetectionKey = "_unitDetection" + qx.lang.String.toFirstUp(p.unitDetection);
+ }
+
+ // apply default value
+ pp[valueKey] = p.defaultValue;
+
+ // building getFoo(): Returns current stored value
+ pp["get" + p.method] = function() {
+ return this[valueKey];
+ };
+
+ // building forceFoo(): Set (override) without do anything else
+ pp["force" + p.method] = function(newValue) {
+ return this[valueKey] = newValue;
+ };
+
+ // building resetFoo(): Reset value to default value
+ pp["reset" + p.method] = function() {
+ return this["set" + p.method](p.defaultValue);
+ };
+
+ // building toggleFoo(): Switching between two boolean values
+ if (p.type === "boolean")
+ {
+ pp["toggle" + p.method] = function(newValue) {
+ return this["set" + p.method](!this[valueKey]);
+ };
+ }
+
+ if (p.allowMultipleArguments || p.hasConvert || p.hasInstance || p.hasClassName || p.hasPossibleValues || p.hasUnitDetection || p.addToQueue || p.addToQueueRuntime || p.addToStateQueue)
+ {
+ // building setFoo(): Setup new value, do type and change detection, converting types, call unit detection, ...
+ pp["set" + p.method] = function(newValue)
+ {
+ // convert multiple arguments to array
+ if (p.allowMultipleArguments && arguments.length > 1) {
+ newValue = qx.lang.Array.fromArguments(arguments);
+ }
+
+ // support converter methods
+ if (p.hasConvert)
+ {
+ try
+ {
+ newValue = p.convert.call(this, newValue, p);
+ }
+ catch(ex)
+ {
+ throw new Error("Attention! Could not convert new value for " + p.name + ": " + newValue + ": " + ex);
+ }
+ }
+
+ var oldValue = this[valueKey];
+
+ if (newValue === oldValue) {
+ return newValue;
+ }
+
+ if (!(p.allowNull && newValue == null))
+ {
+ if (p.hasType && typeof newValue !== p.type) {
+ return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be typeof \"" + p.type + "\" but is typeof \"" + typeof newValue + "\"!", new Error());
+ }
+
+ if (p.hasInstance && !(newValue instanceof qx.OO.classes[p.instance])) {
+ return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be an instance of \"" + p.instance + "\"!", new Error());
+ }
+
+ if (p.hasClassName && newValue.classname != p.classname) {
+ return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be an object with the classname \"" + p.classname + "\"!", new Error());
+ }
+
+ if (p.hasPossibleValues && newValue != null && !qx.lang.Array.contains(p.possibleValues, newValue)) {
+ return this.error("Failed to save value for " + p.name + ". '" + newValue + "' is not a possible value!", new Error());
+ }
+ }
+
+ // Allow to check and transform the new value before storage
+ if (this[checkKey])
+ {
+ try
+ {
+ newValue = this[checkKey](newValue, p);
+
+ // Don't do anything if new value is indentical to old value
+ if (newValue === oldValue) {
+ return newValue;
+ }
+ }
+ catch(ex)
+ {
+ return this.error("Failed to check property " + p.name, ex);
+ }
+ }
+
+ // Store new value
+ this[valueKey] = newValue;
+
+ // Check if there is a modifier implementation
+ if (this[modifyKey])
+ {
+ try
+ {
+ var r = this[modifyKey](newValue, oldValue, p);
+ if (!r) {
+ return this.error("Modification of property \"" + p.name + "\" failed without exception (" + r + ")", new Error());
+ }
+ }
+ catch(ex)
+ {
+ return this.error("Modification of property \"" + p.name + "\" failed with exception", ex);
+ }
+ }
+
+ // Unit detection support
+ if (p.hasUnitDetection) {
+ this[unitDetectionKey](p, newValue);
+ }
+
+ // Auto queue addition support
+ if (p.addToQueue) {
+ this.addToQueue(p.name);
+ }
+ else if (p.addToQueueRuntime) {
+ this.addToQueueRuntime(p.name);
+ }
+
+ // Auto state queue addition support
+ if (p.addToStateQueue) {
+ this.addToStateQueue();
+ }
+
+ // Create Event
+ if (this.hasEventListeners && this.hasEventListeners(changeKey))
+ {
+ try
+ {
+ this.createDispatchDataEvent(changeKey, newValue);
+ }
+ catch(ex)
+ {
+ throw new Error("Property " + p.name + " modified: Failed to dispatch change event: " + ex);
+ }
+ }
+
+ return newValue;
+ };
+ }
+ else
+ {
+ // building setFoo(): Setup new value, do type and change detection, converting types, call unit detection, ...
+ pp["set" + p.method] = function(newValue)
+ {
+ // this.debug("Fast Setter: " + p.name);
+
+ var oldValue = this[valueKey];
+
+ if (newValue === oldValue) {
+ return newValue;
+ }
+
+ if (!(p.allowNull && newValue == null))
+ {
+ if (p.hasType && typeof newValue !== p.type) {
+ return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be typeof \"" + p.type + "\" but is typeof \"" + typeof newValue + "\"!", new Error());
+ }
+ }
+
+ // Allow to check and transform the new value before storage
+ if (this[checkKey])
+ {
+ try
+ {
+ newValue = this[checkKey](newValue, p);
+
+ // Don't do anything if new value is indentical to old value
+ if (newValue === oldValue) {
+ return newValue;
+ }
+ }
+ catch(ex)
+ {
+ return this.error("Failed to check property " + p.name, ex);
+ }
+ }
+
+ // Store new value
+ this[valueKey] = newValue;
+
+ // Check if there is a modifier implementation
+ if (this[modifyKey])
+ {
+ try
+ {
+ var r = this[modifyKey](newValue, oldValue, p);
+ if (!r) {
+ var valueStr = new String(newValue).substring(0, 50);
+ return this.error("Setting property \"" + p.name + "\" to \"" + valueStr + "\" failed without exception (" + r + ")", new Error());
+ }
+ }
+ catch(ex)
+ {
+ var valueStr = new String(newValue).substring(0, 50);
+ return this.error("Setting property \"" + p.name + "\" to \"" + valueStr + "\" failed with exception", ex);
+ }
+ }
+
+ // Create Event
+ if (this.hasEventListeners && this.hasEventListeners(changeKey))
+ {
+ var vEvent = new qx.event.type.DataEvent(changeKey, newValue, oldValue, false);
+
+ vEvent.setTarget(this);
+
+ try
+ {
+ this.dispatchEvent(vEvent, true);
+ }
+ catch(ex)
+ {
+ throw new Error("Property " + p.name + " modified: Failed to dispatch change event: " + ex);
+ }
+ }
+
+ return newValue;
+ };
+ }
+
+ // building user configured get alias for property
+ if (typeof p.getAlias === "string") {
+ pp[p.getAlias] = pp["get" + p.method];
+ }
+
+ // building user configured set alias for property
+ if (typeof p.setAlias === "string") {
+ pp[p.setAlias] = pp["set" + p.method];
+ }
+}
+
+qx.Class.changeProperty = qx.OO._createProperty;
+
+qx.Class.addProperty = function(p)
+{
+ qx.OO.propertyNumber++;
+
+ qx.OO._createProperty(p);
+
+ // add property to (all) property list
+ if (typeof qx.Proto._properties !== "string") {
+ qx.Proto._properties = p.name;
+ } else {
+ qx.Proto._properties += "," + p.name;
+ }
+
+ // add property to object property list
+ switch(p.type)
+ {
+ case undefined:
+ case "object":
+ case "function":
+ if (typeof qx.Proto._objectproperties !== "string") {
+ qx.Proto._objectproperties = p.name;
+ } else {
+ qx.Proto._objectproperties += "," + p.name;
+ }
+ }
+}
+
+qx.Class.inheritField = function(vField, vData)
+{
+ qx.lang.Object.carefullyMergeWith(vData, qx.Super.prototype[vField]);
+ qx.Proto[vField] = vData;
+}
+
+qx.Class.isAvailable = function(vClassName) {
+ return typeof qx.OO.classes[vClassName] !== "undefined";
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/Settings.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/Settings.js
new file mode 100644
index 0000000000..d75a0d5810
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/Settings.js
@@ -0,0 +1,167 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#id(qx.Settings)
+#module(core)
+
+************************************************************************ */
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE NAMESPACE HIERARCHY
+---------------------------------------------------------------------------
+*/
+
+if (!window.qx) {
+ qx = {};
+}
+
+if (!qx.Settings) {
+ qx.Settings = {};
+}
+
+if (!qx.Settings._customSettings) {
+ qx.Settings._customSettings = {};
+}
+
+/** the default settings */
+qx.Settings._defaultSettings = {};
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ATTACH GLOBAL DATA
+---------------------------------------------------------------------------
+*/
+
+qx._LOADSTART = (new Date).valueOf();
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITES METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.substitute = function(vTemplate)
+{
+ if (typeof vTemplate !== "string") {
+ return vTemplate;
+ }
+
+ return vTemplate.replace(/\%\{(.+)\}/g, function(vMatch, vKey) {
+ return eval(vKey);
+ });
+};
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ACCESS METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.getValue = function(vKey) {
+ return qx.Settings.getValueOfClass(qx.Class.classname, vKey);
+}
+
+qx.Settings.getValueOfClass = function(vClassName, vKey)
+{
+ var vCustomObject = qx.Settings._customSettings[vClassName];
+ if (vCustomObject && vCustomObject[vKey] != null) {
+ return vCustomObject[vKey];
+ }
+
+ var vDefaultObject = qx.Settings._defaultSettings[vClassName];
+ if (vDefaultObject && vDefaultObject[vKey] != null) {
+ return vDefaultObject[vKey];
+ }
+
+ return null;
+}
+
+qx.Settings.setDefault = function(vKey, vValue) {
+ return qx.Settings.setDefaultOfClass(qx.Class.classname, vKey, vValue);
+}
+
+qx.Settings.setDefaultOfClass = function(vClassName, vKey, vValue)
+{
+ var vDefaultObject = qx.Settings._defaultSettings[vClassName];
+
+ if (!vDefaultObject) {
+ vDefaultObject = qx.Settings._defaultSettings[vClassName] = {};
+ }
+
+ // default values doesn't support substitution
+ vDefaultObject[vKey] = vValue;
+}
+
+qx.Settings.setCustom = function(vKey, vValue) {
+ return qx.Settings.setCustomOfClass(qx.Class.classname, vKey, vValue);
+}
+
+qx.Settings.setCustomOfClass = function(vClassName, vKey, vValue)
+{
+ var vCustomObject = qx.Settings._customSettings[vClassName];
+
+ if (!vCustomObject) {
+ vCustomObject = qx.Settings._customSettings[vClassName] = {};
+ }
+
+ vCustomObject[vKey] = qx.Settings.substitute(vValue);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ IMPORT VARIABLES OF CUSTOM SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.init = function()
+{
+ for (var vClass in qx.Settings._customSettings)
+ {
+ var vSettings = qx.Settings._customSettings[vClass];
+
+ for (var vKey in vSettings) {
+ qx.Settings.setCustomOfClass(vClass, vKey, vSettings[vKey]);
+ }
+ }
+}
+
+qx.Settings.init();
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Builder.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Builder.js
new file mode 100644
index 0000000000..03156282f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Builder.js
@@ -0,0 +1,478 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/*!
+ A class to generate a widget hierarchy from XML
+
+ qx.client.Builder is not thread safe by design
+ - state information is stored at the instance level
+ - only use it from a single thread
+*/
+qx.OO.defineClass("qx.client.Builder", qx.core.Target,
+function(flags)
+{
+ qx.core.Target.call(this);
+
+ // map<className, map<propertyName, function>>
+ this._propertyEditors = {};
+
+ this._registerDefaultPropertyEditors();
+
+ this._flags = flags || {};
+
+ // ensure the default flags are setup
+ if (this._flags.strict == null) {
+ // strick mode throws exceptions when
+ // * widget setters don't exist
+ this._flags.strict = true;
+ }
+
+});
+
+/*
+------------------------------------------------------------------------------------
+ BUILD
+------------------------------------------------------------------------------------
+*/
+
+/*!
+ Asynchronous method - fetches XML data from the URL then delegates to build to process the xml
+ Dispatches a qx.event.type.Event("done") after the hierarchy is built
+*/
+qx.Proto.buildFromUrl = function(parent, url) {
+ var req = new qx.io.remote.Request(url, "GET", "application/xml");
+ var self = this;
+ req.addEventListener("completed", function(e) {
+ self.build(parent, e.getData().getContent());
+ qx.ui.core.Widget.flushGlobalQueues();
+ });
+ req.send();
+}
+
+/*!
+ parse the children of the xml and appending all widgets to the parent widget
+ @param parent can either be the application instance, or a widget to append the xml toplevel widgets to
+ @param node can be either a xml string, or a xml dom document or fragment
+*/
+qx.Proto.build = function(parent, node) {
+ // support embedding of an XML string within a textarea
+ if (typeof node == "object" && node.nodeName == 'TEXTAREA') {
+ node = node.value;
+ }
+
+ // parse strings in to XML DOM
+ if (typeof node == "string") {
+ var parser = new DOMParser();
+ node = parser.parseFromString(node, "text/xml");
+ // TODO handle parse errors
+ }
+ this._buildNodes(parent, node.childNodes);
+}
+
+qx.Proto._buildNodes = function(parent, nodes) {
+ var x = 0;
+ for (var i = 0; i < nodes.length; i++) {
+ var n = nodes[i];
+ // 1 = ELEMENT_NODE
+ if (n.nodeType == 1) {
+ this._buildWidgetFromNode(parent, n);
+ }
+ }
+}
+
+qx.Proto._buildEventListener = function(widget, args, text) {
+ if (qx.util.Validation.isInvalidString(args.type)) {
+ throw this._newError('eventListener requires a string type attribute');
+ }
+
+ var self = this;
+
+ // are we delegating ?
+ if (qx.util.Validation.isValidString(args.delegate)) {
+
+ if (args.delegate.indexOf('.') > -1) {
+ // delegation to a global method
+ var p = args.delegate.split('.');
+ var o = p[0];
+ var m = p[1];
+ widget.addEventListener(args.type, function(e) {
+
+ if (!window[o]) {
+ throw self._newError('delegate not found', {delegate:args.delegate});
+ }
+
+ if (!window[o][m]) {
+ throw self._newError('delegate not found', {delegate:args.delegate});
+ }
+
+ window[o][m].apply(window[o], [e]);
+ });
+ }
+ else {
+
+ // delegation to a global method
+ widget.addEventListener(args.type, function(e) {
+
+ if (!window[args.delegate]) {
+ throw self._newError('delegate not found', {delegate:args.delegate});
+ }
+
+ window[args.delegate].apply(null, [e]);
+ });
+ }
+ }
+ else {
+
+ // build a function object using text as the function body
+ //
+ // the args attribute indicates the name of the event argument
+ // if not provided - use 'event' as the name
+ if (!args.args) {
+ args.args = "event";
+ }
+
+ var f = new Function(args.args, text);
+ widget.addEventListener(args.type, f);
+ }
+}
+
+
+/*
+ a node builder that will be used if no node builder is declared for a nodeName
+*/
+qx.Proto._buildWidgetFromNode = function(parent, node) {
+
+ var className = this._extractClassName(node);
+
+ if (!className) {
+ throw this._newError("unrecognised node", {nodeName:node.nodeName});
+ }
+
+ if (className == "qx.client.builder.Container") {
+ // generic container node to allow xml to contain multiple toplevel nodes
+ this._buildNodes(parent, node.childNodes);
+ return;
+ }
+
+ if (className == "qx.client.builder.Script") {
+ var e = document.createElement("script");
+ var attribs = this._mapXmlAttribToObject(node);
+ if (attribs.type) {
+ e.type = attribs.type;
+ }
+ else {
+ e.type='text/javascript';
+ }
+
+ // e.innerHTML = node.firstChild.nodeValue;
+
+ // fix for Internet Explorer by Cristian Bica
+ if (qx.sys.Client.getInstance().isMshtml())
+ {
+ e.innerHTML = eval(node.firstChild.nodeValue);
+ }
+ else
+ {
+ e.innerHTML = node.firstChild.nodeValue;
+ }
+
+ document.body.appendChild(e);
+ return;
+ }
+
+ if (className == "qx.client.builder.EventListener") {
+ var attribs = this._mapXmlAttribToObject(node);
+ var text;
+ if (node.firstChild) {
+ text = node.firstChild.nodeValue;
+ }
+ this._buildEventListener(parent, attribs, text);
+ return;
+ }
+
+
+ var classConstructor = qx.OO.classes[className];
+ if (!classConstructor) {
+ throw this._newError("constructor not found", {className:className});
+ }
+
+ // construct the widget instance - using the default constructor
+ var widget = new classConstructor();
+ var attribs = this._mapXmlAttribToObject(node, widget);
+ delete attribs['qxtype'];
+
+ var dummyWidget = attribs.id && attribs.id.indexOf("_") == 0;
+
+ if (attribs.id) {
+ // register a global refrence for this widget
+ window[attribs.id] = widget;
+ delete attribs.id;
+ }
+
+ // convert any on?? attribs into event listeners
+ for (var a in attribs) {
+
+ if (a.toLowerCase().indexOf('on') == 0 && a.length > 2) {
+
+ // there may be issues here for XHTML based attributes - due to their case
+ var type = a.substring(2);
+ type = type.charAt(0) + type.substring(1);
+
+ this._buildEventListener(widget, {type:type,args:'event'}, attribs[a]);
+
+ delete attribs[a];
+ }
+ }
+
+ for (var n in attribs) {
+ this._setWidgetProperty(widget, n, attribs[n]);
+ }
+
+ if(!dummyWidget) {
+ parent.add(widget);
+ }
+
+ // recurse to all of the nodes children, using the newly created widget as the parent
+ this._buildNodes(widget, node.childNodes);
+}
+
+/*
+------------------------------------------------------------------------------------
+ WIDGET PROPERTIES
+------------------------------------------------------------------------------------
+*/
+
+
+/*!
+ Set a widget's property using a propertyEditor
+*/
+qx.Proto._setWidgetProperty = function(widget, name, value) {
+ var editor = this._findPropertyEditor(widget.classname, name);
+ if (!editor) {
+ editor = this._coercePropertyEditor;
+ }
+ editor.set(widget, name, value);
+}
+
+qx.Proto._findPropertyEditor = function(className, propertyName) {
+ // get all defined propertyEditors for this widget's prototype
+ var m = this._propertyEditors[className];
+ // lookup the converter for this property name
+ if (m && m[propertyName]) {
+ return m[propertyName];
+ }
+
+ // try the widget's superclass
+ var w = qx.OO.classes[className];
+ if (w && w.superclass && w.superclass.prototype.classname) {
+ return this._findPropertyEditor(w.superclass.prototype.classname, propertyName);
+ }
+
+ return null;
+}
+
+qx.Proto.registerPropertyEditor = function(className, propertyName, editor) {
+ if (!this._propertyEditors[className]) this._propertyEditors[className] = {};
+ this._propertyEditors[className][propertyName] = editor;
+}
+
+qx.Proto._registerDefaultPropertyEditors = function() {
+ var self = this;
+
+ // a property editor that splits the values on a comma and coerces each one into a suitable type
+ var commaDelimitedPropertyEditor = {};
+ commaDelimitedPropertyEditor.set = function(widget, name, value) {
+ if (value == null || value == "") {
+ self._setProperty(widget, name, null);
+ return;
+ }
+
+ var s = value.split(",");
+ var v = [];
+ for (var i = 0; i < s.length; i++) {
+ v[i] = self._coerce(s[i]);
+ }
+
+ self._setProperties(widget, name, v);
+ }
+
+ var evalPropertyEditor = {};
+ evalPropertyEditor.set = function(widget, name, value) {
+ if (value == null || value == "") {
+ self._setProperty(widget, name, null);
+ return;
+ }
+
+ self._setProperty(widget, name, eval(value));
+ }
+
+ var referencePropertyEditor = {};
+ referencePropertyEditor.set = function(widget, name, value) {
+ self._setProperty(widget, name, window[value]);
+ }
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'location', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'dimension', commaDelimitedPropertyEditor);
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'space', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'edge', commaDelimitedPropertyEditor);
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'padding', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'margin', commaDelimitedPropertyEditor);
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'heights', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'widths', commaDelimitedPropertyEditor);
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'align', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'stretch', commaDelimitedPropertyEditor);
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'clipLocation', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'clipDimension', commaDelimitedPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'clip', commaDelimitedPropertyEditor);
+
+ this.registerPropertyEditor('qx.ui.core.Widget', 'backgroundColor', evalPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'color', evalPropertyEditor);
+ this.registerPropertyEditor('qx.ui.core.Widget', 'border', evalPropertyEditor);
+
+
+ this.registerPropertyEditor('qx.ui.menu.Button', 'menu', referencePropertyEditor);
+ this.registerPropertyEditor('qx.ui.form.RadioButton', 'manager', referencePropertyEditor);
+ this.registerPropertyEditor('qx.ui.menu.RadioButton', 'group', referencePropertyEditor);
+
+
+ // a property editor that just tries to coerce the string value into a suitable type
+ this._coercePropertyEditor = {};
+ this._coercePropertyEditor.set = function(widget, name, value) {
+ self._setProperty(widget, name, self._coerce(value));
+ }
+
+}
+
+
+qx.Proto._coerce = function(value) {
+
+ // don't really care if its null
+ if (value == null) return value;
+
+ // is it alreay a javascript type
+ if (typeof value == 'object') return value;
+ if (typeof value == 'function') return value;
+ if (typeof value == 'number') return value;
+ if (typeof value == 'boolean') return value;
+ if (typeof value == 'date') return value;
+ if (typeof value == 'array') return value;
+
+ // is it a number ?
+ var n = new Number(value);
+ if (!isNaN(n)) return n.valueOf();
+
+ // is it a boolean ?
+ if (value == "true") return true;
+ if (value == "false") return false;
+
+ // is it a date ?
+ var d = Date.parse(value);
+ if (d != null && !isNaN(d)) return d;
+
+ // leave it as a string
+ if (typeof value == 'string') {
+ // convert empty string into null
+ if (value == "") return null;
+ }
+
+ return value;
+}
+
+qx.Proto._setProperty = function(widget, name, value) {
+ this._setProperties(widget, name, [value]);
+}
+
+qx.Proto._setProperties = function(widget, name, value) {
+
+ // TODO : find a cheaper way to find the setter
+ // NOTE : the name is LOWERCASE - hence we iterate all properties of the widget
+ // to try and find a matching one
+ var n = "set" + name;
+ for (var a in widget) {
+ if (n == a.toLowerCase()) {
+ var setter = widget[a];
+ break;
+ }
+ }
+ if (!setter && this._flags.strict) throw this._newError('no setter defined on widget instance', {widget:widget, property:name});
+ setter.apply(widget, value);
+}
+
+
+/*
+------------------------------------------------------------------------------------
+ UTILS
+------------------------------------------------------------------------------------
+*/
+
+/*
+2 format
+1. <qx.ui.basic.Atom/>
+3. <div qxtype="qx.ui.basic.Atom"/>
+*/
+qx.Proto._extractClassName = function(node) {
+ if (node.nodeName.toLowerCase() == "div") {
+ if (!node.attributes['qxtype'])
+ return null;
+ return node.attributes['qxtype'].value;
+ } else {
+ return node.nodeName;
+ }
+}
+
+qx.Proto._mapXmlAttribToObject = function(node) {
+ var r = {};
+ var c = node.attributes;
+ for (var i=0; i<c.length; i++) {
+ r[c[i].name.toLowerCase()] = c[i].value;
+ }
+ return r;
+}
+
+/*
+------------------------------------------------------------------------------------
+ EXCEPTION HANDLING / DEBUGGING
+------------------------------------------------------------------------------------
+*/
+
+qx.Proto._newError = function(message, data, exception) {
+ var m = message;
+ var joiner = "";
+ var d = "";
+ if (data) {
+ for (var p in data) {
+ d += joiner + p + "=" + data[p] + '';
+ joiner = " ";
+ }
+ m += " " + d + " ";
+ }
+ if (exception) {
+ m+= " error: " + exception + " ";
+ }
+ return new Error(m);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Command.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Command.js
new file mode 100644
index 0000000000..6ea2fd0d14
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Command.js
@@ -0,0 +1,288 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/**
+ * This contains a command with shortcut.
+ *
+ * Each command could be assigned to multiple widgets.
+ *
+ * @event execute {qx.event.type.DataEvent} when the command is executed.
+ *
+ * @param vShortcut (string) shortcuts can be composed of optional modifier
+ * keys Control, Alt, Shift, Meta and a non modifier key.
+ * If no non modifier key is specified, the second paramater is evaluated.
+ * The key must be seperated by a ''+'' or ''-'' character.
+ * Examples: Alt+F1, Control+C, Control+Alt+Enf
+ *
+ * @param vKeyCodeOrIdentifier (int) Additional key of the command. It is interpreted as a
+ * keyIdentifier if it is given as integer. Otherwhise it is interpreted as keyCode.
+ */
+qx.OO.defineClass("qx.client.Command", qx.core.Target,
+function(vShortcut, vKeyCodeOrIdentifier)
+{
+ qx.core.Target.call(this);
+
+ this._modifier = {};
+ this._key = null;
+
+ if (qx.util.Validation.isValid(vShortcut)) {
+ this.setShortcut(vShortcut);
+ }
+
+ if (qx.util.Validation.isValid(vKeyCodeOrIdentifier))
+ {
+ if (qx.util.Validation.isValidString(vKeyCodeOrIdentifier))
+ {
+ this.setKeyIdentifier(vKeyCodeOrIdentifier);
+ }
+ else if (qx.util.Validation.isValidNumber(vKeyCodeOrIdentifier))
+ {
+ this.warn("The use of keyCode in command is deprecated. Use keyIdentifier instead.");
+ this.setKeyCode(vKeyCodeOrIdentifier);
+ }
+ else
+ {
+ var msg = "vKeyCodeOrIdentifier must be of type string or number: " + vKeyCodeOrIdentifier;
+ this.error(msg);
+ throw msg;
+ }
+ }
+
+ // OSX warning for Alt key combinations
+ if (this._modifier.Alt && this._key && this._key.length == 1) {
+ if (
+ (this._key >= "A" && this._key <= "Z") ||
+ (this._key >= "0" && this._key <= "9")
+ ) {
+ this.warn("A shortcut containing Alt and a letter or number will not work under OS X!");
+ }
+ }
+ qx.event.handler.EventHandler.getInstance().addCommand(this);
+});
+
+
+/** the command shortcut */
+qx.OO.addProperty({ name : "shortcut", type : "string" });
+
+/**
+ * keyCode (Deprecated)
+ * Still there for compatibility with the old key handler/commands
+ */
+qx.OO.addProperty({ name : "keyCode", type : "number" });
+
+/** KeyIdentifier */
+qx.OO.addProperty({ name : "keyIdentifier", type : "string" });
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Fire the "execute" event on this command.
+ *
+ * @param vTarget (Object)
+ */
+qx.Proto.execute = function(vTarget)
+{
+ if (this.hasEventListeners("execute")) {
+ this.dispatchEvent(new qx.event.type.DataEvent("execute", vTarget), true);
+ }
+
+ return false;
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyShortcut = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this._modifier = {};
+ this._key = null;
+
+ // split string to get each key which must be pressed
+ // build a hash with active keys
+ var a = propValue.split(/[-+\s]+/);
+ var al = a.length;
+
+ for (var i=0; i<al; i++)
+ {
+ var identifier = qx.event.handler.KeyEventHandler.getInstance().oldKeyNameToKeyIdentifier(a[i]);
+
+ switch (identifier)
+ {
+ case "Control":
+ case "Shift":
+ case "Meta":
+ case "Alt":
+ this._modifier[identifier] = true;
+ break;
+
+ case "Unidentified":
+ var msg = "Not a valid key name for a command: " + a[i];
+ this.error(msg);
+ throw msg;
+
+ default:
+ if (this._key) {
+ var msg = "You can only specify one non modifier key!";
+ this.error(msg);
+ throw msg;
+ }
+ this._key = identifier;
+ }
+ }
+ }
+ return true;
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTERNAL MATCHING LOGIC
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Checks wether the given key event matches the command's shortcut
+ *
+ * @param e (qx.event.type.KeyEvent) the key event object
+ * @return (boolean) wether the commands shortcut matches the key event
+ */
+qx.Proto._matchesKeyEvent = function(e)
+{
+ var key = this._key || this.getKeyIdentifier();
+ if (!key && !this.getKeyCode()) {
+ // no shortcut defined.
+ return;
+ }
+
+ // pre-check for check special keys
+ // we handle this here to omit to check this later again.
+ if (
+ (this._modifier.Shift && !e.getShiftKey()) ||
+ (this._modifier.Control && !e.getCtrlKey()) ||
+// (this._modifier.Meta && !e.getCtrlKey()) ||
+ (this._modifier.Alt && !e.getAltKey())
+ ) {
+ return false;
+ }
+
+ if (key)
+ {
+ if (key == e.getKeyIdentifier()) {
+ return true;
+ }
+ }
+ else
+ {
+ if (this.getKeyCode() == e.getKeyCode()) {
+ return true;
+ }
+ }
+
+ return false;
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ STRING CONVERTION
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Returns the shortcut as string
+ *
+ * @return (string) shortcut
+ */
+qx.Proto.toString = function()
+{
+ var vShortcut = this.getShortcut();
+ var vKeyCode = this.getKeyCode();
+ var vString = "";
+ var vKeyIdentifier = this._key || this.getKeyIdentifier();
+
+ var vKeyString = "";
+ if (qx.util.Validation.isValidString(vKeyIdentifier))
+ {
+ vKeyString = vKeyIdentifier;
+ }
+ else if (qx.util.Validation.isValidNumber(vKeyCode))
+ {
+ var vTemp = qx.event.type.KeyEvent.codes[vKeyCode];
+ vKeyString = vTemp ? qx.lang.String.toFirstUp(vTemp) : String(vKeyCode);
+ }
+
+ if (qx.util.Validation.isValidString(vShortcut))
+ {
+ vString = vShortcut + "+" + vKeyString;
+ }
+ else if (qx.util.Validation.isValidNumber(vKeyCode))
+ {
+ vString = vKeyString;
+ }
+
+ return vString;
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Destructor
+ */
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._shortcutParts = null;
+
+ var vMgr = qx.event.handler.EventHandler.getInstance();
+ if (vMgr) {
+ vMgr.removeCommand(this);
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/History.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/History.js
new file mode 100644
index 0000000000..e242d7c85a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/History.js
@@ -0,0 +1,137 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#resource(html:static/history)
+#require(qx.manager.object.AliasManager)
+
+************************************************************************ */
+
+/**
+ * A helper for using the browser history in JavaScript Applications without
+ * reloading the main page.
+ * <p>
+ * Adds entries to the browser history and fires a "request" event when one of
+ * the entries was requested by the user (e.g. by clicking on the back button).
+ * </p>
+ *
+ * @event request {qx.event.type.DataEvent} Fired when the user moved in the
+ * history. The data property of the event holds the command, which was
+ * passed to {@link #addToHistory}.
+ */
+qx.OO.defineClass("qx.client.History", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+
+ this._pageFlag = true;
+});
+
+
+/**
+ * Initializes the History. This method has to called by applications using this
+ * class once during initialization. Subsequent calls have no (negative) effect.
+ */
+qx.Proto.init = function() {
+ if (this._iframe == null) {
+ this._iframe = document.createElement("iframe");
+ this._iframe.style.visibility = "hidden";
+ document.body.appendChild(this._iframe);
+ }
+}
+
+
+/**
+ * Adds an entry to the browser history.
+ *
+ * @param command {string} a string representing the old state of the
+ * application. This command will be delivered in the data property of
+ * the "request" event.
+ * @param newTitle {string ? null} the page title to set after the history entry
+ * is done. This title should represent the new state of the application.
+ */
+qx.Proto.addToHistory = function(command, newTitle) {
+ if (command == this._currentCommand) {
+ document.title = newTitle;
+ } else {
+ if (this._iframe == null) {
+ throw new Error("You have to call init first!");
+ }
+
+ this._pageFlag = !this._pageFlag;
+ this._currentCommand = command;
+ this._newTitle = newTitle;
+
+ // NOTE: We need the command attribute to enforce a loading of the page
+ // (Otherwise we don't get an onload event).
+ // The browser will still cache commands loaded once.
+ // Without the onload-problem anchors would work, too.
+ // (Anchors would have the advantage that the helper is only loaded once)
+ this._iframe.src = this.getSetting("helperFile") + "?c=" + command;
+ }
+}
+
+
+/**
+ * Event handler. Called when the history helper page was loaded.
+ *
+ * @param location {Map} the location property of the window object of the
+ * helper page.
+ */
+qx.Proto._onHistoryLoad = function(location)
+{
+ try {
+ var equalsPos = location.search.indexOf("=");
+ var command = location.search.substring(equalsPos + 1);
+
+ if (this._newTitle) {
+ document.title = this._newTitle;
+ this._newTitle = null;
+ }
+
+ if (command != this._currentCommand) {
+ this._currentCommand = command;
+
+ this.createDispatchDataEvent("request", command);
+ }
+ } catch (exc) {
+ this.error("Handling history load failed", exc);
+ }
+
+ qx.ui.core.Widget.flushGlobalQueues();
+}
+
+
+/** The URL to the helper page. */
+qx.Settings.setDefault("helperFile", qx.Settings.getValueOfClass("qx.manager.object.AliasManager", "staticUri") + "/history/historyHelper.html");
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/NativeWindow.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/NativeWindow.js
new file mode 100644
index 0000000000..69e9c2a87c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/NativeWindow.js
@@ -0,0 +1,639 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#require(qx.dom.Window)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.client.NativeWindow", qx.core.Target,
+function(vUrl, vName)
+{
+ qx.core.Target.call(this);
+
+
+ // ************************************************************************
+ // TIMER
+ // ************************************************************************
+
+ this._timer = new qx.client.Timer(100);
+ this._timer.addEventListener("interval", this._oninterval, this);
+
+
+ // ************************************************************************
+ // INITIAL PROPERTIES
+ // ************************************************************************
+
+ if (qx.util.Validation.isValidString(vUrl)) {
+ this.setUrl(vUrl);
+ }
+
+ if (qx.util.Validation.isValidString(vName)) {
+ this.setName(vName);
+ }
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ If the window is open or closed
+*/
+qx.OO.addProperty({ name : "open", type : "boolean", defaultValue : false });
+
+/*!
+ The outer width of the window.
+*/
+qx.OO.addProperty({ name : "width", type : "number", defaultValue : 400, impl : "dimension" });
+
+/*!
+ The outer height of the window.
+*/
+qx.OO.addProperty({ name : "height", type : "number", defaultValue : 250, impl : "dimension" });
+
+/*!
+ The left screen coordinate of the window.
+*/
+qx.OO.addProperty({ name : "left", type : "number", defaultValue : 100, impl : "position" });
+
+/*!
+ The top screen coordinate of the window.
+*/
+qx.OO.addProperty({ name : "top", type : "number", defaultValue : 200, impl : "position" });
+
+/*!
+ Should be window be modal
+*/
+qx.OO.addProperty({ name : "modal", type : "boolean", defaultValue : false });
+
+/*!
+ Should be window be dependent on this application window
+*/
+qx.OO.addProperty({ name : "dependent", type : "boolean", defaultValue : true });
+
+/*!
+ The url
+*/
+qx.OO.addProperty({ name : "url", type : "string" });
+
+/*!
+ The window name
+*/
+qx.OO.addProperty({ name : "name", type : "string" });
+
+/*!
+ The text of the statusbar
+*/
+qx.OO.addProperty({ name : "status", type : "string", defaultValue : "Ready" });
+
+/*!
+ Should the statusbar be shown
+*/
+qx.OO.addProperty({ name : "showStatusbar", type : "boolean", defaultValue : false });
+
+/*!
+ Should the menubar be shown
+*/
+qx.OO.addProperty({ name : "showMenubar", type : "boolean", defaultValue : false });
+
+/*!
+ Should the location(bar) be shown
+*/
+qx.OO.addProperty({ name : "showLocation", type : "boolean", defaultValue : false });
+
+/*!
+ Should the toolbar be shown
+*/
+qx.OO.addProperty({ name : "showToolbar", type : "boolean", defaultValue : false });
+
+/*!
+ If the window is resizeable
+*/
+qx.OO.addProperty({ name : "resizeable", type : "boolean", defaultValue : true });
+
+/*!
+ If the window is able to scroll and has visible scrollbars if needed
+*/
+qx.OO.addProperty({ name : "allowScrollbars", type : "boolean", defaultValue : true });
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._loaded = false;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTY GROUPS
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addPropertyGroup({ name : "location", members : [ "left", "top" ]});
+qx.OO.addPropertyGroup({ name : "dimension", members : [ "width", "height" ]});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyPosition = function(propValue, propOldValue, propName)
+{
+ /*
+ http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2brows.mspx
+ Changes to Functionality in Microsoft Windows XP Service Pack 2
+ Part 5: Enhanced Browsing Security
+ URLACTION_FEATURE_WINDOW_RESTRICTIONS
+ Allow script-initiated windows without size or position constraints
+ Code: 2102
+ */
+
+ if (!this.isClosed())
+ {
+ try
+ {
+ this._window.moveTo(this.getLeft(), this.getTop());
+ }
+ catch(ex)
+ {
+ this.error("Cross-Domain Scripting problem: Could not move window!", ex);
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._modifyDimension = function(propValue, propOldValue, propName)
+{
+ /*
+ http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2brows.mspx
+ Changes to Functionality in Microsoft Windows XP Service Pack 2
+ Part 5: Enhanced Browsing Security
+ URLACTION_FEATURE_WINDOW_RESTRICTIONS
+ Allow script-initiated windows without size or position constraints
+ Code: 2102
+ */
+
+ if (!this.isClosed())
+ {
+ try
+ {
+ this._window.resizeTo(this.getWidth(), this.getHeight());
+ }
+ catch(ex)
+ {
+ this.error("Cross-Domain Scripting problem: Could not resize window!", ex);
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._modifyName = function(propValue, propOldValue, propName)
+{
+ if (!this.isClosed()) {
+ this._window.name = propValue;
+ }
+
+ return true;
+}
+
+qx.Proto._modifyUrl = function(propValue, propOldValue, propName)
+{
+ // String hack needed for old compressor (compile.py)
+ if(!this.isClosed()) {
+ this._window.location.replace(qx.util.Validation.isValidString(propValue) ? propValue : ("javascript:/" + "/"));
+ }
+
+ return true;
+}
+
+qx.Proto._modifyOpen = function(propValue, propOldValue, propData)
+{
+ propValue ? this._open() : this._close();
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ NAME
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getName = function()
+{
+ if (!this.isClosed())
+ {
+ try
+ {
+ var vName = this._window.name;
+ }
+ catch(ex)
+ {
+ return this._valueName;
+ }
+
+ if (vName == this._valueName)
+ {
+ return vName;
+ }
+ else
+ {
+ throw new Error("window name and name property are not identical");
+ }
+ }
+ else
+ {
+ return this._valueName;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.isClosed = function()
+{
+ var vClosed = true;
+
+ if (this._window)
+ {
+ try {
+ vClosed = this._window.closed;
+ } catch(ex) {}
+ }
+
+ return vClosed;
+}
+
+qx.Proto.open = function() {
+ this.setOpen(true);
+}
+
+qx.Proto.close = function() {
+ this.setOpen(false);
+}
+
+qx.Proto.isLoaded = function() {
+ return this._loaded;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OPEN METHOD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._open = function()
+{
+ var vConf = [];
+
+
+ /*
+ ------------------------------------------------------------------------------
+ PRE CONFIGURE WINDOW
+ ------------------------------------------------------------------------------
+ */
+
+ if (qx.util.Validation.isValidNumber(this.getWidth()))
+ {
+ vConf.push("width");
+ vConf.push("=");
+ vConf.push(this.getWidth());
+ vConf.push(",");
+ }
+
+ if (qx.util.Validation.isValidNumber(this.getHeight()))
+ {
+ vConf.push("height");
+ vConf.push("=");
+ vConf.push(this.getHeight());
+ vConf.push(",");
+ }
+
+ if (qx.util.Validation.isValidNumber(this.getLeft()))
+ {
+ vConf.push("left");
+ vConf.push("=");
+ vConf.push(this.getLeft());
+ vConf.push(",");
+ }
+
+ if (qx.util.Validation.isValidNumber(this.getTop()))
+ {
+ vConf.push("top");
+ vConf.push("=");
+ vConf.push(this.getTop());
+ vConf.push(",");
+ }
+
+
+
+ vConf.push("dependent");
+ vConf.push("=");
+ vConf.push(this.getDependent() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("resizable");
+ vConf.push("=");
+ vConf.push(this.getResizeable() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("status");
+ vConf.push("=");
+ vConf.push(this.getShowStatusbar() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("location");
+ vConf.push("=");
+ vConf.push(this.getShowLocation() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("menubar");
+ vConf.push("=");
+ vConf.push(this.getShowMenubar() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("toolbar");
+ vConf.push("=");
+ vConf.push(this.getShowToolbar() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("scrollbars");
+ vConf.push("=");
+ vConf.push(this.getAllowScrollbars() ? "yes" : "no");
+ vConf.push(",");
+
+ vConf.push("modal");
+ vConf.push("=");
+ vConf.push(this.getModal() ? "yes" : "no");
+ vConf.push(",");
+
+
+
+
+
+
+ /*
+ ------------------------------------------------------------------------------
+ OPEN WINDOW
+ ------------------------------------------------------------------------------
+ */
+
+ if (qx.util.Validation.isInvalidString(this.getName())) {
+ this.setName("qx_NativeWindow" + this.toHashCode());
+ }
+
+ this._window = window.open(this.getUrl(), this.getName(), vConf.join(""));
+
+ if (this.isClosed())
+ {
+ this.error("Window could not be opened. It seems, there is a popup blocker active!");
+ }
+ else
+ {
+ // This try-catch is needed because of cross domain issues (access rights)
+ try
+ {
+ this._window._native = this;
+ this._window.onload = this._onload;
+ }
+ catch(ex) {}
+
+ // start timer for close detection
+ this._timer.start();
+
+ // block original document
+ if (this.getModal()) {
+ qx.ui.core.ClientDocument.getInstance().block(this);
+ }
+ }
+}
+
+qx.Proto._close = function()
+{
+ if (!this._window) {
+ return;
+ }
+
+ // stop timer for close detection
+ this._timer.stop();
+
+ // release window again
+ if (this.getModal()){
+ qx.ui.core.ClientDocument.getInstance().release(this);
+ }
+
+ // finally close window
+ if (!this.isClosed()) {
+ this._window.close();
+ }
+
+ try
+ {
+ this._window._native = null;
+ this._window.onload = null;
+ }
+ catch(ex) {};
+
+ this._window = null;
+ this._loaded = false;
+
+ this.createDispatchEvent("close");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CENTER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.centerToScreen = function() {
+ return this._centerHelper((screen.width - this.getWidth()) / 2, (screen.height - this.getHeight()) / 2);
+}
+
+qx.Proto.centerToScreenArea = function() {
+ return this._centerHelper((screen.availWidth - this.getWidth()) / 2, (screen.availHeight - this.getHeight()) / 2);
+}
+
+qx.Proto.centerToOpener = function() {
+ return this._centerHelper(((qx.dom.Window.getInnerWidth(window) - this.getWidth()) / 2) + qx.dom.Location.getScreenBoxLeft(window.document.body), ((qx.dom.Window.getInnerHeight(window) - this.getHeight()) / 2) + qx.dom.Location.getScreenBoxTop(window.document.body));
+}
+
+qx.Proto._centerHelper = function(l, t)
+{
+ // set new values
+ this.setLeft(l);
+ this.setTop(t);
+
+ // focus window if opened
+ if (!this.isClosed()) {
+ this.focus();
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FOCUS HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.focus = function()
+{
+ if (!this.isClosed()) {
+ this._window.focus();
+ }
+}
+
+qx.Proto.blur = function()
+{
+ if (!this.isClosed()) {
+ this._window.blur();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oninterval = function(e)
+{
+ if (this.isClosed()) {
+ this.setOpen(false);
+ }
+ else if (!this._loaded)
+ {
+ // This try-catch is needed because of cross domain issues (access rights)
+ try
+ {
+ if (this._window.document && this._window.document.readyState == "complete")
+ {
+ this._loaded = true;
+ this.createDispatchEvent("load");
+ }
+ }
+ catch(ex) {};
+ }
+}
+
+qx.Proto._onload = function(e)
+{
+ var obj = this._native;
+
+ if (!obj._loaded)
+ {
+ obj._loaded = true;
+ obj.createDispatchEvent("load");
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this.getDependent()) {
+ this.close();
+ }
+
+ if (this._timer)
+ {
+ this._timer.stop();
+ this._timer = null;
+ }
+
+ if (this._window)
+ {
+ try
+ {
+ this._window._native = null;
+ this._window.onload = null;
+ }
+ catch(ex) {};
+
+ this._window = null;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Timer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Timer.js
new file mode 100644
index 0000000000..674bbdb154
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/client/Timer.js
@@ -0,0 +1,183 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/**
+ * Global timer support. Simplifies javascript intervals for objects.
+ *
+ * @event interval {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.client.Timer", qx.core.Target,
+function(vInterval)
+{
+ qx.core.Target.call(this);
+
+ this.setEnabled(false);
+
+ if (qx.util.Validation.isValidNumber(vInterval)) {
+ this.setInterval(vInterval);
+ }
+
+ // Object wrapper to timer event
+ var o = this;
+ this.__oninterval = function() { o._oninterval(); }
+});
+
+qx.OO.addProperty({ name : "interval", type : "number", defaultValue : 1000 });
+
+qx.Proto._intervalHandle = null;
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ window.clearInterval(this._intervalHandle);
+ this._intervalHandle = null;
+ }
+ else if (propValue)
+ {
+ this._intervalHandle = window.setInterval(this.__oninterval, this.getInterval());
+ }
+
+ return true;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER-ACCESS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.start = function() {
+ this.setEnabled(true);
+}
+
+qx.Proto.startWith = function(vInterval)
+{
+ this.setInterval(vInterval);
+ this.start();
+}
+
+qx.Proto.stop = function() {
+ this.setEnabled(false);
+}
+
+qx.Proto.restart = function()
+{
+ this.stop();
+ this.start();
+}
+
+qx.Proto.restartWith = function(vInterval)
+{
+ this.stop();
+ this.startWith(vInterval);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-MAPPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oninterval = function()
+{
+ if (this.getEnabled()) {
+ this.createDispatchEvent("interval");
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ // Stop interval
+ this.stop();
+
+ // Clear handle
+ if (this._intervalHandler)
+ {
+ window.clearInterval(this._intervalHandle);
+ this._intervalHandler = null;
+ }
+
+ // Clear object wrapper function
+ this.__oninterval = null;
+
+ // Call qx.core.Target to do the other dispose work
+ return qx.core.Target.prototype.dispose.call(this);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.client.Timer.once = function(vFunction, vObject, vTimeout)
+{
+ // Create time instance
+ var vTimer = new qx.client.Timer(vTimeout);
+
+ // Add event listener to interval
+ vTimer.addEventListener("interval", function(e)
+ {
+ vFunction.call(vObject, e);
+ vTimer.dispose();
+
+ vObject = null;
+ }, vObject);
+
+ // Directly start timer
+ vTimer.start();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractApplication.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractApplication.js
new file mode 100644
index 0000000000..50c96e1654
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractApplication.js
@@ -0,0 +1,28 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.component.AbstractApplication", qx.component.AbstractComponent,
+function() {
+ qx.component.AbstractComponent.call(this);
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractComponent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractComponent.js
new file mode 100644
index 0000000000..b48eb3acb3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/AbstractComponent.js
@@ -0,0 +1,66 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.component.AbstractComponent", qx.core.Target,
+function()
+{
+ qx.core.Target.call(this);
+
+});
+
+
+/*!
+ Run initialisation part of component creation.
+*/
+qx.Proto.initialize = function() {};
+
+/*!
+ Run main part of component creation.
+*/
+qx.Proto.main = function() {};
+
+/*!
+ Run finalization part of component creation.
+*/
+qx.Proto.finalize = function() {};
+
+/*!
+ Terminate this component.
+*/
+qx.Proto.close = function() {};
+
+/*!
+ Terminate this component.
+*/
+qx.Proto.terminate = function() {};
+
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/DummyApplication.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/DummyApplication.js
new file mode 100644
index 0000000000..dfdcb3f0d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/DummyApplication.js
@@ -0,0 +1,41 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.component.DummyApplication", qx.component.AbstractApplication,
+function() {
+ qx.component.AbstractApplication.call(this);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIRECT SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/AbstractInitComponent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/AbstractInitComponent.js
new file mode 100644
index 0000000000..917315be34
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/AbstractInitComponent.js
@@ -0,0 +1,65 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.component.init.AbstractInitComponent", qx.component.AbstractComponent,
+function() {
+ qx.component.AbstractComponent.call(this);
+});
+
+
+
+/*!
+ Run initialisation part of component creation.
+*/
+qx.Proto.initialize = function(e) {
+ return qx.core.Init.getInstance().getApplicationInstance().initialize(e);
+}
+
+/*!
+ Run main part of component creation.
+*/
+qx.Proto.main = function(e) {
+ return qx.core.Init.getInstance().getApplicationInstance().main(e);
+}
+
+/*!
+ Run finalization part of component creation.
+*/
+qx.Proto.finalize = function(e) {
+ return qx.core.Init.getInstance().getApplicationInstance().finalize(e);
+}
+
+/*!
+ Terminate this component.
+*/
+qx.Proto.close = function(e) {
+ return qx.core.Init.getInstance().getApplicationInstance().close(e);
+}
+
+/*!
+ Terminate this component.
+*/
+qx.Proto.terminate = function(e) {
+ return qx.core.Init.getInstance().getApplicationInstance().terminate(e);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/BasicInitComponent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/BasicInitComponent.js
new file mode 100644
index 0000000000..4138cede33
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/BasicInitComponent.js
@@ -0,0 +1,53 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.component.init.BasicInitComponent", qx.component.init.AbstractInitComponent,
+function() {
+ qx.component.init.AbstractInitComponent.call(this);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onload = function(e)
+{
+ this.initialize(e);
+ this.main(e);
+ this.finalize(e);
+}
+
+qx.Proto._onbeforeunload = function(e) {
+ this.close(e);
+}
+
+qx.Proto._onunload = function(e) {
+ this.terminate(e);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/InterfaceInitComponent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/InterfaceInitComponent.js
new file mode 100644
index 0000000000..5e7b818a40
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/component/init/InterfaceInitComponent.js
@@ -0,0 +1,181 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.component.init.InterfaceInitComponent", qx.component.init.BasicInitComponent,
+function() {
+ qx.component.init.BasicInitComponent.call(this);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ READY STATE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._uiReady = false;
+
+qx.Proto.isUiReady = function() {
+ return this._uiReady;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.initialize = function()
+{
+ // Force creation of event handler
+ qx.event.handler.EventHandler.getInstance();
+
+ // Force creation of client document
+ qx.ui.core.ClientDocument.getInstance();
+
+ // Start real initialisation
+ var start = (new Date).valueOf();
+ qx.component.init.BasicInitComponent.prototype.initialize.call(this);
+ this.info("initialize runtime: " + ((new Date).valueOf() - start) + "ms");
+};
+
+qx.Proto.main = function()
+{
+ // Start real main process
+ var start = (new Date).valueOf();
+ qx.component.init.BasicInitComponent.prototype.main.call(this);
+ this.info("main runtime: " + ((new Date).valueOf() - start) + "ms");
+
+ this.debug("preloading visible images...");
+ new qx.io.image.PreloaderSystem(qx.manager.object.ImageManager.getInstance().getPreloadImageList(), this.finalize, this);
+};
+
+
+qx.Proto.finalize = function()
+{
+ var start = (new Date).valueOf();
+
+ this._printPreloadComplete();
+ this._uiReady = true;
+
+ // Show initial widgets
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ // Finally attach event to make the GUI ready for the user
+ qx.event.handler.EventHandler.getInstance().attachEvents();
+
+ qx.component.init.BasicInitComponent.prototype.finalize.call(this);
+
+ this.info("finalize runtime: " + ((new Date).valueOf() - start) + "ms");
+};
+
+qx.Proto.close = function()
+{
+ var start = (new Date).valueOf();
+ qx.component.init.BasicInitComponent.prototype.close.call(this);
+
+ this.info("close runtime: " + ((new Date).valueOf() - start) + "ms");
+};
+
+qx.Proto.terminate = function()
+{
+ var start = (new Date).valueOf();
+ qx.component.init.BasicInitComponent.prototype.terminate.call(this);
+
+ this.info("terminate runtime: " + ((new Date).valueOf() - start) + "ms");
+};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PRELOAD UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.preload = function()
+{
+ if (!this._preloadDone)
+ {
+ this.debug("preloading hidden images...");
+ new qx.io.image.PreloaderSystem(qx.manager.object.ImageManager.getInstance().getPostPreloadImageList(), this._printPreloadComplete, this);
+ this._preloadDone = true;
+ }
+}
+
+qx.Proto._printPreloadComplete = function() {
+ this.debug("preloading complete");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onload = function(e)
+{
+ this.initialize();
+ this.main();
+
+ // Note: finalize will be called through image preloader
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._preloadDone = null;
+ this._uiReady = null;
+
+ return qx.component.init.BasicInitComponent.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Init.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Init.js
new file mode 100644
index 0000000000..aae3ea1ac8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Init.js
@@ -0,0 +1,327 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#require(qx.dom.EventRegistration)
+#optional(qx.component.init.InterfaceInitComponent)
+
+************************************************************************ */
+
+/**
+ * Initialize qooxdoo.
+ *
+ * Attaches qooxdoo callbacks to the load events (onload, onunload, onbeforeunload)
+ * and initializes the qooxdoo application. The initializations starts automatically.
+ *
+ * Make shure you set the application to your application before the load event is fired:
+ * <pre>qx.core.Init.getInstance().setApplication(YourApplication)</pre>
+ */
+qx.OO.defineClass("qx.core.Init", qx.core.Target,
+function()
+{
+ qx.core.Target.call(this, false);
+
+ // Object Wrapper to Events (Needed for DOM-Events)
+ var o = this;
+
+ /**
+ * private
+ * @param e {Object}
+ */
+ this.__onload = function(e) { return o._onload(e); }
+ /**
+ * private
+ * @param e {Object}
+ */
+ this.__onbeforeunload = function(e) { return o._onbeforeunload(e); }
+ /**
+ * private
+ * @param e {Object}
+ */
+ this.__onunload = function(e) { return o._onunload(e); }
+
+ // Attach events
+ qx.dom.EventRegistration.addEventListener(window, "load", this.__onload);
+ qx.dom.EventRegistration.addEventListener(window, "beforeunload", this.__onbeforeunload);
+ qx.dom.EventRegistration.addEventListener(window, "unload", this.__onunload);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("component", "qx.component.init.InterfaceInitComponent");
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Instance of the component initializer.
+ */
+qx.OO.addProperty({ name : "component", type : "object", instance : "qx.component.init.BasicInitComponent" });
+
+/**
+ * Reference to the constructor of the main application.
+ *
+ * Set this before the onload event is fired.
+ */
+qx.OO.addProperty({ name : "application", type : "function" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyApplication = function(propValue, propOldValue, propData)
+{
+ if (propValue) {
+ this._applicationInstance = new propValue;
+ }
+
+ return true;
+};
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTERNAL PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Rreturns an instance of the current qooxdoo Application
+ *
+ * @return {qx.component.AbstractApplication} instance of the current qooxdoo application
+ */
+qx.Proto.getApplicationInstance = function()
+{
+ if (!this.getApplication()) {
+ this.setApplication(qx.component.DummyApplication);
+ }
+
+ return this._applicationInstance;
+};
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMPONENT BINDING
+---------------------------------------------------------------------------
+*/
+
+/**
+ * define the initialisation function
+ * Don't use this method directly. Use setApplication instead!
+ *
+ * @param vFunc {Function} callback function
+ */
+qx.Proto.defineInitialize = function(vFunc) {
+ this.getApplicationInstance().initialize = vFunc;
+}
+
+/**
+ * define the main function
+ * Don't use this method directly. Use setApplication instead!
+ *
+ * @param vFunc {Function} callback function
+ */
+qx.Proto.defineMain = function(vFunc) {
+ this.getApplicationInstance().main = vFunc;
+}
+
+/**
+ * define the finalize function
+ * Don't use this method directly. Use setApplication instead!
+ *
+ * @param vFunc {Function} callback function
+ */
+qx.Proto.defineFinalize = function(vFunc) {
+ this.getApplicationInstance().finalize = vFunc;
+}
+
+/**
+ * define the close function
+ * Don't use this method directly. Use setApplication instead!
+ *
+ * @param vFunc {Function} callback function
+ */
+qx.Proto.defineClose = function(vFunc) {
+ this.getApplicationInstance().close = vFunc;
+}
+
+/**
+ * define the terminate function
+ * Don't use this method directly. Use setApplication instead!
+ *
+ * @param vFunc {Function} callback function
+ */
+qx.Proto.defineTerminate = function(vFunc) {
+ this.getApplicationInstance().terminate = vFunc;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+/**
+ * load event handler
+ *
+ * @param e {Object}
+ */
+qx.Proto._onload = function(e)
+{
+ this.debug("qooxdoo " + qx.core.Version.toString());
+
+ // Print out class information
+ this.debug("loaded " + qx.lang.Object.getLength(qx.OO.classes) + " classes");
+
+ // Print browser information
+ var cl = qx.sys.Client.getInstance();
+ this.debug("client: " + cl.getEngine() + "-" + cl.getMajor() + "."
+ + cl.getMinor() + "/" + cl.getPlatform() + "/" + cl.getLocale());
+
+ if (cl.isMshtml() && !cl.isInQuirksMode()) {
+ this.warn("Wrong box sizing: Please modify the document's DOCTYPE!");
+ }
+
+ // Init component from settings
+ this.setComponent(new qx.OO.classes[this.getSetting("component")](this));
+
+ // Send onload
+ return this.getComponent()._onload(e);
+}
+
+
+/**
+ * beforeunload event handler
+ *
+ * @param e {Object}
+ */
+qx.Proto._onbeforeunload = function(e)
+{
+ // Send onbeforeunload event (can be cancelled)
+ return this.getComponent()._onbeforeunload(e);
+}
+
+
+/**
+ * unload event handler
+ *
+ * @param e {Object}
+ */
+qx.Proto._onunload = function(e)
+{
+ // Send onunload event (last event)
+ this.getComponent()._onunload(e);
+
+ // Dispose all qooxdoo objects
+ qx.core.Object.dispose();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Destructor
+ */
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Detach Events
+ qx.dom.EventRegistration.removeEventListener(window, "load", this.__onload);
+ qx.dom.EventRegistration.removeEventListener(window, "beforeunload", this.__onbeforeunload);
+ qx.dom.EventRegistration.removeEventListener(window, "unload", this.__onunload);
+
+ // Reset inline functions
+ this.__onload = this.__onbeforeunload = this.__onunload = null;
+
+ if (this._applicationInstance) {
+ this._applicationInstance.dispose();
+ this._applicationInstance = null;
+ }
+
+ qx.core.Target.prototype.dispose.call(this);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIRECT SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+// Force direct creation
+qx.Class.getInstance();
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Object.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Object.js
new file mode 100644
index 0000000000..26453f82a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Object.js
@@ -0,0 +1,525 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#load(qx.core.Init)
+
+************************************************************************ */
+
+/**
+ * The qooxdoo base object. All qooxdoo classes extend this one
+ *
+ * This class contains functions for:
+ * <ul>
+ * <li> logging </li>
+ * <li> common getter/setter </li>
+ * <li> user data </li>
+ * <li> object destruction </li>
+ * </ul>
+ *
+ * @param vAutoDispose {boolean ? true} wether the object should be disposed automatically by qooxdoo
+ */
+qx.OO.defineClass("qx.core.Object", Object,
+function(vAutoDispose)
+{
+ this._hashCode = qx.core.Object._counter++;
+
+ if (vAutoDispose !== false) {
+ qx.core.Object._db.push(this);
+ }
+});
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("enableDisposerDebug", false);
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+qx.Class._counter = 0;
+qx.Class._db = [];
+
+/**
+ * Generate an unique key for the given object and return it.
+ * Sets object._hashCode to the generated key.
+ *
+ * @param o {Object}
+ * @return {int} unique key for the given object
+ */
+qx.Class.toHashCode = function(o)
+{
+ if(o._hashCode != null) {
+ return o._hashCode;
+ }
+
+ return o._hashCode = qx.core.Object._counter++;
+}
+
+
+/**
+ * Class function which returns an object given its hash code
+ *
+ * @param hash {string} hash code of an object
+ *
+ * @returns {Object} the object whose hash is specified
+ */
+qx.Class.fromHashCode = function(hash) {
+ return qx.core.Object._db[hash];
+}
+
+
+/**
+ * Destructor. This method is called by qooxdoo on object destruction.
+ *
+ * Any class that holds ressources like links to DOM nodes must overwrite
+ * this method and free theese ressources.
+ */
+qx.Class.dispose = function()
+{
+ // var logger = qx.dev.log.Logger.getClassLogger(qx.core.Object);
+ // logger.debug("Disposing Application");
+
+ // var vStart = (new Date).valueOf();
+ var vObject;
+
+ for (var i=qx.core.Object._db.length-1; i>=0; i--)
+ {
+ vObject = qx.core.Object._db[i];
+
+ if (vObject && vObject._disposed === false)
+ {
+ // logger.debug("Disposing: " + vObject);
+ vObject.dispose();
+ }
+ }
+
+ // logger.debug("Done in: " + ((new Date).valueOf() - vStart) + "ms");
+}
+
+
+/**
+ * Summary of allocated objects
+ *
+ * @return {string} summary of allocated objects.
+ */
+qx.Class.summary = function()
+{
+ var vData = {};
+ var vCounter = 0;
+
+ for (var i=qx.core.Object._db.length-1; i>=0; i--)
+ {
+ vObject = qx.core.Object._db[i];
+
+ if (vObject && vObject._disposed === false)
+ {
+ if (vData[vObject.classname] == null)
+ {
+ vData[vObject.classname] = 1;
+ }
+ else
+ {
+ vData[vObject.classname]++;
+ }
+
+ vCounter++;
+ }
+ }
+
+ var vArrData = [];
+
+ for (var vClassName in vData) {
+ vArrData.push({ classname : vClassName, number : vData[vClassName] });
+ }
+
+ vArrData.sort(function(a, b) {
+ return b.number - a.number;
+ });
+
+ var vMsg = "Summary: (" + vCounter + " Objects)\n\n";
+
+ for (var i=0; i<vArrData.length; i++) {
+ vMsg += vArrData[i].number + ": " + vArrData[i].classname + "\n";
+ }
+
+ alert(vMsg);
+}
+
+/**
+ * Enable or disable the Object.
+ *
+ * The actual semantic of this property depends on concrete subclass of qx.core.Object.
+ */
+qx.OO.addProperty({ name : "enabled", type : "boolean", defaultValue : true, getAlias : "isEnabled" });
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Returns a string represantation of the qooxdoo object.
+ *
+ * @returns {string} string representation of the object
+ */
+qx.Proto.toString = function()
+{
+ if(this.classname) {
+ return "[object " + this.classname + "]";
+ }
+
+ return "[object Object]";
+}
+
+
+/**
+ * Return unique hash code of object
+ *
+ * @return {int} unique hash code of the object
+ */
+qx.Proto.toHashCode = function() {
+ return this._hashCode;
+}
+
+
+/**
+ * Returns true if the object is disposed.
+ *
+ * @return {boolean} wether the object has been disposed
+ */
+qx.Proto.getDisposed = function() {
+ return this._disposed;
+}
+
+
+/**
+ * Returns true if the object is disposed.
+ *
+ * @return {boolean} wether the object has been disposed
+ */
+qx.Proto.isDisposed = function() {
+ return this._disposed;
+}
+
+
+/**
+ * Returns a settings from global setting definition
+ *
+ * @param vKey {string}
+ * @return {Object} value of the global setting
+ */
+qx.Proto.getSetting = function(vKey) {
+ return qx.Settings.getValueOfClass(this.classname, vKey);
+}
+
+
+/*
+---------------------------------------------------------------------------
+ LOGGING INTERFACE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Returns the logger of this class.
+ *
+ * @return {qx.dev.log.Logger} the logger of this class.
+ */
+qx.Proto.getLogger = function() {
+ return qx.dev.log.Logger.getClassLogger(this.constructor);
+}
+
+
+/**
+ * Logs a debug message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.debug = function(msg, exc) {
+ this.getLogger().debug(msg, this._hashCode, exc);
+}
+
+
+/**
+ * Logs an info message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.info = function(msg, exc) {
+ this.getLogger().info(msg, this._hashCode, exc);
+}
+
+
+/**
+ * Logs a warning message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.warn = function(msg, exc) {
+ this.getLogger().warn(msg, this._hashCode, exc);
+}
+
+
+/**
+ * Logs an error message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.error = function(msg, exc) {
+ this.getLogger().error(msg, this._hashCode, exc);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMMON SETTER/GETTER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Sets multiple properties at once by using a property list
+ *
+ * @param propertyValues {Object} A hash of key-value pairs.
+ */
+qx.Proto.set = function(propertyValues)
+{
+ if (typeof propertyValues !== "object") {
+ throw new Error("Please use a valid hash of property key-values pairs.");
+ }
+
+ for (var prop in propertyValues)
+ {
+ try
+ {
+ this[qx.OO.setter[prop]](propertyValues[prop]);
+ }
+ catch(ex)
+ {
+ this.error("Setter of property " + prop + " returned with an error", ex);
+ }
+ }
+
+ return this;
+}
+
+/**
+ * Gets multiple properties at once by using a property list
+ *
+ * @param propertyNames {string | array | hash} list of the properties to get
+ * @param outputHint {string ? "array"} how should the values be returned. Possible values are "hash" and "array".
+*/
+qx.Proto.get = function(propertyNames, outputHint)
+{
+ switch(typeof propertyNames)
+ {
+ case "string":
+ return this["get" + qx.lang.String.toFirstUp(propertyNames)]();
+
+ case "object":
+ if (typeof propertyNames.length === "number")
+ {
+ if (outputHint == "hash")
+ {
+ var h = {};
+
+ propertyLength = propertyNames.length;
+ for (var i=0; i<propertyLength; i++)
+ {
+ try{
+ h[propertyNames[i]] = this["get" + qx.lang.String.toFirstUp(propertyNames[i])]();
+ }
+ catch(ex)
+ {
+ throw new Error("Could not get a valid value from property: " + propertyNames[i] + "! Is the property existing? (" + ex + ")");
+ }
+ }
+
+ return h;
+ }
+ else
+ {
+ propertyLength = propertyNames.length;
+ for (var i=0; i<propertyLength; i++)
+ {
+ try{
+ propertyNames[i] = this["get" + qx.lang.String.toFirstUp(propertyNames[i])]();
+ }
+ catch(ex)
+ {
+ throw new Error("Could not get a valid value from property: " + propertyNames[i] + "! Is the property existing? (" + ex + ")");
+ }
+ }
+
+ return propertyNames;
+ }
+ }
+ else
+ {
+ for (var i in propertyNames) {
+ propertyNames[i] = this["get" + qx.lang.String.toFirstUp(i)]();
+ }
+
+ return propertyNames;
+ }
+
+ default:
+ throw new Error("Please use a valid array, hash or string as parameter!");
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER DATA
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Store user defined data inside the object.
+ *
+ * @param vKey {string}
+ * @param vValue {Object}
+ */
+qx.Proto.setUserData = function(vKey, vValue)
+{
+ if (!this._userData) {
+ this._userData = {};
+ }
+
+ this._userData[vKey] = vValue;
+}
+
+
+/**
+ * Load user defined data from the object
+ *
+ * @param vKey {string}
+ * @return {Object} the user data
+ */
+qx.Proto.getUserData = function(vKey)
+{
+ if (!this._userData) {
+ return null;
+ }
+
+ return this._userData[vKey];
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._disposed = false;
+
+/**
+ * Dispose this object
+ */
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Dispose user data
+ if (this._userData)
+ {
+ for(var vKey in this._userData) {
+ this._userData[vKey] = null;
+ }
+
+ this._userData = null;
+ }
+
+ // Finally cleanup properties
+ if (this._objectproperties)
+ {
+ var a = this._objectproperties.split(",");
+ var d = qx.OO.values;
+
+ for (var i=0, l=a.length; i<l; i++) {
+ this[d[a[i]]] = null;
+ }
+
+ this._objectproperties = null;
+ }
+
+ if (this.getSetting("enableDisposerDebug"))
+ {
+ for (var vKey in this)
+ {
+ if (this[vKey] !== null && typeof this[vKey] === "object")
+ {
+ this.debug("Missing class implementation to dispose: " + vKey);
+ delete this[vKey];
+ }
+ }
+ }
+
+ /*
+ if (typeof CollectGarbage === "function") {
+ CollectGarbage();
+ }
+ */
+
+ // Delete Entry from Object DB
+ qx.core.Object._db[this._hashCode] = null;
+
+ // Mark as disposed
+ this._disposed = true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Target.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Target.js
new file mode 100644
index 0000000000..891ac44426
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Target.js
@@ -0,0 +1,299 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/**
+ * This is the main constructor for all objects that need to be connected to qx.event.type.Event objects.
+ *
+ * In objects created with this constructor, you find functions to addEventListener or
+ * removeEventListener to or from the created object. Each event to connect to has a type in
+ * form of an identification string. This type could be the name of a regular dom event like "click" or
+ * something self-defined like "ready".
+ *
+ * @param vAutoDispose {boolean ? true} wether the object should be disposed automatically by qooxdoo
+ */
+qx.OO.defineClass("qx.core.Target", qx.core.Object,
+function(vAutoDispose) {
+ qx.core.Object.call(this, vAutoDispose);
+});
+
+/**
+ * @private
+ */
+qx.Class.EVENTPREFIX = "evt";
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT CONNECTION
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Add event listener to an object.
+ *
+ * @param vType {string} name of the event type
+ * @param vFunction {Function} event callback function
+ * @param vObject {object ? window} reference to the 'this' variable inside the callback
+ */
+qx.Proto.addEventListener = function(vType, vFunction, vObject)
+{
+ if(this._disposed) {
+ return;
+ }
+
+ if(typeof vFunction !== "function") {
+ throw new Error("qx.core.Target: addEventListener(" + vType + "): '" + vFunction + "' is not a function!");
+ }
+
+ // If this is the first event of given type, we need to create a subobject
+ // that contains all the actions that will be assigned to this type
+ if (typeof this._listeners === "undefined")
+ {
+ this._listeners = {};
+ this._listeners[vType] = {};
+ }
+ else if(typeof this._listeners[vType] === "undefined")
+ {
+ this._listeners[vType] = {};
+ }
+
+ // Create a special vKey string to allow identification of each bound action
+ var vKey = qx.core.Target.EVENTPREFIX + qx.core.Object.toHashCode(vFunction) + (vObject ? "_" + qx.core.Object.toHashCode(vObject) : "");
+
+ // Finally set up the listeners object
+ this._listeners[vType][vKey] =
+ {
+ handler : vFunction,
+ object : vObject
+ }
+}
+
+
+/**
+ * Remove event listener from object
+ *
+ * @param vType {string} name of the event type
+ * @param vFunction {Function} event callback function
+ * @param vObject {object ? window} reference to the 'this' variable inside the callback
+ */
+qx.Proto.removeEventListener = function(vType, vFunction, vObject)
+{
+ if(this._disposed) {
+ return;
+ }
+
+ var vListeners = this._listeners;
+ if (!vListeners || typeof vListeners[vType] === "undefined") {
+ return;
+ }
+
+ if(typeof vFunction !== "function") {
+ throw new Error("qx.core.Target: removeEventListener(" + vType + "): '" + vFunction + "' is not a function!");
+ }
+
+ // Create a special vKey string to allow identification of each bound action
+ var vKey = qx.core.Target.EVENTPREFIX + qx.core.Object.toHashCode(vFunction) + (vObject ? "_" + qx.core.Object.toHashCode(vObject) : "");
+
+ // Delete object entry for this action
+ delete this._listeners[vType][vKey];
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT CONNECTION UTILITIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Check if there are one or more listeners for an event type.
+ *
+ * @param vType {string} name of the event type
+ */
+qx.Proto.hasEventListeners = function(vType) {
+ return this._listeners && typeof this._listeners[vType] !== "undefined" && !qx.lang.Object.isEmpty(this._listeners[vType]);
+}
+
+
+/**
+ * Checks if the event is registered. If so it creates an event object and dispatches it.
+ *
+ * @param vType {string} name of the event type
+ */
+qx.Proto.createDispatchEvent = function(vType)
+{
+ if (this.hasEventListeners(vType)) {
+ this.dispatchEvent(new qx.event.type.Event(vType), true);
+ }
+}
+
+
+/**
+ * Checks if the event is registered. If so it creates an event object and dispatches it.
+ *
+ * @param vType {string} name of the event type
+ * @param vData {Object} user defined data attached to the event object
+ */
+qx.Proto.createDispatchDataEvent = function(vType, vData)
+{
+ if (this.hasEventListeners(vType)) {
+ this.dispatchEvent(new qx.event.type.DataEvent(vType, vData), true);
+ }
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT DISPATCH
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Dispatch an event
+ *
+ * @param vEvent {qx.event.type.Event} event to dispatch
+ * @param vEnableDispose {boolean} wether the event object should be disposed after all event handlers run.
+ * @return {boolean} wether the event default was prevented or not. Returns true, when the event was NOT prevented.
+ */
+qx.Proto.dispatchEvent = function(vEvent, vEnableDispose)
+{
+ // Ignore event if eventTarget is disposed
+ if(this.getDisposed() && this.getEnabled()) {
+ return;
+ }
+
+ if (vEvent.getTarget() == null) {
+ vEvent.setTarget(this);
+ }
+
+ if (vEvent.getCurrentTarget() == null) {
+ vEvent.setCurrentTarget(this);
+ }
+
+ // Dispatch Event
+ this._dispatchEvent(vEvent, vEnableDispose);
+
+ // Read default prevented
+ var defaultPrevented = vEvent._defaultPrevented;
+
+ // enable dispose for event?
+ vEnableDispose && vEvent.dispose();
+
+ return !defaultPrevented;
+}
+
+
+/**
+ * Internal event dispatch method
+ *
+ * @param vEvent {qx.event.type.Event} event to dispatch
+ */
+qx.Proto._dispatchEvent = function(vEvent)
+{
+ var vListeners = this._listeners;
+ if (vListeners)
+ {
+ // Setup current target
+ vEvent.setCurrentTarget(this);
+
+ // Shortcut for listener data
+ var vTypeListeners = vListeners[vEvent.getType()];
+
+ if(vTypeListeners)
+ {
+ var vFunction, vObject;
+
+ // Handle all events for the specified type
+ for (var vHashCode in vTypeListeners)
+ {
+ // Shortcuts for handler and object
+ vFunction = vTypeListeners[vHashCode].handler;
+ vObject = vTypeListeners[vHashCode].object;
+
+ // Call object function
+ try
+ {
+ if(typeof vFunction === "function") {
+ vFunction.call(qx.util.Validation.isValid(vObject) ? vObject : this, vEvent);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Could not dispatch event of type \"" + vEvent.getType() + "\"", ex);
+ }
+ }
+ }
+ }
+
+ // Bubble event to parents
+ // TODO: Move this to Parent or Widget?
+ if(vEvent.getBubbles() && !vEvent.getPropagationStopped() && this.getParent)
+ {
+ var vParent = this.getParent();
+ if (vParent && !vParent.getDisposed() && vParent.getEnabled()) {
+ vParent._dispatchEvent(vEvent);
+ }
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Destructor.
+ */
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ if (typeof this._listeners === "object")
+ {
+ for (var vType in this._listeners)
+ {
+ var listener = this._listeners[vType];
+ for (var vKey in listener)
+ {
+ listener[vKey] = null;
+ }
+
+ this._listeners[vType] = null;
+ }
+ }
+
+ this._listeners = null;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Version.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Version.js
new file mode 100755
index 0000000000..c5b094eb97
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/core/Version.js
@@ -0,0 +1,67 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#random(386)
+
+************************************************************************ */
+
+/**
+ * qooxdoo version number information
+ */
+qx.OO.defineClass("qx.core.Version",
+{
+ /**
+ * qooxdoo major version number
+ */
+ major : 0,
+
+ /**
+ * qooxdoo minor version number
+ */
+ minor : 6,
+
+ /**
+ * qooxdoo revision number
+ */
+ revision : 3,
+
+ /**
+ * qooxdoo revision state
+ */
+ state : "",
+
+ /**
+ * qooxdoo subversion revision number
+ */
+ svn : Number("$Rev: 5000 $".match(/[0-9]+/)[0]),
+
+ /**
+ * returns the qooxdoo version string
+ *
+ * @return {string} qooxdoo version string
+ */
+ toString: function()
+ {
+ with(qx.core.Version) {
+ return major + "." + minor + (revision==0 ? "" : "." + revision) + (state == "" ? "" : "-" + state) + " (r" + svn + ")";
+ }
+ }
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/Pollution.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/Pollution.js
new file mode 100644
index 0000000000..9377a76fdd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/Pollution.js
@@ -0,0 +1,249 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(dev)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dev.Pollution");
+
+qx.Class.names =
+{
+ "window" : window,
+ "document" : document,
+ "body" : document.body
+}
+
+qx.Class.ignore =
+{
+ "window" :
+ [
+ // Firefox
+ "__firebug__",
+ "Components",
+ "controllers",
+
+ // Firefox extension: Firebug
+ "console",
+
+ // IE
+ "event",
+ "offscreenBuffering",
+ "clipboardData",
+ "clientInformation",
+ "Option",
+ "Image",
+ "external",
+ "screenTop",
+ "screenLeft",
+
+ // Standard
+ "length",
+ "window",
+ "document",
+ "location",
+ "navigator",
+ "netscape",
+ "parent",
+ "frames",
+ "top",
+ "scrollbars",
+ "name",
+ "scrollX",
+ "scrollY",
+ "self",
+ "screen",
+ "history",
+ "content",
+ "menubar",
+ "toolbar",
+ "locationbar",
+ "personalbar",
+ "statusbar",
+ "directories",
+ "closed",
+ "crypto",
+ "pkcs11",
+ "opener",
+ "status",
+ "defaultStatus",
+ "innerWidth",
+ "innerHeight",
+ "outerWidth",
+ "outerHeight",
+ "screenX",
+ "screenY",
+ "pageXOffset",
+ "pageYOffset",
+ "scrollMaxX",
+ "scrollMaxY",
+ "fullScreen",
+ "frameElement"
+ ],
+
+ "document" :
+ [
+ "domConfig",
+ "location",
+ "compatMode",
+ "implementation",
+ "defaultView",
+ "title",
+ "body",
+ "styleSheets",
+ "documentElement",
+ "nodeName",
+ "nodeType",
+ "firstChild",
+ "lastChild",
+ "doctype",
+ "images",
+ "applets",
+ "links",
+ "forms",
+ "anchors",
+ "cookie",
+ "embeds",
+ "plugins",
+ "designMode",
+ "childNodes"
+ ],
+
+ "body" :
+ [
+ "textContent",
+ "innerHTML",
+ "outerHTML",
+ "innerText",
+ "outerText",
+ "scopeName",
+ "parentElement",
+ "tagName",
+ "filters",
+ "contentEditable",
+ "document",
+ "currentStyle",
+ "isMultiLine",
+ "clientHeight",
+ "clientWidth",
+
+ "lastChild",
+ "firstChild",
+ "offsetTop",
+ "offsetLeft",
+ "offsetWidth",
+ "offsetHeight",
+ "tabIndex",
+ "className",
+ "attributes",
+ "previousSibling",
+ "nextSibling",
+ "ownerDocument",
+ "localName",
+ "childNodes",
+ "parentNode",
+ "nodeType",
+ "nodeName",
+ "style",
+
+ "scrollTop",
+ "scrollLeft",
+ "scrollWidth",
+ "scrollHeight"
+ ]
+}
+
+qx.Class.consoleInfo = function(object)
+{
+ alert("Global namespace is polluted by:\n\n" + qx.dev.Pollution.getTextList(object));
+}
+
+qx.Class.extract = function(object)
+{
+ var ext = [];
+ var ign = qx.dev.Pollution.ignore[object];
+ var obj = qx.dev.Pollution.names[object];
+
+ for (var key in obj)
+ {
+ try
+ {
+ // Ignore null or undefined values
+ if (typeof obj[key] == "undefined" || obj[key] === null) {
+ continue;
+ }
+
+ // Ignore native code
+ if (typeof obj[key] == "function" && obj[key].toString().indexOf("[native code]") != -1) {
+ continue;
+ }
+
+ // Ignore if configured
+ if (qx.lang.Array.contains(ign, key)) {
+ continue;
+ }
+ }
+ catch(ex)
+ {
+ continue;
+ }
+
+ ext.push({ "key" : key, "value" : obj[key] });
+ }
+
+ return ext;
+}
+
+qx.Class.getHtmlTable = function(object)
+{
+ var all = [];
+
+ var rowStart = "<tr style='vertical-align:top'><td>";
+ var cellSplit = "</td><td>";
+ var rowEnd = "</td></tr>";
+
+ all.push("<table>");
+
+ var ext = this.extract(object);
+
+ for (var i=0; i<ext.length; i++) {
+ all.push(rowStart + ext[i].key + cellSplit + ext[i].value + rowEnd);
+ }
+
+ all.push("</table>");
+
+ return all.join("");
+}
+
+qx.Class.getTextList = function(object)
+{
+ var all = [];
+
+ var cellSplit = ": ";
+ var rowEnd = "\n";
+
+ var ext = this.extract(object);
+
+ for (var i=0; i<ext.length; i++) {
+ all.push(ext[i].key + cellSplit + ext[i].value + rowEnd);
+ }
+
+ return all.join("");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/TimeTracker.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/TimeTracker.js
new file mode 100755
index 0000000000..a18502656f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/TimeTracker.js
@@ -0,0 +1,320 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(dev)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dev.TimeTracker", qx.core.Object,
+function()
+{
+ qx.core.Object.call(this);
+
+ this._functions = qx.lang.Array.fromArguments(arguments);
+
+ this.buttonSets();
+});
+
+qx.dev.TimeTracker.compare = function(a, b) {
+ return a-b;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.buttonSets = function()
+{
+ var btnLayout = new qx.ui.layout.HorizontalBoxLayout;
+
+ btnLayout.setLocation(20, 48);
+ btnLayout.setSpacing(5);
+
+ var loopLabel = new qx.ui.basic.Atom("Method Loops: ");
+ loopLabel.setAllowStretchY(false);
+ loopLabel.setVerticalAlign("middle");
+
+ var loopInput = new qx.ui.form.TextField("100");
+ loopInput.setAllowStretchY(false);
+ loopInput.setWidth(50);
+ loopInput.setVerticalAlign("middle");
+
+ var repeatLabel = new qx.ui.basic.Atom("Repeat Number: ");
+ repeatLabel.setAllowStretchY(false);
+ repeatLabel.setVerticalAlign("middle");
+ repeatLabel.setMarginLeft(30);
+
+ var btnStart1 = new qx.ui.form.Button("Start 3x", "icon/16/button-ok.png");
+ var btnStart2 = new qx.ui.form.Button("Start 7x", "icon/16/button-ok.png");
+ var btnStart3 = new qx.ui.form.Button("Start 15x", "icon/16/button-ok.png");
+ var btnStart4 = new qx.ui.form.Button("Start 25x", "icon/16/button-ok.png");
+
+ btnStart1.addEventListener("execute", function() { this.start(3, parseInt(loopInput.getValue())); }, this);
+ btnStart2.addEventListener("execute", function() { this.start(7, parseInt(loopInput.getValue())); }, this);
+ btnStart3.addEventListener("execute", function() { this.start(15, parseInt(loopInput.getValue())); }, this);
+ btnStart4.addEventListener("execute", function() { this.start(25, parseInt(loopInput.getValue())); }, this);
+
+ var htmlOutput = this._output = new qx.ui.embed.HtmlEmbed();
+
+ htmlOutput.setHtml("");
+ htmlOutput.setLocation(20, 78);
+ htmlOutput.setRight(335);
+ htmlOutput.setBottom(48);
+ htmlOutput.setBorder("1px solid black");
+ htmlOutput.setBackgroundColor("white");
+ htmlOutput.setPadding(10);
+ htmlOutput.setOverflow("auto");
+ htmlOutput.addToDocument();
+
+ btnLayout.add(loopLabel, loopInput, repeatLabel, btnStart1, btnStart2, btnStart3, btnStart4);
+ btnLayout.addToDocument();
+}
+
+qx.Proto.start = function(vRounds, vLoops)
+{
+ var vFuncs = this._functions;
+ var vLength = vFuncs.length;
+ var vStart;
+ var vLocalTimes;
+ var vAllTimes = [];
+ var vHtmlMeasured = [];
+ var vHtmlResults = [];
+ var vCellWidth = Math.round(100 / (vLength+1)) + "%";
+
+ vHtmlMeasured.push("<h3>Measured Values</h3>");
+
+ vHtmlMeasured.push("<style type='text/css'>.output{border: 1px solid black; width:100%; margin-bottom: 20px } .output thead{ font-weight: bold; } .output td, .output th{ text-align:left; width: " + vCellWidth + "; } .output td{padding:4px}</style>");
+
+ vHtmlMeasured.push("<table class='output'>");
+
+ vHtmlMeasured.push("<thead>");
+
+ vHtmlMeasured.push("<tr><td>&#160;</td>");
+
+ for (var j=0; j<vLength; j++) {
+ vHtmlMeasured.push("<td>Method " + (j+1) + "</td>");
+ }
+
+ vHtmlMeasured.push("</thead><tbody>");
+
+ for (var i=0; i<vRounds; i++)
+ {
+ vLocalTimes = [];
+
+ for (var j=0; j<vLength; j++)
+ {
+ vStart = (new Date).valueOf();
+
+ vFuncs[j](vLoops);
+
+ vLocalTimes.push((new Date).valueOf()-vStart);
+ }
+
+ vHtmlMeasured.push("<tr><th>Round " + i + "</th>");
+
+ for (var j=0; j<vLocalTimes.length; j++) {
+ vHtmlMeasured.push("<td>" + vLocalTimes[j] + "</td>");
+ }
+
+ vHtmlMeasured.push("</tr>");
+ vAllTimes.push(vLocalTimes);
+ }
+
+ vHtmlMeasured.push("</tbody></table>");
+
+
+
+
+
+ var vSum, vMeanValue, vMeanAll=[], vMeanMin=1e7, vMeanMax=0;
+
+ for (var j=0; j<vLength; j++)
+ {
+ vSum = 0;
+
+ for (var i=0; i<vRounds; i++)
+ {
+ vSum += vAllTimes[i][j];
+ }
+
+ vMeanValue = Math.round(vSum / vRounds);
+
+ vMeanAll.push(vMeanValue);
+
+ vMeanMin = Math.min(vMeanMin, vMeanValue);
+ vMeanMax = Math.max(vMeanMax, vMeanValue);
+ }
+
+
+
+ var vMedian, vMedianValue, vMedianAll=[], vMedianMin=1e7, vMedianMax=0;
+
+ for (var j=0; j<vLength; j++)
+ {
+ vMedian = [];
+
+ for (var i=0; i<vRounds; i++)
+ {
+ vMedian.push(vAllTimes[i][j]);
+ }
+
+ vMedian.sort(qx.dev.TimeTracker.compare);
+ vMedianValue = vMedian[Math.floor(vRounds / 2)].toString();
+
+ vMedianAll.push(vMedianValue);
+
+ vMedianMin = Math.min(vMedianValue, vMedianMin);
+ vMedianMax = Math.max(vMedianValue, vMedianMax);
+ }
+
+
+
+
+
+ vHtmlResults.push("<h3>Results Summary</h3>");
+
+ vHtmlResults.push("<table class='output'>");
+
+ vHtmlResults.push("<thead>");
+
+ vHtmlResults.push("<tr><td>&#160;</td>");
+
+ for (var j=0; j<vLength; j++) {
+ vHtmlResults.push("<td>Method " + (j+1) + "</td>");
+ }
+
+ vHtmlResults.push("</thead><tbody>");
+
+
+ vHtmlResults.push("<tr>");
+
+ vHtmlResults.push("<th>Median</th>");
+
+ for (var j=0; j<vLength; j++) {
+ vHtmlResults.push("<td>" + vMedianAll[j] + "</td>");
+ }
+
+ vHtmlResults.push("</tr>");
+
+
+
+ vHtmlResults.push("<tr>");
+
+ vHtmlResults.push("<th>Median Factor</th>");
+
+ for (var j=0; j<vLength; j++)
+ {
+ vHtmlResults.push("<td>");
+ vHtmlResults.push(vMedianMin > 0 ? Math.round(vMedianAll[j] / vMedianMin) : "1");
+ vHtmlResults.push("x</td>");
+ }
+
+ vHtmlResults.push("</tr>");
+
+
+
+ vHtmlResults.push("<tr>");
+
+ vHtmlResults.push("<th>Mean</th>");
+
+ for (var j=0; j<vLength; j++) {
+ vHtmlResults.push("<td>" + vMeanAll[j] + "</td>");
+ }
+
+ vHtmlResults.push("</tr>");
+
+
+
+ vHtmlResults.push("<tr>");
+
+ vHtmlResults.push("<th>Mean Factor</th>");
+
+ for (var j=0; j<vLength; j++)
+ {
+ vHtmlResults.push("<td>");
+ vHtmlResults.push(vMeanMin > 0 ? Math.round(vMeanAll[j] / vMeanMin) : 1);
+ vHtmlResults.push("x</td>");
+ }
+
+ vHtmlResults.push("</tr>");
+
+
+
+ vHtmlResults.push("<tr>");
+
+ vHtmlResults.push("<th>Winner</th>");
+
+ for (var j=0; j<vLength; j++)
+ {
+ vHtmlResults.push("<td>");
+
+ if (vMedianMin == vMedianAll[j] && vMeanMin == vMeanAll[j])
+ {
+ vHtmlResults.push("BOTH");
+ }
+
+ else if (vMedianMin == vMedianAll[j])
+ {
+ vHtmlResults.push("MEDIAN");
+ }
+
+ else if (vMeanMin == vMeanAll[j])
+ {
+ vHtmlResults.push("MEAN");
+ }
+
+ vHtmlResults.push("</td>");
+ }
+
+ vHtmlResults.push("</tr>");
+
+ vHtmlResults.push("</tbody></table>");
+
+ this._output.setHtml(vHtmlResults.join("") + vHtmlMeasured.join(""));
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._functions = null;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/AlertAppender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/AlertAppender.js
new file mode 100644
index 0000000000..d800ac13ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/AlertAppender.js
@@ -0,0 +1,65 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Andreas Ecker (ecker)
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender that writes each message to a native alert().
+ * <p>
+ * This class does not depend on qooxdoo widgets, so it also works when there
+ * are problems with widgets or when the widgets are not yet initialized.
+ * <p>
+ * It allows to go through the log messages step-by-step, since the alert
+ * window temporarily halts the regular program execution. That way even
+ * the dispose process can easily be debugged.
+ */
+qx.OO.defineClass("qx.dev.log.AlertAppender", qx.dev.log.Appender,
+function() {
+ qx.dev.log.Appender.call(this);
+});
+
+
+// overridden
+qx.OO.changeProperty({ name:"useLongFormat", type:"boolean", defaultValue:false, allowNull:false });
+
+// overridden
+qx.Proto.appendLogEvent = function(evt) {
+
+ // Append the message
+ var text = evt.logger.getName();
+ if (evt.instanceId != null) {
+ text += " (" + evt.instanceId + ")";
+ }
+
+ alert("\n" + text + "\n" + this.formatLogEvent(evt));
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.dev.log.Appender.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Appender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Appender.js
new file mode 100644
index 0000000000..b1645a87fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Appender.js
@@ -0,0 +1,181 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender. Does the actual logging.
+ */
+qx.OO.defineClass("qx.dev.log.Appender", qx.dev.log.LogEventProcessor,
+function() {
+ qx.dev.log.LogEventProcessor.call(this);
+});
+
+
+/** Whether the logger name and log level should be included in the formatted log message. */
+qx.OO.addProperty({ name:"useLongFormat", type:"boolean", defaultValue:true, allowNull:false });
+
+
+// overridden
+qx.Proto.handleLogEvent = function(evt) {
+ if (this.decideLogEvent(evt) != qx.dev.log.Filter.DENY) {
+ this.appendLogEvent(evt);
+ }
+}
+
+
+/**
+ * Appends a log event to the log.
+ *
+ * @param evt {Map} The event to append.
+ */
+qx.Proto.appendLogEvent = function(evt) {
+ throw new Error("appendLogEvent is abstract");
+}
+
+
+/**
+ * Formats a log event.
+ *
+ * @param evt {Map} The log event to format.
+ * @return {string} The formatted event.
+ */
+qx.Proto.formatLogEvent = function(evt) {
+ var Logger = qx.dev.log.Logger;
+
+ var text = "";
+
+ // Append the time stamp
+ var time = new String(new Date().getTime() - qx._LOADSTART);
+ while (time.length < 6) {
+ time = "0" + time;
+ }
+ text += time;
+
+ // Append the level
+ if (this.getUseLongFormat()) {
+ switch (evt.level) {
+ case Logger.LEVEL_DEBUG: text += " DEBUG: "; break;
+ case Logger.LEVEL_INFO: text += " INFO: "; break;
+ case Logger.LEVEL_WARN: text += " WARN: "; break;
+ case Logger.LEVEL_ERROR: text += " ERROR: "; break;
+ case Logger.LEVEL_FATAL: text += " FATAL: "; break;
+ }
+ } else {
+ text += ": ";
+ }
+
+ // Append the indent
+ var indent = "";
+ for (var i = 0; i < evt.indent; i++) {
+ indent += " ";
+ }
+ text += indent;
+
+ // Append the logger name and instance
+ if (this.getUseLongFormat()) {
+ text += evt.logger.getName();
+ if (evt.instanceId != null) {
+ text += "[" + evt.instanceId + "]";
+ }
+ text += ": ";
+ }
+
+ // Append the message
+ if (typeof evt.message == "string") {
+ text += evt.message;
+ } else {
+ // The message is an object -> Log a dump of the object
+ var obj = evt.message;
+ if (obj == null) {
+ text += "Object is null";
+ } else {
+ text += "--- Object: " + obj + " ---\n";
+ var attrArr = new Array();
+ try {
+ for (var attr in obj) {
+ attrArr.push(attr);
+ }
+ } catch (exc) {
+ text += indent + " [not readable: " + exc + "]\n";
+ }
+ attrArr.sort();
+ for (var i = 0; i < attrArr.length; i++) {
+ try {
+ text += indent + " " + attrArr[i] + "=" + obj[attrArr[i]] + "\n";
+ }
+ catch (exc) {
+ text += indent + " " + attrArr[i] + "=[not readable: " + exc + "]\n";
+ }
+ }
+ text += indent + "--- End of object ---";
+ }
+ }
+
+ // Append the throwable
+ if (evt.throwable != null) {
+ var thr = evt.throwable;
+
+ if (thr.name == null) {
+ text += ": " + thr;
+ } else {
+ text += ": " + thr.name;
+ }
+ if (thr.message != null) {
+ text += " - " + thr.message;
+ }
+ if (thr.number != null) {
+ text += " (#" + thr.number + ")";
+ }
+
+ if (thr.stack != null) {
+ text += "\n" + this._beautyStackTrace(thr.stack);
+ }
+ }
+
+ return text;
+}
+
+
+/**
+ * Beautifies a stack trace.
+ *
+ * @param stack {string} the stack trace to beautify.
+ * @return {string} the beautified stack trace.
+ */
+qx.Proto._beautyStackTrace = function(stack) {
+ // e.g. "()@http://localhost:8080/webcomponent-test-SNAPSHOT/webcomponent/js/com/ptvag/webcomponent/common/log/Logger:253"
+ var lineRe = /@(.+):(\d+)$/gm;
+ var hit;
+ var out = "";
+ var scriptDir = "/script/";
+ while ((hit = lineRe.exec(stack)) != null) {
+ var url = hit[1];
+
+ var jsPos = url.indexOf(scriptDir);
+ var className = (jsPos == -1) ? url : url.substring(jsPos + scriptDir.length).replace(/\//g, ".");
+
+ var lineNumber = hit[2];
+ out += " at " + className + ":" + lineNumber + "\n";
+ }
+ return out;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DefaultFilter.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DefaultFilter.js
new file mode 100644
index 0000000000..411a631ecd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DefaultFilter.js
@@ -0,0 +1,57 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#module(log)
+
+************************************************************************ */
+
+/**
+ * The default filter. Has a minimum level and can be enabled or disabled.
+ */
+qx.OO.defineClass("qx.dev.log.DefaultFilter", qx.dev.log.Filter,
+function() {
+ qx.dev.log.Filter.call(this);
+});
+
+
+/**
+ * Whether the filter should be enabled. If set to false all log events
+ * will be denied.
+ */
+qx.OO.addProperty({ name:"enabled", type:"boolean", defaultValue:true, allowNull:false, getAlias:"isEnabled" });
+
+/**
+ * The minimum log level. If set only log messages with a level greater or equal
+ * to the set level will be accepted.
+ */
+qx.OO.addProperty({ name:"minLevel", type:"number", defaultValue:null });
+
+
+// overridden
+qx.Proto.decide = function(evt) {
+ var Filter = qx.dev.log.Filter;
+ if (! this.isEnabled()) {
+ return Filter.DENY;
+ } else if (this.getMinLevel() == null) {
+ return Filter.NEUTRAL;
+ } else {
+ return (evt.level >= this.getMinLevel()) ? Filter.ACCEPT : Filter.DENY;
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DivAppender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DivAppender.js
new file mode 100644
index 0000000000..1f7376fa64
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/DivAppender.js
@@ -0,0 +1,164 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender that writes all messages to a div element.
+ *
+ * This class does not depend on qooxdoo widgets, so it also works when there
+ * are problems with widgets or when the widgets are not yet initialized.
+ *
+ * @param divId {string ? "qx_log"} the ID of the div element to write the
+ * messages to.
+ */
+qx.OO.defineClass("qx.dev.log.DivAppender", qx.dev.log.Appender,
+function(divId) {
+ qx.dev.log.Appender.call(this);
+
+ this._divId = divId ? divId : "qx_log";
+});
+
+
+/**
+ * The maximum number of messages to show. If null the number of messages is not
+ * limited.
+ */
+qx.OO.addProperty({ name:"maxMessages", type:"number", defaultValue:500 });
+
+// overridden
+qx.OO.changeProperty({ name:"useLongFormat", type:"boolean", defaultValue:false, allowNull:false });
+
+/** The CSS class name for the head div {containing the clear button}. */
+qx.OO.addProperty({ name:"headClassName", type:"string", defaultValue:"log-head" });
+
+/** The CSS class name for the body div {containing the log messages}. */
+qx.OO.addProperty({ name:"bodyClassName", type:"string", defaultValue:"log-body" });
+
+/** The CSS class name for a div showing the name of the current group. */
+qx.OO.addProperty({ name:"groupClassName", type:"string", defaultValue:"log-group" });
+
+/** The CSS class name for a div showing a debug message. */
+qx.OO.addProperty({ name:"debugClassName", type:"string", defaultValue:"log-debug" });
+
+/** The CSS class name for a div showing a info message. */
+qx.OO.addProperty({ name:"infoClassName", type:"string", defaultValue:"log-info" });
+
+/** The CSS class name for a div showing a warn message. */
+qx.OO.addProperty({ name:"warnClassName", type:"string", defaultValue:"log-warn" });
+
+/** The CSS class name for a div showing a error message. */
+qx.OO.addProperty({ name:"errorClassName", type:"string", defaultValue:"log-error" });
+
+
+/**
+ * Creates an onclick handler that clears a div element. This method is used to
+ * create a minimum closure.
+ *
+ * @param logElem {Element} the element to clear when the handler is called.
+ * @return {Function} the handler.
+ */
+qx.Proto._createClearButtonHandler = function(logElem) {
+ return function(evt) {
+ logElem.innerHTML = "";
+ }
+}
+
+
+// overridden
+qx.Proto.appendLogEvent = function(evt) {
+ var Logger = qx.dev.log.Logger;
+
+ // Initialize the log element if nessesary
+ if (this._logElem == null) {
+ var divElem = document.getElementById(this._divId);
+ if (divElem == null) {
+ throw new Error("Logging div with ID " + this._divId + " not found");
+ }
+ divElem.innerHTML = '<div class="' + this.getHeadClassName() + '"><button>Clear</button></div>'
+ + '<div class="' + this.getBodyClassName() + '"></div>';
+
+ this._clearBt = divElem.firstChild.firstChild;
+ this._logElem = divElem.lastChild;
+
+ this._clearBt.onclick = this._createClearButtonHandler(this._logElem);
+ }
+
+ // Append the group when needed
+ var group = evt.logger.getName();
+ if (evt.instanceId != null) {
+ group += "[" + evt.instanceId + "]";
+ }
+
+ if (group != this._lastGroup) {
+ var elem = document.createElement("div");
+ elem.className = this.getGroupClassName();
+ elem.innerHTML = group;
+
+ this._logElem.appendChild(elem);
+ this._lastGroup = group;
+ }
+
+ // Append the message
+ var elem = document.createElement("div");
+ switch (evt.level) {
+ case Logger.LEVEL_DEBUG: elem.className = this.getDebugClassName(); break;
+ case Logger.LEVEL_INFO: elem.className = this.getInfoClassName(); break;
+ case Logger.LEVEL_WARN: elem.className = this.getWarnClassName(); break;
+ case Logger.LEVEL_ERROR: elem.className = this.getErrorClassName(); break;
+ }
+ elem.innerHTML = this.formatLogEvent(evt).replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;").replace(/ /g, " &#160;").replace(/[\n]/g, "<br>");
+ this._logElem.appendChild(elem);
+
+ // Remove superflous messages
+ while (this._logElem.childNodes.length > this.getMaxMessages()) {
+ this._logElem.removeChild(this._logElem.firstChild);
+
+ if (this._removedMessageCount == null) {
+ this._removedMessageCount = 1;
+ } else {
+ this._removedMessageCount++;
+ }
+ }
+
+ if (this._removedMessageCount != null) {
+ this._logElem.firstChild.className = "";
+ this._logElem.firstChild.innerHTML = "(" + this._removedMessageCount
+ + " messages removed)";
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._clearBt) {
+ this._clearBt.onclick = null;
+ this._clearBt = null;
+ }
+ this._logElem = null;
+
+ return qx.dev.log.Appender.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Filter.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Filter.js
new file mode 100644
index 0000000000..60cee7ad6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Filter.js
@@ -0,0 +1,51 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#module(log)
+
+************************************************************************ */
+
+/**
+ * A filter for log events.
+ */
+qx.OO.defineClass("qx.dev.log.Filter", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+/**
+ * Decidies whether a log event is accepted.
+ *
+ * @param evt {Map} The event to check.
+ * @return {int} {@link #ACCEPT}, {@link #DENY} or {@link #NEUTRAL}.
+ */
+qx.Proto.decide = function(evt) {
+ throw new Error("decide is abstract");
+}
+
+
+/** {int} Specifies that the log event is accepted. */
+qx.Class.ACCEPT = 1;
+
+/** {int} Specifies that the log event is denied. */
+qx.Class.DENY = 2;
+
+/** {int} Specifies that the filter is neutral to the log event. */
+qx.Class.NEUTRAL = 3;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/FireBugAppender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/FireBugAppender.js
new file mode 100644
index 0000000000..34d66234c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/FireBugAppender.js
@@ -0,0 +1,72 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by David Perez
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * David Perez (david-perez)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender that writes all messages to FireBug, a nice extension for debugging and developing under Firefox.
+ * <p>
+ * This class does not depend on qooxdoo widgets, so it also works when there
+ * are problems with widgets or when the widgets are not yet initialized.
+ * </p>
+ */
+qx.OO.defineClass('qx.dev.log.FireBugAppender', qx.dev.log.Appender, function() {
+ qx.dev.log.Appender.call(this);
+});
+
+qx.Proto.appendLogEvent = function(evt)
+{
+ if (typeof console != 'undefined')
+ {
+ var log = qx.dev.log.Logger;
+ var msg = this.formatLogEvent(evt);
+
+ switch (evt.level)
+ {
+ case log.LEVEL_DEBUG:
+ if (console.debug) {
+ console.debug(msg);
+ }
+ break;
+ case log.LEVEL_INFO:
+ if (console.info) {
+ console.info(msg);
+ }
+ break;
+ case log.LEVEL_WARN:
+ if (console.warn) {
+ console.warn(msg);
+ }
+ break;
+ default:
+ if (console.error) {
+ console.error(msg);
+ }
+ break;
+ }
+ // Force a stack dump, for helping locating the error
+ if (evt.level > log.LEVEL_WARN && (!evt.throwable || !evt.throwable.stack) && console.trace)
+ {
+ console.trace();
+ }
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/ForwardAppender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/ForwardAppender.js
new file mode 100644
index 0000000000..5268f87989
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/ForwardAppender.js
@@ -0,0 +1,41 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender that forwards all log events to a log event processor.
+ *
+ * @param targetProcessor {LogEventProcessor} The log event processor Where to
+ * pass the log events.
+ */
+qx.OO.defineClass("qx.dev.log.ForwardAppender", qx.dev.log.Appender,
+function(targetProcessor) {
+ qx.dev.log.Appender.call(this);
+
+ this._targetProcessor = targetProcessor;
+});
+
+
+// overridden
+qx.Proto.appendLogEvent = function(evt) {
+ this._targetProcessor.handleLogEvent(evt);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/LogEventProcessor.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/LogEventProcessor.js
new file mode 100644
index 0000000000..c6c4a8ed33
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/LogEventProcessor.js
@@ -0,0 +1,141 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/**
+ * Processes log events. May be configured with filters in order to specify
+ * which log events should be processed.
+ */
+qx.OO.defineClass("qx.dev.log.LogEventProcessor", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Appends a filter to the filter chain.
+ *
+ * @param filter {Filter} The filter to append.
+ */
+qx.Proto.addFilter = function(filter) {
+ if (this._filterArr == null) {
+ this._filterArr = []
+ }
+ this._filterArr.push(filter);
+}
+
+
+/**
+ * Clears the filter chain.
+ */
+qx.Proto.clearFilters = function() {
+ this._filterArr = null;
+}
+
+
+/**
+ * Returns the head filter from the chain. Returns null if there are no filters.
+ *
+ * @return {Filter} the head filter from the chain.
+ */
+qx.Proto.getHeadFilter = function() {
+ return (this._filterArr == null || this._filterArr.length == 0) ? null : this._filterArr[0];
+}
+
+
+/**
+ * Returns the default filter from the chain. If the head filter is no default
+ * filter, the chain will be cleared and a default filter will be created.
+ *
+ * @return {Filter} the default filter.
+ */
+qx.Proto._getDefaultFilter = function() {
+ var headFilter = this.getHeadFilter();
+ if (! (headFilter instanceof qx.dev.log.DefaultFilter)) {
+ // The head filter of the appender is no DefaultFilter
+ // (or the appender has no filters at all)
+ // -> Create a default handler and append it
+ this.clearFilters();
+ headFilter = new qx.dev.log.DefaultFilter();
+ this.addFilter(headFilter);
+ }
+
+ return headFilter;
+}
+
+
+/**
+ * Sets whether event processing should be enabled.
+ * <p>
+ * Note: This will clear all custom filters.
+ *
+ * @param enabled {boolean} whether event processing should be enabled.
+ */
+qx.Proto.setEnabled = function(enabled) {
+ this._getDefaultFilter().setEnabled(enabled);
+}
+
+
+/**
+ * Sets the min level an event must have in order to be processed.
+ * <p>
+ * Note: This will clear all custom filters.
+ *
+ * @param minLevel {int} the new min level.
+ */
+qx.Proto.setMinLevel = function(minLevel) {
+ this._getDefaultFilter().setMinLevel(minLevel);
+}
+
+
+/**
+ * Decides whether a log event is processed.
+ *
+ * @param evt {Map} the event to check.
+ * @return {int} {@link Filter#ACCEPT}, {@link Filter#DENY} or
+ * {@link Filter#NEUTRAL}.
+ */
+qx.Proto.decideLogEvent = function(evt) {
+ var NEUTRAL = qx.dev.log.Filter.NEUTRAL;
+
+ if (this._filterArr != null) {
+ for (var i = 0; i < this._filterArr.length; i++) {
+ var decision = this._filterArr[i].decide(evt);
+ if (decision != NEUTRAL) {
+ return decision;
+ }
+ }
+ }
+
+ // All filters are neutral, so are we
+ return NEUTRAL;
+}
+
+
+/**
+ * Processes a log event.
+ *
+ * @param evt {Map} The log event to process.
+ */
+qx.Proto.handleLogEvent = function(evt) {
+ throw new Error("handleLogEvent is abstract");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Logger.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Logger.js
new file mode 100644
index 0000000000..b5cd3d6705
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/Logger.js
@@ -0,0 +1,374 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#module(log)
+#require(qx.dev.log.WindowAppender)
+
+************************************************************************ */
+
+/**
+ * A logger. Logs messages of one log category.
+ *
+ * @param name {string} The category name of this logger. (Normally a class or
+ * package name)
+ * @param parentLogger {Logger} The parent logger.
+ */
+qx.OO.defineClass("qx.dev.log.Logger", qx.dev.log.LogEventProcessor,
+function(name, parentLogger) {
+ qx.dev.log.LogEventProcessor.call(this);
+
+ this._name = name;
+ this._parentLogger = parentLogger;
+});
+
+
+/**
+ * Returns the name of this logger. (Normally a class or package name)
+ *
+ * @return {string} the name.
+ */
+qx.Proto.getName = function() {
+ return this._name;
+}
+
+
+/**
+ * Returns the parent logger.
+ *
+ * @return {Logger} the parent logger.
+ */
+qx.Proto.getParentLogger = function() {
+ return this._parentLogger;
+}
+
+
+/**
+ * Indents all following log messages by one.
+ * <p>
+ * This affects all log messages. Even those of other loggers.
+ */
+qx.Proto.indent = function() {
+ qx.dev.log.Logger._indent++;
+}
+
+
+/**
+ * Unindents all following log messages by one.
+ * <p>
+ * This affects all log messages. Even those of other loggers.
+ */
+qx.Proto.unindent = function() {
+ qx.dev.log.Logger._indent--;
+}
+
+
+/**
+ * Adds an appender.
+ * <p>
+ * If a logger has an appender, log events will not be passed to the
+ * appenders of parent loggers. If you want this behaviour, also append a
+ * {@link ForwardAppender}.
+ *
+ * @param appender {Appender} the appender to add.
+ */
+qx.Proto.addAppender = function(appender) {
+ if (this._appenderArr == null) {
+ this._appenderArr = [];
+ }
+
+ this._appenderArr.push(appender);
+}
+
+
+/**
+ * Removes an appender.
+ *
+ * @param appender {Appender} the appender to remove.
+ */
+qx.Proto.removeAppender = function(appender) {
+ if (this._appenderArr != null) {
+ this._appenderArr.remove(appender);
+ }
+}
+
+
+/**
+ * Removes all appenders.
+ */
+qx.Proto.removeAllAppenders = function() {
+ this._appenderArr = null;
+}
+
+
+// overridden
+qx.Proto.handleLogEvent = function(evt) {
+ var Filter = qx.dev.log.Filter;
+
+ var decision = Filter.NEUTRAL;
+ var logger = this;
+ while (decision == Filter.NEUTRAL && logger != null) {
+ decision = logger.decideLogEvent(evt);
+ logger = logger.getParentLogger();
+ }
+
+ if (decision != Filter.DENY) {
+ this.appendLogEvent(evt);
+ }
+}
+
+
+/**
+ * Passes a log event to the appenders. If the logger has no appenders the
+ * event will be passed to the appenders of the parent logger, and so on.
+ *
+ * @param evt {Map} The event to append.
+ */
+qx.Proto.appendLogEvent = function(evt) {
+ if (this._appenderArr != null && this._appenderArr.length != 0) {
+ for (var i = 0; i < this._appenderArr.length; i++) {
+ this._appenderArr[i].handleLogEvent(evt);
+ }
+ } else if (this._parentLogger != null) {
+ this._parentLogger.appendLogEvent(evt);
+ }
+}
+
+
+/**
+ * Logs a message.
+ *
+ * @param level {int} the log level.
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.log = function(level, msg, instanceId, exc) {
+ var evt = { logger:this, level:level, message:msg, throwable:exc,
+ indent:qx.dev.log.Logger._indent, instanceId:instanceId }
+ this.handleLogEvent(evt);
+}
+
+
+/**
+ * Logs a debug message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.debug = function(msg, instanceId, exc) {
+ this.log(qx.dev.log.Logger.LEVEL_DEBUG, msg, instanceId, exc);
+}
+
+
+/**
+ * Logs an info message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.info = function(msg, instanceId, exc) {
+ this.log(qx.dev.log.Logger.LEVEL_INFO, msg, instanceId, exc);
+}
+
+
+/**
+ * Logs a warning message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.warn = function(msg, instanceId, exc) {
+ this.log(qx.dev.log.Logger.LEVEL_WARN, msg, instanceId, exc);
+}
+
+
+/**
+ * Logs an error message.
+ *
+ * @param msg {var} the message to log. If this is not a string, the
+ * object dump will be logged.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.error = function(msg, instanceId, exc) {
+ this.log(qx.dev.log.Logger.LEVEL_ERROR, msg, instanceId, exc);
+}
+
+
+/**
+ * Logs a fatal message.
+ *
+ * @param msg {var} the message to log. If this is not a string, its
+ * object dump will be logged.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.fatal = function(msg, instanceId, exc) {
+ this.log(qx.dev.log.Logger.LEVEL_FATAL, msg, instanceId, exc);
+}
+
+
+/**
+ * Resets the measure timer.
+ *
+ * @see #measure{}
+ */
+qx.Proto.measureReset = function() {
+ if (this._totalMeasureTime != null) {
+ this.debug("Measure reset. Total measure time: " + this._totalMeasureTime + " ms");
+ }
+
+ this._lastMeasureTime = null;
+ this._totalMeasureTime = null;
+}
+
+
+/**
+ * Logs a debug message and measures the time since the last call of measure.
+ *
+ * @param msg {string} the message to log.
+ * @param instanceId {var ? null} the ID of the instance the log message comes from.
+ * @param exc {var ? null} the exception to log.
+ */
+qx.Proto.measure = function(msg, instanceId, exc) {
+ if (this._lastMeasureTime == null) {
+ msg = "(measure start) " + msg;
+ } else {
+ var delta = new Date().getTime() - this._lastMeasureTime;
+
+ if (this._totalMeasureTime == null) {
+ this._totalMeasureTime = 0;
+ }
+
+ this._totalMeasureTime += delta;
+ msg = "(passed time: " + delta + " ms) " + msg;
+ }
+
+ this.debug(msg, instanceId, exc);
+
+ this._lastMeasureTime = new Date().getTime();
+}
+
+
+/**
+ * Logs the current stack trace as a debug message.
+ */
+qx.Proto.printStackTrace = function() {
+ try {
+ forced_exception.go;
+ } catch (exc) {
+ this.debug("Current stack trace", "", exc);
+ }
+}
+
+
+/**
+ * Returns the logger of a class.
+ *
+ * @param clazz {Function} The class of which to return the logger.
+ */
+qx.Class.getClassLogger = function(clazz) {
+ var logger = clazz._logger;
+ if (logger == null) {
+ // Get the parent logger
+ var classname = clazz.classname;
+ var splits = classname.split(".");
+ var currPackage = window;
+ var currPackageName = "";
+ var parentLogger = qx.dev.log.Logger.ROOT_LOGGER;
+ for (var i = 0; i < splits.length - 1; i++) {
+ currPackage = currPackage[splits[i]];
+ currPackageName += ((i != 0) ? "." : "") + splits[i];
+
+ if (currPackage._logger == null) {
+ // This package has no logger -> Create one
+ currPackage._logger = new qx.dev.log.Logger(currPackageName, parentLogger);
+ }
+ parentLogger = currPackage._logger;
+ }
+
+ // Create the class logger
+ logger = new qx.dev.log.Logger(classname, parentLogger);
+ clazz._logger = logger;
+ }
+ return logger;
+}
+
+
+/** {int} The current indent. */
+qx.Class._indent = 0;
+
+/**
+ * (int) The ALL level has the lowest possible rank and is intended to turn on
+ * all logging.
+ */
+qx.Class.LEVEL_ALL = 0;
+
+/**
+ * (int) The DEBUG Level designates fine-grained informational events that are
+ * most useful to debug an application.
+ */
+qx.Class.LEVEL_DEBUG = 200;
+
+/**
+ * (int) The INFO level designates informational messages that highlight the
+ * progress of the application at coarse-grained level.
+ */
+qx.Class.LEVEL_INFO = 500;
+
+/** {int} The WARN level designates potentially harmful situations. */
+qx.Class.LEVEL_WARN = 600;
+
+/**
+ * (int) The ERROR level designates error events that might still allow the
+ * application to continue running.
+ */
+qx.Class.LEVEL_ERROR = 700;
+
+/**
+ * (int) The FATAL level designates very severe error events that will
+ * presumably lead the application to abort.
+ */
+qx.Class.LEVEL_FATAL = 800;
+
+/**
+ * (int) The OFF has the highest possible rank and is intended to turn off
+ * logging.
+ */
+qx.Class.LEVEL_OFF = 1000;
+
+
+/**
+ * {Logger} The root logger. This is the root of the logger tree. All loggers
+ * should be a child or grand child of this root logger.
+ * <p>
+ * This logger logs by default everything greater than level INFO to a log
+ * window.
+ */
+qx.Class.ROOT_LOGGER = new qx.dev.log.Logger("root", null);
+qx.Class.ROOT_LOGGER.setMinLevel(qx.dev.log.Logger.LEVEL_DEBUG);
+qx.Class.ROOT_LOGGER.addAppender(new qx.dev.log.WindowAppender);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/RingBufferAppender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/RingBufferAppender.js
new file mode 100644
index 0000000000..32d24c6636
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/RingBufferAppender.js
@@ -0,0 +1,122 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Carsten Lergenmueller (carstenl)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender that writes all messages to a memory container. The messages
+ * can be retrieved later, f. i. when an error dialog pops up and the question
+ * arises what actions have caused the error.
+ *
+ */
+qx.OO.defineClass("qx.dev.log.RingBufferAppender", qx.dev.log.Appender,
+function() {
+ qx.dev.log.Appender.call(this);
+
+ this._history = [];
+ this._nextIndexToStoreTo = 0;
+ this._appenderToFormatStrings = null;
+});
+
+
+/**
+ * The maximum number of messages to hold. If null the number of messages is not
+ * limited. Warning: Changing this property will clear the events logged so far.
+ */
+qx.OO.addProperty({ name:"maxMessages", type:"number", defaultValue:50 });
+
+qx.Proto._modifyMaxMessages = function(propValue, propOldValue, propData){
+ this._history = [];
+ this._nextIndexToStoreTo = 0;
+};
+
+// overridden
+qx.Proto.appendLogEvent = function(evt) {
+ var maxMessages = this.getMaxMessages();
+ if (this._history.length < maxMessages){
+ this._history.push(evt);
+ } else {
+ this._history[this._nextIndexToStoreTo++] = evt;
+ if (this._nextIndexToStoreTo >= maxMessages){
+ this._nextIndexToStoreTo = 0;
+ }
+ }
+};
+
+/**
+ * Returns log events which have been logged previously.
+ *
+ * @param count {int} The number of events to retreive. If there are more events than the
+ * given count, the oldest ones will not be returned.
+ * @return {array} array of stored log events
+ */
+qx.Proto.retrieveLogEvents = function(count) {
+ if (count > this._history.length){
+ count = this._history.length;
+ }
+
+ var indexOfYoungestElementInHistory
+ = this._history.length == this.getMaxMessages() ? this._nextIndexToStoreTo - 1
+ : this._history.length - 1;
+ var startIndex = indexOfYoungestElementInHistory - count + 1;
+ if (startIndex < 0){
+ startIndex += this._history.length;
+ }
+
+ var result;
+ if (startIndex <= indexOfYoungestElementInHistory){
+ result = this._history.slice(startIndex, indexOfYoungestElementInHistory + 1);
+ } else {
+ result = this._history.slice(startIndex, this._history.length).concat(
+ this._history.slice(0, indexOfYoungestElementInHistory + 1)
+ );
+ }
+ return result;
+};
+
+/**
+ * Returns a string holding the information of log events which have been logged previously.
+ *
+ * @param count {int} The number of events to retreive. If there are more events than the
+ * given count, the oldest ones will not be returned.
+ * @return {string} string
+ */
+qx.Proto.formatLogEvents = function(count) {
+ if (this._appenderToFormatStrings == null){
+ this._appenderToFormatStrings = new qx.dev.log.Appender();
+ }
+
+ var events = this.retrieveLogEvents(count);
+ var string = "";
+ for(var idx=0; idx < events.length; idx++) {
+ string += this._appenderToFormatStrings.formatLogEvent(events[idx]) + "\n";
+ }
+ return string;
+};
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.dev.log.Appender.prototype.dispose.call(this);
+};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/WindowAppender.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/WindowAppender.js
new file mode 100644
index 0000000000..e62efe4c37
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dev/log/WindowAppender.js
@@ -0,0 +1,225 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#module(log)
+
+************************************************************************ */
+
+/**
+ * An appender that writes all messages to a log window.
+ * <p>
+ * This class does not depend on qooxdoo widgets, so it also works when there
+ * are problems with widgets or when the widgets are not yet initialized.
+ *
+ * @param name {string ? "qx_log"} the name of the log window.
+ */
+qx.OO.defineClass("qx.dev.log.WindowAppender", qx.dev.log.Appender,
+function(name) {
+ qx.dev.log.Appender.call(this);
+
+ this._id = qx.dev.log.WindowAppender.register(this);
+ this._name = (name == null) ? "qx_log" : name;
+
+ this._logWindowOpened = false;
+});
+
+
+/**
+ * The maximum number of messages to show. If null the number of messages is not
+ * limited.
+ */
+qx.OO.addProperty({ name:"maxMessages", type:"number", defaultValue:500 });
+
+/** Whether the window should appear under the main window. */
+qx.OO.addProperty({ name:"popUnder", type:"boolean", defaultValue:false, allowNull:false });
+
+
+/**
+ * Creates and opens the log window if it doesn't alread exist.
+ */
+qx.Proto.openWindow = function() {
+ if (this._logWindowOpened) {
+ // The window is already open -> Nothing to do
+ return;
+ }
+
+ // Open the logger window
+ var winWidth = 600;
+ var winHeight = 350;
+ var winLeft = window.screen.width - winWidth;
+ var winTop = window.screen.height - winHeight;
+ var params = "toolbar=no,scrollbars=yes,resizable=yes,"
+ + "width=" + winWidth + ",height=" + winHeight
+ + ",left=" + winLeft + ",top=" + winTop;
+
+ // NOTE: In window.open the browser will process the event queue.
+ // Which means that other log events may arrive during this time.
+ // The log window is then in an inconsistent state, because the
+ // this._logElem is not created yet. These events will be added to the
+ // this._logEventQueue and logged after this._logElem is created.
+ this._logWindow = window.open("", this._name, params);
+
+ if (!this._logWindow || this._logWindow.closed)
+ {
+ if (!this._popupBlockerWarning) {
+ alert("Couldn't open debug window. Please disable your popup blocker!");
+ }
+
+ this._popupBlockerWarning = true;
+ return;
+ }
+
+ // Seems to be OK now.
+ this._popupBlockerWarning = false;
+
+ // Store that window is open
+ this._logWindowOpened = true;
+
+ if (this.getPopUnder()) {
+ this._logWindow.blur();
+ window.focus();
+ }
+
+ var logDocument = this._logWindow.document;
+ // NOTE: We have to use a static onunload handler, because an onunload
+ // that is set later using DOM is ignored completely.
+ // (at least in Firefox, but maybe in IE, too)
+ logDocument.open();
+ logDocument.write("<html><head><title>" + this._name + "</title></head>"
+ + '<body onload="qx = opener.qx;" onunload="try{qx.dev.log.WindowAppender._registeredAppenders[' + this._id + '].closeWindow()}catch(e){}">'
+ + '<pre id="log" wrap="wrap" style="font-size:11"></pre></body></html>');
+ logDocument.close();
+
+ this._logElem = logDocument.getElementById("log");
+
+ // Log the events from the queue
+ if (this._logEventQueue != null) {
+ for (var i = 0; i < this._logEventQueue.length; i++) {
+ this.appendLogEvent(this._logEventQueue[i]);
+ }
+ this._logEventQueue = null;
+ }
+}
+
+
+/**
+ * Closes the log window.
+ */
+qx.Proto.closeWindow = function() {
+ if (this._logWindow != null) {
+ this._logWindow.close();
+ this._logWindow = null;
+ this._logElem = null;
+ this._logWindowOpened = false;
+ }
+}
+
+
+// overridden
+qx.Proto.appendLogEvent = function(evt) {
+ if (!this._logWindowOpened) {
+ this._logEventQueue = [];
+ this._logEventQueue.push(evt);
+
+ this.openWindow();
+
+ // Popup-Blocker was active!
+ if (!this._logWindowOpened) {
+ return;
+ }
+ } else if (this._logElem == null) {
+ // The window is currenlty opening, but not yet finished
+ // -> Put the event in the queue
+ this._logEventQueue.push(evt);
+ } else {
+ var divElem = this._logWindow.document.createElement("div");
+ if (evt.level == qx.dev.log.Logger.LEVEL_ERROR) {
+ divElem.style.backgroundColor = "#FFEEEE";
+ } else if (evt.level == qx.dev.log.Logger.LEVEL_DEBUG) {
+ divElem.style.color = "gray";
+ }
+ divElem.innerHTML = this.formatLogEvent(evt).replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;").replace(/ /g, " &#160;").replace(/[\n]/g, "<br>");
+ this._logElem.appendChild(divElem);
+
+ while (this._logElem.childNodes.length > this.getMaxMessages()) {
+ this._logElem.removeChild(this._logElem.firstChild);
+
+ if (this._removedMessageCount == null) {
+ this._removedMessageCount = 1;
+ } else {
+ this._removedMessageCount++;
+ }
+ }
+
+ if (this._removedMessageCount != null) {
+ this._logElem.firstChild.innerHTML = "(" + this._removedMessageCount
+ + " messages removed)";
+ }
+
+ // Scroll to bottom
+ this._logWindow.scrollTo(0, this._logElem.offsetHeight);
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this.closeWindow();
+
+ return qx.dev.log.Appender.prototype.dispose.call(this);
+}
+
+
+qx.Class._nextId = 1;
+qx.Class._registeredAppenders = {};
+
+
+/**
+ * Registers a WindowAppender. This is used by the WindowAppender internally.
+ * You don't have to call this.
+ *
+ * @param appender {WindowAppender} the WindowAppender to register.
+ * @return {int} the ID.
+ */
+qx.Class.register = function(appender) {
+ var WindowAppender = qx.dev.log.WindowAppender;
+
+ var id = WindowAppender._nextId++;
+ WindowAppender._registeredAppenders[id] = appender;
+
+ return id;
+}
+
+
+/**
+ * Returns a prviously registered WindowAppender.
+ *
+ * @param id {int} the ID of the wanted WindowAppender.
+ * @return {WindowAppender} the WindowAppender or null if no
+ * WindowAppender with this ID is registered.
+ */
+qx.Class.getAppender = function(id) {
+ return qx.dev.log.WindowAppender._registeredAppenders[id];
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Dimension.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Dimension.js
new file mode 100644
index 0000000000..7b6b6c7daf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Dimension.js
@@ -0,0 +1,222 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Dimension");
+
+/*
++-Outer----------------------------------------+
+| Margin |
+| +-Box------------------------------+ |
+| | Border (+ Scrollbar) | |
+| | +-Area--------------------+ | |
+| | | Padding | | |
+| | | +-Inner----------+ | | |
+| | | | | | | |
+| | | +----------------+ | | |
+| | +-------------------------+ | |
+| +----------------------------------+ |
++----------------------------------------------+
+*/
+
+// Dimensions
+qx.dom.Dimension.getOuterWidth = function(el) { return qx.dom.Dimension.getBoxWidth(el) + qx.dom.Style.getMarginLeft(el) + qx.dom.Style.getMarginRight(el); }
+qx.dom.Dimension.getOuterHeight = function(el) { return qx.dom.Dimension.getBoxHeight(el) + qx.dom.Style.getMarginTop(el) + qx.dom.Style.getMarginBottom(el); }
+
+qx.dom.Dimension.getBoxWidthForZeroHeight = function(el)
+{
+ var h = el.offsetHeight;
+ if (h == 0) {
+ var o = el.style.height;
+ el.style.height = "1px";
+ }
+
+ var v = el.offsetWidth;
+
+ if (h == 0) {
+ el.style.height = o;
+ }
+
+ return v;
+}
+
+qx.dom.Dimension.getBoxHeightForZeroWidth = function(el)
+{
+ var w = el.offsetWidth;
+ if (w == 0) {
+ var o = el.style.width;
+ el.style.width = "1px";
+ }
+
+ var v = el.offsetHeight;
+
+ if (w == 0) {
+ el.style.width = o;
+ }
+
+ return v;
+}
+
+qx.dom.Dimension.getBoxWidth = function(el) {
+ return el.offsetWidth;
+}
+
+qx.dom.Dimension.getBoxHeight = function(el) {
+ return el.offsetHeight;
+}
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.dom.Dimension.getAreaWidth = function(el)
+ {
+ // 0 in clientWidth could mean both: That it is really 0 or
+ // that the element is not rendered by the browser and
+ // therefore it is 0, too
+
+ // In Gecko based browsers there is sometimes another
+ // behaviour: The clientHeight is equal to the border
+ // sum. This is normally not correct and so we
+ // fix this value with a more complex calculation.
+
+ // (Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1)
+
+ if (el.clientWidth != 0 && el.clientWidth != (qx.dom.Style.getBorderLeft(el) + qx.dom.Style.getBorderRight(el)))
+ {
+ return el.clientWidth;
+ }
+ else
+ {
+ return qx.dom.Dimension.getBoxWidth(el) - qx.dom.Dimension.getInsetLeft(el) - qx.dom.Dimension.getInsetRight(el);
+ }
+ }
+
+ qx.dom.Dimension.getAreaHeight = function(el)
+ {
+ // 0 in clientHeight could mean both: That it is really 0 or
+ // that the element is not rendered by the browser and
+ // therefore it is 0, too
+
+ // In Gecko based browsers there is sometimes another
+ // behaviour: The clientHeight is equal to the border
+ // sum. This is normally not correct and so we
+ // fix this value with a more complex calculation.
+
+ // (Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1)
+
+ if (el.clientHeight != 0 && el.clientHeight != (qx.dom.Style.getBorderTop(el) + qx.dom.Style.getBorderBottom(el)))
+ {
+ return el.clientHeight;
+ }
+ else
+ {
+ return qx.dom.Dimension.getBoxHeight(el) - qx.dom.Dimension.getInsetTop(el) - qx.dom.Dimension.getInsetBottom(el);
+ }
+ }
+}
+else
+{
+ qx.dom.Dimension.getAreaWidth = function(el)
+ {
+ // 0 in clientWidth could mean both: That it is really 0 or
+ // that the element is not rendered by the browser and
+ // therefore it is 0, too
+
+ return el.clientWidth != 0 ? el.clientWidth : (qx.dom.Dimension.getBoxWidth(el) - qx.dom.Dimension.getInsetLeft(el) - qx.dom.Dimension.getInsetRight(el));
+ }
+
+ qx.dom.Dimension.getAreaHeight = function(el)
+ {
+ // 0 in clientHeight could mean both: That it is really 0 or
+ // that the element is not rendered by the browser and
+ // therefore it is 0, too
+
+ return el.clientHeight != 0 ? el.clientHeight : (qx.dom.Dimension.getBoxHeight(el) - qx.dom.Dimension.getInsetTop(el) - qx.dom.Dimension.getInsetBottom(el));
+ }
+}
+
+qx.dom.Dimension.getInnerWidth = function(el) { return qx.dom.Dimension.getAreaWidth(el) - qx.dom.Style.getPaddingLeft(el) - qx.dom.Style.getPaddingRight(el); }
+qx.dom.Dimension.getInnerHeight = function(el) { return qx.dom.Dimension.getAreaHeight(el) - qx.dom.Style.getPaddingTop(el) - qx.dom.Style.getPaddingBottom(el); }
+
+
+
+
+// Insets
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.Dimension.getInsetLeft = function(el) { return el.clientLeft; }
+ qx.dom.Dimension.getInsetTop = function(el) { return el.clientTop; }
+ qx.dom.Dimension.getInsetRight = function(el) {
+ if(qx.dom.Style.getStyleProperty(el, "overflowY") == "hidden" || el.clientWidth == 0) {
+ return qx.dom.Style.getBorderRight(el);
+ }
+
+ return Math.max(0, el.offsetWidth - el.clientLeft - el.clientWidth);
+ }
+
+ qx.dom.Dimension.getInsetBottom = function(el) {
+ if(qx.dom.Style.getStyleProperty(el, "overflowX") == "hidden" || el.clientHeight == 0) {
+ return qx.dom.Style.getBorderBottom(el);
+ }
+
+ return Math.max(0, el.offsetHeight - el.clientTop - el.clientHeight);
+ }
+}
+else
+{
+ qx.dom.Dimension.getInsetLeft = function(el) { return qx.dom.Style.getBorderLeft(el); }
+ qx.dom.Dimension.getInsetTop = function(el) { return qx.dom.Style.getBorderTop(el); }
+
+ qx.dom.Dimension.getInsetRight = function(el) {
+ // Alternative method if clientWidth is unavailable
+ // clientWidth == 0 could mean both: unavailable or really 0
+ if (el.clientWidth == 0) {
+ var ov = qx.dom.Style.getStyleProperty(el, "overflow");
+ var sbv = ov == "scroll" || ov == "-moz-scrollbars-vertical" ? 16 : 0;
+ return Math.max(0, qx.dom.Style.getBorderRight(el) + sbv);
+ }
+
+ return Math.max(0, el.offsetWidth - el.clientWidth - qx.dom.Style.getBorderLeft(el));
+ }
+
+ qx.dom.Dimension.getInsetBottom = function(el) {
+ // Alternative method if clientHeight is unavailable
+ // clientHeight == 0 could mean both: unavailable or really 0
+ if (el.clientHeight == 0) {
+ var ov = qx.dom.Style.getStyleProperty(el, "overflow");
+ var sbv = ov == "scroll" || ov == "-moz-scrollbars-horizontal" ? 16 : 0;
+ return Math.max(0, qx.dom.Style.getBorderBottom(el) + sbv);
+ }
+
+ return Math.max(0, el.offsetHeight - el.clientHeight - qx.dom.Style.getBorderTop(el));
+ }
+}
+
+
+// Scrollbar
+qx.dom.Dimension.getScrollBarSizeLeft = function(el) { return 0; }
+qx.dom.Dimension.getScrollBarSizeTop = function(el) { return 0; }
+qx.dom.Dimension.getScrollBarSizeRight = function(el) { return qx.dom.Dimension.getInsetRight(el) - qx.dom.Style.getBorderRight(el); }
+qx.dom.Dimension.getScrollBarSizeBottom = function(el) { return qx.dom.Dimension.getInsetBottom(el) - qx.dom.Style.getBorderBottom(el); }
+
+qx.dom.Dimension.getScrollBarVisibleX = function(el) { return qx.dom.Dimension.getScrollBarSizeRight(el) > 0; }
+qx.dom.Dimension.getScrollBarVisibleY = function(el) { return qx.dom.Dimension.getScrollBarSizeBottom(el) > 0; }
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Element.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Element.js
new file mode 100644
index 0000000000..fa851e1434
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Element.js
@@ -0,0 +1,74 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/**
+ * Crossbrowser operations on DOM Nodes
+ */
+qx.OO.defineClass("qx.dom.Element");
+
+
+/**
+ * Removes whitespace-only text node children
+ *
+ * @param vElement {Element} DOM element
+ */
+qx.dom.Element.cleanWhitespace = function(vElement)
+{
+ for (var i=0; i<vElement.childNodes.length; i++)
+ {
+ var node = vElement.childNodes[i];
+
+ if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
+ vElement.removeChild(node);
+ }
+ }
+}
+
+
+/**
+ * Checks if a element has no content
+ *
+ * @param vElement {Element} DOM element
+ */
+qx.dom.Element.isEmpty = function(vElement) {
+ return vElement.innerHTML.match(/^\s*$/);
+}
+
+
+/**
+ * Sets the textValue of the given DOM element.
+ * Wrapper for element.innerText and element.textContent.
+ *
+ * @param vElement {Element} DOM node
+ * @param sValue {string}
+ */
+qx.dom.Element.setTextContent = function(vElement, sValue) {};
+
+if (qx.sys.Client.getInstance().supportsTextContent()) {
+ qx.dom.Element.setTextContent = function(vElement, sValue) {
+ vElement.textContent = sValue;
+ };
+} else if (qx.sys.Client.getInstance().supportsInnerText()) {
+ qx.dom.Element.setTextContent = function(vElement, sValue) {
+ vElement.innerText = sValue;
+ };
+} else {
+ qx.dom.Element.setTextContent = function(vElement, sValue) {
+ vElement.innerHTML = sValue;
+ };
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ElementFromPoint.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ElementFromPoint.js
new file mode 100644
index 0000000000..8d8e4c0fd3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ElementFromPoint.js
@@ -0,0 +1,122 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.ElementFromPoint");
+
+qx.dom.ElementFromPoint.getElementFromPoint = function(x, y) {
+ return qx.dom.ElementFromPoint.getElementFromPointHandler(document.body, x, y);
+}
+
+qx.dom.ElementFromPoint.getElementFromPointHandler = function(node, x, y, recursive)
+{
+ var ch = node.childNodes;
+ var chl = ch.length-1;
+
+ if (chl < 0) {
+ return null;
+ }
+
+ var chc, subres, ret;
+
+ do
+ {
+ chc = ch[chl];
+ ret = qx.dom.ElementFromPoint.getElementFromPointChecker(chc, x, y);
+
+ if (ret)
+ {
+ if (typeof recursive === "boolean" && recursive == false)
+ {
+ return chc;
+ }
+ else
+ {
+ subres = qx.dom.ElementFromPoint.getElementFromPointHandler(chc, x-ret[0]-qx.dom.Style.getBorderLeft(chc), y-ret[2]-qx.dom.Style.getBorderTop(chc));
+ return subres ? subres : chc;
+ }
+ }
+ }
+ while(chl--);
+
+ return null;
+}
+
+qx.dom.ElementFromPoint.getElementFromPointChecker = function(chc, x, y)
+{
+ var xstart, ystart, xstop, ystop;
+
+ if (chc.nodeType != 1) {
+ return false;
+ }
+
+ xstart = qx.dom.Offset.getLeft(chc);
+ if (x > xstart)
+ {
+ ystart = qx.dom.Offset.getTop(chc);
+ if (y > ystart)
+ {
+ xstop = xstart + chc.offsetWidth;
+
+ if (x < xstop)
+ {
+ ystop = ystart + chc.offsetHeight;
+ if (y < ystop)
+ {
+ return [ xstart, xstop, ystart, ystop ];
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+qx.dom.ElementFromPoint.getElementAbsolutePointChecker = function(chc, x, y)
+{
+ var xstart, ystart, xstop, ystop;
+
+ if (!chc || chc.nodeType != 1) {
+ return false;
+ }
+
+ xstart = qx.dom.Location.getPageBoxLeft(chc);
+ if (x > xstart)
+ {
+ ystart = qx.dom.Location.getPageBoxTop(chc);
+ if (y > ystart)
+ {
+ xstop = xstart + chc.offsetWidth;
+
+ if (x < xstop)
+ {
+ ystop = ystart + chc.offsetHeight;
+ if (y < ystop)
+ {
+ return [ xstart, xstop, ystart, ystop ];
+ }
+ }
+ }
+ }
+
+ return false;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/EventRegistration.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/EventRegistration.js
new file mode 100644
index 0000000000..9f42b2e1b6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/EventRegistration.js
@@ -0,0 +1,47 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.EventRegistration");
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.EventRegistration.addEventListener = function(vElement, vType, vFunction) {
+ vElement.attachEvent("on" + vType, vFunction);
+ }
+
+ qx.dom.EventRegistration.removeEventListener = function(vElement, vType, vFunction) {
+ vElement.detachEvent("on" + vType, vFunction);
+ }
+}
+else
+{
+ qx.dom.EventRegistration.addEventListener = function(vElement, vType, vFunction) {
+ vElement.addEventListener(vType, vFunction, false);
+ }
+
+ qx.dom.EventRegistration.removeEventListener = function(vElement, vType, vFunction) {
+ vElement.removeEventListener(vType, vFunction, false);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Iframe.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Iframe.js
new file mode 100644
index 0000000000..51cd67346a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Iframe.js
@@ -0,0 +1,87 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Iframe");
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.Iframe.getWindow = function(vIframe)
+ {
+ try
+ {
+ return vIframe.contentWindow;
+ }
+ catch(ex)
+ {
+ return null;
+ }
+ }
+
+ qx.dom.Iframe.getDocument = function(vIframe)
+ {
+ try
+ {
+ var vWin = qx.dom.Iframe.getWindow(vIframe);
+ return vWin ? vWin.document : null;
+ }
+ catch(ex)
+ {
+ return null;
+ }
+ }
+}
+else
+{
+ qx.dom.Iframe.getWindow = function(vIframe)
+ {
+ try
+ {
+ var vDoc = qx.dom.Iframe.getDocument(vIframe);
+ return vDoc ? vDoc.defaultView : null;
+ }
+ catch(ex)
+ {
+ return null;
+ }
+ }
+
+ qx.dom.Iframe.getDocument = function(vIframe)
+ {
+ try
+ {
+ return vIframe.contentDocument;
+ }
+ catch(ex)
+ {
+ return null;
+ }
+ }
+}
+
+qx.dom.Iframe.getBody = function(vIframe)
+{
+ var vDoc = qx.dom.Iframe.getDocument(vIframe);
+ return vDoc ? vDoc.getElementsByTagName("body")[0] : null;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Location.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Location.js
new file mode 100644
index 0000000000..479a3aaba8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Location.js
@@ -0,0 +1,259 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Location");
+
+qx.dom.Location.getPageOuterLeft = function(el) { return qx.dom.Location.getPageBoxLeft(el) - qx.dom.Style.getMarginLeft(el); }
+qx.dom.Location.getPageOuterTop = function(el) { return qx.dom.Location.getPageBoxTop(el) - qx.dom.Style.getMarginTop(el); }
+qx.dom.Location.getPageOuterRight = function(el) { return qx.dom.Location.getPageBoxRight(el) + qx.dom.Style.getMarginRight(el); }
+qx.dom.Location.getPageOuterBottom = function(el) { return qx.dom.Location.getPageBoxBottom(el) + qx.dom.Style.getMarginBottom(el); }
+
+qx.dom.Location.getClientOuterLeft = function(el) { return qx.dom.Location.getClientBoxLeft(el) - qx.dom.Style.getMarginLeft(el); }
+qx.dom.Location.getClientOuterTop = function(el) { return qx.dom.Location.getClientBoxTop(el) - qx.dom.Style.getMarginTop(el); }
+qx.dom.Location.getClientOuterRight = function(el) { return qx.dom.Location.getClientBoxRight(el) + qx.dom.Style.getMarginRight(el); }
+qx.dom.Location.getClientOuterBottom = function(el) { return qx.dom.Location.getClientBoxBottom(el) + qx.dom.Style.getMarginBottom(el); }
+
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.Location.getClientBoxLeft = function(el) { return el.getBoundingClientRect().left; }
+ qx.dom.Location.getClientBoxTop = function(el) { return el.getBoundingClientRect().top; }
+
+ qx.dom.Location.getPageBoxLeft = function(el) { return qx.dom.Location.getClientBoxLeft(el) + qx.dom.Scroll.getLeftSum(el); }
+ qx.dom.Location.getPageBoxTop = function(el) { return qx.dom.Location.getClientBoxTop(el) + qx.dom.Scroll.getTopSum(el); }
+}
+else if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.dom.Location.getClientBoxLeft = function(el) { return qx.dom.Location.getClientAreaLeft(el) - qx.dom.Style.getBorderLeft(el); }
+ qx.dom.Location.getClientBoxTop = function(el) { return qx.dom.Location.getClientAreaTop(el) - qx.dom.Style.getBorderTop(el); }
+
+ qx.dom.Location.getPageBoxLeft = function(el) { return qx.dom.Location.getPageAreaLeft(el) - qx.dom.Style.getBorderLeft(el); }
+ qx.dom.Location.getPageBoxTop = function(el) { return qx.dom.Location.getPageAreaTop(el) - qx.dom.Style.getBorderTop(el); }
+}
+else
+{
+ qx.dom.Location.getPageBoxLeft = function(el)
+ {
+ var sum = el.offsetLeft;
+ while (el.tagName.toLowerCase() != "body")
+ {
+ el = el.offsetParent;
+ sum += el.offsetLeft;
+ }
+
+ return sum;
+ }
+
+ qx.dom.Location.getPageBoxTop = function(el)
+ {
+ var sum = el.offsetTop;
+ while (el.tagName.toLowerCase() != "body")
+ {
+ el = el.offsetParent;
+ sum += el.offsetTop;
+ }
+
+ return sum;
+ }
+
+ qx.dom.Location.getClientBoxLeft = function(el)
+ {
+ var sum = el.offsetLeft;
+ while (el.tagName.toLowerCase() != "body")
+ {
+ el = el.offsetParent;
+ sum += el.offsetLeft - el.scrollLeft;
+ }
+
+ return sum;
+ }
+
+ qx.dom.Location.getClientBoxTop = function(el)
+ {
+ var sum = el.offsetTop;
+ while (el.tagName.toLowerCase() != "body")
+ {
+ el = el.offsetParent;
+ sum += el.offsetTop - el.scrollTop;
+ }
+
+ return sum;
+ }
+}
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.Location.getClientBoxRight = function(el) { return el.getBoundingClientRect().right; }
+ qx.dom.Location.getClientBoxBottom = function(el) { return el.getBoundingClientRect().bottom; }
+
+ qx.dom.Location.getPageBoxRight = function(el) { return qx.dom.Location.getClientBoxRight(el) + qx.dom.Scroll.getLeftSum(el); }
+ qx.dom.Location.getPageBoxBottom = function(el) { return qx.dom.Location.getClientBoxBottom(el) + qx.dom.Scroll.getTopSum(el); }
+}
+else
+{
+ qx.dom.Location.getClientBoxRight = function(el) { return qx.dom.Location.getClientBoxLeft(el) + qx.dom.Dimension.getBoxWidth(el); }
+ qx.dom.Location.getClientBoxBottom = function(el) { return qx.dom.Location.getClientBoxTop(el) + qx.dom.Dimension.getBoxHeight(el); }
+
+ qx.dom.Location.getPageBoxRight = function(el) { return qx.dom.Location.getPageBoxLeft(el) + qx.dom.Dimension.getBoxWidth(el); }
+ qx.dom.Location.getPageBoxBottom = function(el) { return qx.dom.Location.getPageBoxTop(el) + qx.dom.Dimension.getBoxHeight(el); }
+}
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.dom.Location.getPageAreaLeft = function(el) {
+ return el.ownerDocument.getBoxObjectFor(el).x;
+ }
+
+ qx.dom.Location.getPageAreaTop = function(el) {
+ return el.ownerDocument.getBoxObjectFor(el).y;
+ }
+
+ // We need to subtract the scroll position of all parent containers (bug #186229).
+ qx.dom.Location.getClientAreaLeft = function(el) {
+ return qx.dom.Location.getPageAreaLeft(el) - qx.dom.Scroll.getLeftSum(el);
+ }
+
+ // We need to subtract the scroll position of all parent containers (bug #186229).
+ qx.dom.Location.getClientAreaTop = function(el) {
+ return qx.dom.Location.getPageAreaTop(el) - qx.dom.Scroll.getTopSum(el);
+ }
+}
+else
+{
+ qx.dom.Location.getClientAreaLeft = function(el) { return qx.dom.Location.getClientBoxLeft(el) + qx.dom.Style.getBorderLeft(el); }
+ qx.dom.Location.getClientAreaTop = function(el) { return qx.dom.Location.getClientBoxTop(el) + qx.dom.Style.getBorderTop(el); }
+
+ qx.dom.Location.getPageAreaLeft = function(el) { return qx.dom.Location.getPageBoxLeft(el) + qx.dom.Style.getBorderLeft(el); }
+ qx.dom.Location.getPageAreaTop = function(el) { return qx.dom.Location.getPageBoxTop(el) + qx.dom.Style.getBorderTop(el); }
+}
+
+
+
+qx.dom.Location.getClientAreaRight = function(el) { return qx.dom.Location.getClientAreaLeft(el) + qx.dom.Dimension.getAreaWidth(el); }
+qx.dom.Location.getClientAreaBottom = function(el) { return qx.dom.Location.getClientAreaTop(el) + qx.dom.Dimension.getAreaHeight(el); }
+
+qx.dom.Location.getPageAreaRight = function(el) { return qx.dom.Location.getPageAreaLeft(el) + qx.dom.Dimension.getAreaWidth(el); }
+qx.dom.Location.getPageAreaBottom = function(el) { return qx.dom.Location.getPageAreaTop(el) + qx.dom.Dimension.getAreaHeight(el); }
+
+
+
+
+qx.dom.Location.getClientInnerLeft = function(el) { return qx.dom.Location.getClientAreaLeft(el) + qx.dom.Style.getPaddingLeft(el); }
+qx.dom.Location.getClientInnerTop = function(el) { return qx.dom.Location.getClientAreaTop(el) + qx.dom.Style.getPaddingTop(el); }
+qx.dom.Location.getClientInnerRight = function(el) { return qx.dom.Location.getClientInnerLeft(el) + qx.dom.Dimension.getInnerWidth(el); }
+qx.dom.Location.getClientInnerBottom = function(el) { return qx.dom.Location.getClientInnerTop(el) + qx.dom.Dimension.getInnerHeight(el); }
+
+qx.dom.Location.getPageInnerLeft = function(el) { return qx.dom.Location.getPageAreaLeft(el) + qx.dom.Style.getPaddingLeft(el); }
+qx.dom.Location.getPageInnerTop = function(el) { return qx.dom.Location.getPageAreaTop(el) + qx.dom.Style.getPaddingTop(el); }
+qx.dom.Location.getPageInnerRight = function(el) { return qx.dom.Location.getPageInnerLeft(el) + qx.dom.Dimension.getInnerWidth(el); }
+qx.dom.Location.getPageInnerBottom = function(el) { return qx.dom.Location.getPageInnerTop(el) + qx.dom.Dimension.getInnerHeight(el); }
+
+
+// Screen
+if (qx.sys.Client.getInstance().isGecko())
+{
+ /*
+ screenX and screenY seem to return the distance to the box
+ and not to the area. Confusing, especially as the x and y properties
+ of the BoxObject return the distance to the area.
+ */
+
+ qx.dom.Location.getScreenBoxLeft = function(el)
+ {
+ // We need to subtract the scroll position of all
+ // parent containers (bug #186229).
+ var sum = 0;
+ var p = el.parentNode;
+ while (p.nodeType == 1) {
+ sum += p.scrollLeft;
+ p = p.parentNode;
+ }
+
+ return el.ownerDocument.getBoxObjectFor(el).screenX - sum;
+ }
+
+ qx.dom.Location.getScreenBoxTop = function(el)
+ {
+ // We need to subtract the scroll position of all
+ // parent containers (bug #186229).
+ var sum = 0;
+ var p = el.parentNode;
+ while (p.nodeType == 1) {
+ sum += p.scrollTop;
+ p = p.parentNode;
+ }
+
+ return el.ownerDocument.getBoxObjectFor(el).screenY - sum;
+ }
+}
+else
+{
+ // Hope this works in khtml, too (opera 7.6p3 seems to be ok)
+ qx.dom.Location.getScreenBoxLeft = function(el) { return qx.dom.Location.getScreenDocumentLeft(el) + qx.dom.Location.getPageBoxLeft(el); }
+ qx.dom.Location.getScreenBoxTop = function(el) { return qx.dom.Location.getScreenDocumentTop(el) + qx.dom.Location.getPageBoxTop(el); }
+}
+
+qx.dom.Location.getScreenBoxRight = function(el) { return qx.dom.Location.getScreenBoxLeft(el) + qx.dom.Dimension.getBoxWidth(el); }
+qx.dom.Location.getScreenBoxBottom = function(el) { return qx.dom.Location.getScreenBoxTop(el) + qx.dom.Dimension.getBoxHeight(el); }
+
+qx.dom.Location.getScreenOuterLeft = function(el) { return qx.dom.Location.getScreenBoxLeft(el) - qx.dom.Style.getMarginLeft(el); }
+qx.dom.Location.getScreenOuterTop = function(el) { return qx.dom.Location.getScreenBoxTop(el) - qx.dom.Style.getMarginTop(el); }
+qx.dom.Location.getScreenOuterRight = function(el) { return qx.dom.Location.getScreenBoxRight(el) + qx.dom.Style.getMarginRight(el); }
+qx.dom.Location.getScreenOuterBottom = function(el) { return qx.dom.Location.getScreenBoxBottom(el) + qx.dom.Style.getMarginBottom(el); }
+
+qx.dom.Location.getScreenAreaLeft = function(el) { return qx.dom.Location.getScreenBoxLeft(el) + qx.dom.Dimension.getInsetLeft(el); }
+qx.dom.Location.getScreenAreaTop = function(el) { return qx.dom.Location.getScreenBoxTop(el) + qx.dom.Dimension.getInsetTop(el); }
+qx.dom.Location.getScreenAreaRight = function(el) { return qx.dom.Location.getScreenBoxRight(el) - qx.dom.Dimension.getInsetRight(el); }
+qx.dom.Location.getScreenAreaBottom = function(el) { return qx.dom.Location.getScreenBoxBottom(el) - qx.dom.Dimension.getInsetBottom(el); }
+
+qx.dom.Location.getScreenInnerLeft = function(el) { return qx.dom.Location.getScreenAreaLeft(el) + qx.dom.Style.getPaddingLeft(el); }
+qx.dom.Location.getScreenInnerTop = function(el) { return qx.dom.Location.getScreenAreaTop(el) + qx.dom.Style.getPaddingTop(el); }
+qx.dom.Location.getScreenInnerRight = function(el) { return qx.dom.Location.getScreenAreaRight(el) - qx.dom.Style.getPaddingRight(el); }
+qx.dom.Location.getScreenInnerBottom = function(el) { return qx.dom.Location.getScreenAreaBottom(el) - qx.dom.Style.getPaddingBottom(el); }
+
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ /*
+ Notice:
+ This doesn't work like the mshtml method:
+ el.ownerDocument.defaultView.screenX;
+ */
+
+ // Tested in Gecko 1.7.5
+ qx.dom.Location.getScreenDocumentLeft = function(el) { return qx.dom.Location.getScreenOuterLeft(el.ownerDocument.body); }
+ qx.dom.Location.getScreenDocumentTop = function(el) { return qx.dom.Location.getScreenOuterTop(el.ownerDocument.body); }
+ qx.dom.Location.getScreenDocumentRight = function(el) { return qx.dom.Location.getScreenOuterRight(el.ownerDocument.body); }
+ qx.dom.Location.getScreenDocumentBottom = function(el) { return qx.dom.Location.getScreenOuterBottom(el.ownerDocument.body); }
+}
+else
+{
+ // Tested in Opera 7.6b3 and Mshtml 6.0 (XP-SP2)
+ // What's up with khtml (Safari/Konq)?
+ qx.dom.Location.getScreenDocumentLeft = function(el) { return el.document.parentWindow.screenLeft; }
+ qx.dom.Location.getScreenDocumentTop = function(el) { return el.document.parentWindow.screenTop; }
+ qx.dom.Location.getScreenDocumentRight = function(el) {}
+ qx.dom.Location.getScreenDocumentBottom = function(el) {}
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Node.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Node.js
new file mode 100644
index 0000000000..c4b02ea16e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Node.js
@@ -0,0 +1,38 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Node",
+{
+ ELEMENT : 1,
+ ATTRIBUTE : 2,
+ TEXT : 3,
+ CDATA_SECTION : 4,
+ ENTITY_REFERENCE : 5,
+ ENTITY : 6,
+ PROCESSING_INSTRUCTION : 7,
+ COMMENT : 8,
+ DOCUMENT : 9,
+ DOCUMENT_TYPE : 10,
+ DOCUMENT_FRAGMENT : 11,
+ NOTATION : 12
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Offset.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Offset.js
new file mode 100644
index 0000000000..74e653b279
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Offset.js
@@ -0,0 +1,119 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Offset");
+
+/*
+Mozilla seems to be a little buggy here.
+Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0
+
+It calculates some borders and/or paddings to the offsetProperties.
+*/
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.dom.Offset.getLeft = function(el)
+ {
+ var val = el.offsetLeft;
+ var pa = el.parentNode;
+
+ var pose = qx.dom.Style.getStyleProperty(el, "position");
+ var posp = qx.dom.Style.getStyleProperty(pa, "position");
+
+ // If element is positioned non-static: Substract the border of the element
+ if (pose != "absolute" && pose != "fixed") {
+ val -= qx.dom.Style.getBorderLeft(pa);
+ }
+
+ // If parent is positioned static: Substract the border of the first
+ // parent element which is ab positioned non-static.
+ if (posp != "absolute" && posp != "fixed")
+ {
+ while(pa)
+ {
+ pa = pa.parentNode;
+
+ if (!pa || qx.util.Validation.isInvalidString(pa.tagName)) {
+ break;
+ }
+
+ var posi = qx.dom.Style.getStyleProperty(pa, "position");
+
+ if (posi == "absolute" || posi == "fixed") {
+ val -= qx.dom.Style.getBorderLeft(pa) + qx.dom.Style.getPaddingLeft(pa);
+ break;
+ }
+ }
+ }
+
+ return val;
+ }
+
+ qx.dom.Offset.getTop = function(el)
+ {
+ var val = el.offsetTop;
+ var pa = el.parentNode;
+
+ var pose = qx.dom.Style.getStyleProperty(el, "position");
+ var posp = qx.dom.Style.getStyleProperty(pa, "position");
+
+ // If element is positioned non-static: Substract the border of the element
+ if (pose != "absolute" && pose != "fixed") {
+ val -= qx.dom.Style.getBorderTop(pa);
+ }
+
+ // If parent is positioned static: Substract the border of the first
+ // parent element which is ab positioned non-static.
+ if (posp != "absolute" && posp != "fixed")
+ {
+ while(pa)
+ {
+ pa = pa.parentNode;
+
+ if (!pa || qx.util.Validation.isInvalidString(pa.tagName)) {
+ break;
+ }
+
+ var posi = qx.dom.Style.getStyleProperty(pa, "position");
+
+ if (posi == "absolute" || posi == "fixed") {
+ val -= qx.dom.Style.getBorderTop(pa) + qx.dom.Style.getPaddingTop(pa);
+ break;
+ }
+ }
+ }
+
+ return val;
+ }
+}
+else
+{
+ qx.dom.Offset.getLeft = function(el) {
+ return el.offsetLeft;
+ }
+
+ qx.dom.Offset.getTop = function(el) {
+ return el.offsetTop;
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Scroll.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Scroll.js
new file mode 100644
index 0000000000..5c3808489d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Scroll.js
@@ -0,0 +1,53 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Scroll");
+
+qx.dom.Scroll.getLeftSum = function(el)
+{
+ var sum = 0;
+ var p = el.parentNode;
+
+ while (p.nodeType == 1)
+ {
+ sum += p.scrollLeft;
+ p = p.parentNode;
+ }
+
+ return sum;
+}
+
+qx.dom.Scroll.getTopSum = function(el)
+{
+ var sum = 0;
+ var p = el.parentNode;
+
+ while (p.nodeType == 1)
+ {
+ sum += p.scrollTop;
+ p = p.parentNode;
+ }
+
+ return sum;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ScrollIntoView.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ScrollIntoView.js
new file mode 100644
index 0000000000..d045524d29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/ScrollIntoView.js
@@ -0,0 +1,175 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.dom.Style)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.ScrollIntoView");
+
+// Internet Explorer has invented scrollIntoView, but does not behave the same like in Mozilla (which would be better)
+// Mozilla has a native well working method scrollIntoView
+// Safari does not support scrollIntoView (but it can be found in Webkit since May 2005)
+// Opera does not support scrollIntoView
+
+qx.dom.BODY_TAG_NAME = "body";
+
+qx.dom.ScrollIntoView.scrollX = function(vElement, vAlignLeft)
+{
+ var vParentWidth, vParentScrollLeft, vWidth, vHasScroll;
+
+ var vParent = vElement.parentNode;
+ var vOffset = vElement.offsetLeft;
+ var vWidth = vElement.offsetWidth;
+
+ while(vParent)
+ {
+ switch(qx.dom.Style.getStyleProperty(vParent, "overflow"))
+ {
+ case "scroll":
+ case "auto":
+ case "-moz-scrollbars-horizontal":
+ vHasScroll = true;
+ break;
+
+ default:
+ switch(qx.dom.Style.getStyleProperty(vParent, "overflowX"))
+ {
+ case "scroll":
+ case "auto":
+ vHasScroll = true;
+ break;
+
+ default:
+ vHasScroll = false;
+ }
+ }
+
+ if (vHasScroll)
+ {
+ vParentWidth = vParent.clientWidth;
+ vParentScrollLeft = vParent.scrollLeft;
+
+ if (vAlignLeft)
+ {
+ vParent.scrollLeft = vOffset;
+ }
+ else if (vAlignLeft == false)
+ {
+ vParent.scrollLeft = vOffset + vWidth - vParentWidth;
+ }
+ else if (vWidth > vParentWidth || vOffset < vParentScrollLeft)
+ {
+ vParent.scrollLeft = vOffset;
+ }
+ else if ((vOffset + vWidth) > (vParentScrollLeft + vParentWidth))
+ {
+ vParent.scrollLeft = vOffset + vWidth - vParentWidth;
+ }
+
+ vOffset = vParent.offsetLeft;
+ vWidth = vParent.offsetWidth;
+ }
+ else
+ {
+ vOffset += vParent.offsetLeft;
+ }
+
+ if (vParent.tagName.toLowerCase() == qx.dom.BODY_TAG_NAME) {
+ break;
+ }
+
+ vParent = vParent.parentNode;
+ }
+
+ return true;
+}
+
+qx.dom.ScrollIntoView.scrollY = function(vElement, vAlignTop)
+{
+ var vParentHeight, vParentScrollTop, vHeight, vHasScroll;
+
+ var vParent = vElement.parentNode;
+ var vOffset = vElement.offsetTop;
+ var vHeight = vElement.offsetHeight;
+
+ while(vParent)
+ {
+ switch(qx.dom.Style.getStyleProperty(vParent, "overflow"))
+ {
+ case "scroll":
+ case "auto":
+ case "-moz-scrollbars-vertical":
+ vHasScroll = true;
+ break;
+
+ default:
+ switch(qx.dom.Style.getStyleProperty(vParent, "overflowY"))
+ {
+ case "scroll":
+ case "auto":
+ vHasScroll = true;
+ break;
+
+ default:
+ vHasScroll = false;
+ }
+ }
+
+ if (vHasScroll)
+ {
+ vParentHeight = vParent.clientHeight;
+ vParentScrollTop = vParent.scrollTop;
+
+ if (vAlignTop)
+ {
+ vParent.scrollTop = vOffset;
+ }
+ else if (vAlignTop == false)
+ {
+ vParent.scrollTop = vOffset + vHeight - vParentHeight;
+ }
+ else if (vHeight > vParentHeight || vOffset < vParentScrollTop)
+ {
+ vParent.scrollTop = vOffset;
+ }
+ else if ((vOffset + vHeight) > (vParentScrollTop + vParentHeight))
+ {
+ vParent.scrollTop = vOffset + vHeight - vParentHeight;
+ }
+
+ vOffset = vParent.offsetTop;
+ vHeight = vParent.offsetHeight;
+ }
+ else
+ {
+ vOffset += vParent.offsetTop;
+ }
+
+ if (vParent.tagName.toLowerCase() == qx.dom.BODY_TAG_NAME) {
+ break;
+ }
+
+ vParent = vParent.parentNode;
+ }
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Style.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Style.js
new file mode 100644
index 0000000000..b003f0e18a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Style.js
@@ -0,0 +1,122 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Style");
+
+if (Boolean(document.defaultView) && Boolean(document.defaultView.getComputedStyle))
+{
+ qx.dom.Style.getStylePropertySure = function(el, prop) { return !el ? null : el.ownerDocument ? el.ownerDocument.defaultView.getComputedStyle(el, "")[prop] : el.style[prop]; }
+
+ qx.dom.Style.getStyleProperty = function(el, prop)
+ {
+ try
+ {
+ return el.ownerDocument.defaultView.getComputedStyle(el, "")[prop];
+ }
+ catch(ex)
+ {
+ throw new Error("Could not evaluate computed style: " + el + "[" + prop + "]: " + ex);
+ }
+ }
+}
+else if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.Style.getStyleProperty = function(el, prop)
+ {
+ try
+ {
+ return el.currentStyle[prop];
+ }
+ catch(ex)
+ {
+ throw new Error("Could not evaluate computed style: " + el + "[" + prop + "]: " + ex);
+ }
+ }
+
+ qx.dom.Style.getStylePropertySure = function(el, prop)
+ {
+ try
+ {
+ if (!el) {
+ return null;
+ }
+
+ if (el.parentNode && el.currentStyle)
+ {
+ return el.currentStyle[prop];
+ }
+ else
+ {
+ var v1 = el.runtimeStyle[prop];
+
+ if (v1 != null && typeof v1 != "undefined" && v1 != "") {
+ return v1;
+ }
+
+ return el.style[prop];
+ }
+ }
+ catch(ex)
+ {
+ throw new Error("Could not evaluate computed style: " + el + "[" + prop + "]: " + ex);
+ }
+ }
+}
+else
+{
+ qx.dom.Style.getStylePropertySure = function(el, prop) { return !el ? null : el.style[prop]; }
+
+ qx.dom.Style.getStyleProperty = function(el, prop)
+ {
+ try
+ {
+ return el.style[prop];
+ }
+ catch(ex)
+ {
+ throw new Error("Could not evaluate computed style: " + el + "[" + prop + "]");
+ }
+ }
+}
+
+
+qx.dom.Style.getStyleSize = function(el, prop) { return parseInt(qx.dom.Style.getStyleProperty(el, prop)) || 0; }
+
+
+// Properties
+qx.dom.Style.getMarginLeft = function(el) { return qx.dom.Style.getStyleSize(el, "marginLeft"); }
+qx.dom.Style.getMarginTop = function(el) { return qx.dom.Style.getStyleSize(el, "marginTop"); }
+qx.dom.Style.getMarginRight = function(el) { return qx.dom.Style.getStyleSize(el, "marginRight"); }
+qx.dom.Style.getMarginBottom = function(el) { return qx.dom.Style.getStyleSize(el, "marginBottom"); }
+
+qx.dom.Style.getPaddingLeft = function(el) { return qx.dom.Style.getStyleSize(el, "paddingLeft"); }
+qx.dom.Style.getPaddingTop = function(el) { return qx.dom.Style.getStyleSize(el, "paddingTop"); }
+qx.dom.Style.getPaddingRight = function(el) { return qx.dom.Style.getStyleSize(el, "paddingRight"); }
+qx.dom.Style.getPaddingBottom = function(el) { return qx.dom.Style.getStyleSize(el, "paddingBottom"); }
+
+qx.dom.Style.getBorderLeft = function(el) { return qx.dom.Style.getStyleProperty(el, "borderLeftStyle") == "none" ? 0 : qx.dom.Style.getStyleSize(el, "borderLeftWidth"); }
+qx.dom.Style.getBorderTop = function(el) { return qx.dom.Style.getStyleProperty(el, "borderTopStyle") == "none" ? 0 : qx.dom.Style.getStyleSize(el, "borderTopWidth"); }
+qx.dom.Style.getBorderRight = function(el) { return qx.dom.Style.getStyleProperty(el, "borderRightStyle") == "none" ? 0 : qx.dom.Style.getStyleSize(el, "borderRightWidth"); }
+qx.dom.Style.getBorderBottom = function(el) { return qx.dom.Style.getStyleProperty(el, "borderBottomStyle") == "none" ? 0 : qx.dom.Style.getStyleSize(el, "borderBottomWidth"); }
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/StyleSheet.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/StyleSheet.js
new file mode 100644
index 0000000000..be51ad58be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/StyleSheet.js
@@ -0,0 +1,308 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Andreas Junghans (lucidcake)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.StyleSheet");
+
+
+/**
+ * create a new Stylesheet node and append it to the document
+ *
+ * @param vCssText {string} optional string of css rules
+ */
+qx.dom.StyleSheet.createElement = function(vCssText) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.createElement = function(vCssText)
+ {
+ var vSheet = document.createStyleSheet();
+
+ if (vCssText) {
+ vSheet.cssText = vCssText;
+ }
+
+ return vSheet;
+ }
+}
+else // FF, Opera, Safari
+{
+ qx.dom.StyleSheet.createElement = function(vCssText)
+ {
+ var vElement = document.createElement("style");
+ vElement.type = "text/css";
+
+ // Safari 2.0 doesn't like empty stylesheets
+ vElement.appendChild(document.createTextNode(vCssText || "body {}"));
+
+ document.getElementsByTagName("head")[0].appendChild(vElement);
+
+ if (vElement.sheet) {
+ return vElement.sheet;
+ } else {
+ // Safari 2.0 doesn't support element.sheet so we neet a workaround
+ var styles = document.styleSheets;
+ for (var i=styles.length-1; i>=0; i--) {
+ if (styles[i].ownerNode == vElement) {
+ return styles[i];
+ }
+ }
+ }
+ throw "Error: Could not get a reference to the sheet object";
+ }
+}
+
+
+/**
+ * insert a new CSS rule into a given Stylesheet
+ *
+ * @param vSheet {Object} the target Stylesheet object
+ * @param vSelector {string}
+ * @param vStyle {string}
+ */
+qx.dom.StyleSheet.addRule = function(vSheet, vSelector, vStyle) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.addRule = function(vSheet, vSelector, vStyle) {
+ vSheet.addRule(vSelector, vStyle);
+ };
+}
+else if (qx.sys.Client.getInstance().isSafari2()) // insertRule in Safari 2 doesn't work
+{
+ qx.dom.StyleSheet.addRule = function(vSheet, vSelector, vStyle) {
+ if (!vSheet._qxRules) {
+ vSheet._qxRules = {};
+ }
+ if (!vSheet._qxRules[vSelector]) {
+ var ruleNode = document.createTextNode(vSelector + "{" + vStyle + "}");
+ vSheet.ownerNode.appendChild(ruleNode);
+ vSheet._qxRules[vSelector] = ruleNode;
+ }
+ };
+}
+else // FF, Opera
+{
+ qx.dom.StyleSheet.addRule = function(vSheet, vSelector, vStyle) {
+ vSheet.insertRule(vSelector + "{" + vStyle + "}", vSheet.cssRules.length);
+ };
+}
+
+
+/**
+ * remove a CSS rule from a stylesheet
+ *
+ * @param vSheet {Object} the Stylesheet
+ * @param vSelector {string} the Selector of the rule to remove
+ */
+qx.dom.StyleSheet.removeRule = function(vSheet, vSelector) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.removeRule = function(vSheet, vSelector)
+ {
+ var vRules = vSheet.rules;
+ var vLength = vRules.length;
+
+ for (var i=vLength-1; i>=0; i--)
+ {
+ if (vRules[i].selectorText == vSelector) {
+ vSheet.removeRule(i);
+ }
+ }
+ }
+}
+else if (qx.sys.Client.getInstance().isSafari2()) // removeRule in Safari 2 doesn't work
+{
+ qx.dom.StyleSheet.removeRule = function(vSheet, vSelector)
+ {
+ var warn = function() {
+ qx.dev.log.Logger.ROOT_LOGGER.warn("In Safari/Webkit you can only remove rules that are created using qx.dom.StyleSheet.addRule");
+ }
+ if (!vSheet._qxRules) {
+ warn();
+ }
+ var ruleNode = vSheet._qxRules[vSelector];
+ if (ruleNode) {
+ vSheet.ownerNode.removeChild(ruleNode);
+ vSheet._qxRules[vSelector] = null;
+ } else {
+ warn();
+ }
+ }
+}
+else
+{
+ qx.dom.StyleSheet.removeRule = function(vSheet, vSelector)
+ {
+ var vRules = vSheet.cssRules;
+ var vLength = vRules.length;
+
+ for (var i=vLength-1; i>=0; i--)
+ {
+ if (vRules[i].selectorText == vSelector) {
+ vSheet.deleteRule(i);
+ }
+ }
+ }
+}
+
+
+/**
+ * remove all CSS rules from a stylesheet
+ *
+ * @param vSheet {Object}
+ */
+qx.dom.StyleSheet.removeAllRules = function(vSheet) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.removeAllRules = function(vSheet)
+ {
+ var vRules = vSheet.rules;
+ var vLength = vRules.length;
+
+ for (var i=vLength-1; i>=0; i--) {
+ vSheet.removeRule(i);
+ }
+ }
+}
+else if (qx.sys.Client.getInstance().isSafari2()) // removeRule in Safari 2 doesn't work
+{
+ qx.dom.StyleSheet.removeAllRules = function(vSheet)
+ {
+ var node = vSheet.ownerNode;
+ var rules = node.childNodes;
+ while (rules.length > 0) {
+ node.removeChild(rules[0]);
+ }
+ }
+}
+else // FF, etc
+{
+ qx.dom.StyleSheet.removeAllRules = function(vSheet)
+ {
+ var vRules = vSheet.cssRules;
+ var vLength = vRules.length;
+
+ for (var i=vLength-1; i>=0; i--) {
+ vSheet.deleteRule(i);
+ }
+ }
+}
+
+
+
+// TODO import functions are not working crossbrowser (Safari) !!
+// see CSS_1.html test
+
+/**
+ * add an import of an external CSS file to a stylesheet
+ * @param vSheet {Object}
+ * @param vUrl {string}
+ */
+qx.dom.StyleSheet.addImport = function(vSheet, vUrl) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.addImport = function(vSheet, vUrl) {
+ vSheet.addImport(vUrl);
+ }
+}
+else if (qx.sys.Client.getInstance().isSafari2()) // insertRule in Safari 2 doesn't work
+{
+ qx.dom.StyleSheet.addImport = function(vSheet, vUrl) {
+ vSheet.ownerNode.appendChild(document.createTextNode('@import "' + vUrl + '";'));
+ }
+}
+else // FF, etc
+{
+ qx.dom.StyleSheet.addImport = function(vSheet, vUrl) {
+ vSheet.insertRule('@import "' + vUrl + '";', vSheet.cssRules.length);
+ }
+}
+
+
+/**
+ * removes an import from a stylesheet
+ *
+ * @param vSheet {Object}
+ * @param vUrl {string} URL of the importet CSS file
+ */
+qx.dom.StyleSheet.removeImport = function(vSheet, vUrl) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.removeImport = function(vSheet, vUrl) {
+ var vImports = vSheet.imports;
+ var vLength = vImports.length;
+
+ for (var i=vLength-1; i>=0; i--) {
+ if (vImports[i].href == vUrl) {
+ vSheet.removeImport(i);
+ }
+ }
+ }
+}
+else // FF, etc
+{
+ qx.dom.StyleSheet.removeImport = function(vSheet, vUrl) {
+ var vRules = vSheet.cssRules;
+ var vLength = vRules.length;
+
+ for (var i=vLength-1; i>=0; i--) {
+ if (vRules[i].href == vUrl) {
+ vSheet.deleteRule(i);
+ }
+ }
+ }
+}
+
+
+/**
+ * remove all imports from a stylesheet
+ *
+ * @param vSheet {Object}
+ */
+qx.dom.StyleSheet.removeAllImports = function(vSheet) {};
+if (document.createStyleSheet) // IE 4+
+{
+ qx.dom.StyleSheet.removeAllImports = function(vSheet) {
+ var vImports = vSheet.imports;
+ var vLength = vImports.length;
+
+ for (var i=vLength-1; i>=0; i--) {
+ vSheet.removeImport(i);
+ }
+ }
+}
+else // FF, etc
+{
+ qx.dom.StyleSheet.removeAllImports = function(vSheet) {
+ var vRules = vSheet.cssRules;
+ var vLength = vRules.length;
+
+ for (var i=vLength-1; i>=0; i--) {
+ if (vRules[i].type == vRules[i].IMPORT_RULE) {
+ vSheet.deleteRule(i);
+ }
+ }
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Window.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Window.js
new file mode 100644
index 0000000000..21f94d1171
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/dom/Window.js
@@ -0,0 +1,102 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.dom.Window");
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.dom.Window.getInnerWidth = function(w)
+ {
+ if (w.document.documentElement && w.document.documentElement.clientWidth)
+ {
+ return w.document.documentElement.clientWidth;
+ }
+ else if (w.document.body)
+ {
+ return w.document.body.clientWidth;
+ }
+
+ return 0;
+ }
+
+ qx.dom.Window.getInnerHeight = function(w)
+ {
+ if (w.document.documentElement && w.document.documentElement.clientHeight)
+ {
+ return w.document.documentElement.clientHeight;
+ }
+ else if (w.document.body)
+ {
+ return w.document.body.clientHeight;
+ }
+
+ return 0;
+ }
+
+ qx.dom.Window.getScrollLeft = function(w)
+ {
+ if (w.document.documentElement && w.document.documentElement.scrollLeft)
+ {
+ return w.document.documentElement.scrollLeft;
+ }
+ else if (w.document.body)
+ {
+ return w.document.body.scrollTop;
+ }
+
+ return 0;
+ }
+
+ qx.dom.Window.getScrollTop = function(w)
+ {
+ if (w.document.documentElement && w.document.documentElement.scrollTop)
+ {
+ return w.document.documentElement.scrollTop;
+ }
+ else if (w.document.body)
+ {
+ return w.document.body.scrollTop;
+ }
+
+ return 0;
+ }
+}
+else
+{
+ qx.dom.Window.getInnerWidth = function(w) {
+ return w.innerWidth;
+ }
+
+ qx.dom.Window.getInnerHeight = function(w) {
+ return w.innerHeight;
+ }
+
+ qx.dom.Window.getScrollLeft = function(w) {
+ return w.document.body.scrollLeft;
+ }
+
+ qx.dom.Window.getScrollTop = function(w) {
+ return w.document.body.scrollTop;
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/DragAndDropHandler.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/DragAndDropHandler.js
new file mode 100644
index 0000000000..d1f5ba4c22
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/DragAndDropHandler.js
@@ -0,0 +1,846 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_dragdrop)
+
+************************************************************************ */
+
+/**
+ * This manager (singleton) manage all drag and drop handling of a qx.core.Init instance.
+ *
+ * @event dragdrop {qx.event.type.DragEvent}
+ * @event dragout {qx.event.type.DragEvent}
+ * @event dragover {qx.event.type.DragEvent}
+ * @event dragmove {qx.event.type.DragEvent}
+ * @event dragstart {qx.event.type.DragEvent}
+ * @event dragend {qx.event.type.DragEvent}
+ */
+qx.OO.defineClass("qx.event.handler.DragAndDropHandler", qx.manager.object.ObjectManager,
+function()
+{
+ qx.core.Target.call(this);
+
+ this._data = {};
+ this._actions = {};
+ this._cursors = {};
+
+ var vCursor;
+ for (var vAction in this._actionNames)
+ {
+ vCursor = this._cursors[vAction] = new qx.ui.basic.Image(this._cursorPath + vAction + "." + this._cursorFormat);
+ vCursor.setZIndex(1e8);
+ }
+});
+
+qx.OO.addProperty({ name : "sourceWidget", type : "object" });
+qx.OO.addProperty({ name : "destinationWidget", type : "object" });
+qx.OO.addProperty({ name : "cursor", type : "object" });
+qx.OO.addProperty({ name : "currentAction", type : "string" });
+
+qx.Proto._actionNames =
+{
+ move : "move",
+ copy : "copy",
+ alias : "alias",
+ nodrop : "nodrop"
+}
+
+qx.Proto._cursorPath = "widget/cursors/";
+qx.Proto._cursorFormat = "gif";
+qx.Proto._lastDestinationEvent = null;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMMON MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyDestinationWidget = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ propValue.dispatchEvent(new qx.event.type.DragEvent("dragdrop", this._lastDestinationEvent, propValue, this.getSourceWidget()));
+ this._lastDestinationEvent = null;
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA HANDLING
+---------------------------------------------------------------------------
+*/
+
+/*!
+Add data of mimetype.
+
+#param vMimeType[String]: A valid mimetype
+#param vData[Any]: Any value for the mimetype
+*/
+qx.Proto.addData = function(vMimeType, vData) {
+ this._data[vMimeType] = vData;
+}
+
+qx.Proto.getData = function(vMimeType) {
+ return this._data[vMimeType];
+}
+
+qx.Proto.clearData = function() {
+ this._data = {};
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MIME TYPE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getDropDataTypes = function()
+{
+ var vDestination = this.getDestinationWidget();
+ var vDropTypes = [];
+
+ // If there is not any destination, simple return
+ if (!vDestination) {
+ return vDropTypes;
+ }
+
+ // Search for matching mimetypes
+ var vDropDataTypes = vDestination.getDropDataTypes();
+
+ for (var i=0, l=vDropDataTypes.length; i<l; i++) {
+ if (vDropDataTypes[i] in this._data) {
+ vDropTypes.push(vDropDataTypes[i]);
+ }
+ }
+
+ return vDropTypes;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ START DRAG
+---------------------------------------------------------------------------
+*/
+
+/*!
+This needed be called from any "dragstart" event to really start drag session.
+*/
+qx.Proto.startDrag = function()
+{
+ if (!this._dragCache) {
+ throw new Error("Invalid usage of startDrag. Missing dragInfo!");
+ }
+
+ // Update status flag
+ this._dragCache.dragHandlerActive = true;
+
+ // Internal storage of source widget
+ this.setSourceWidget(this._dragCache.sourceWidget);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FIRE IMPLEMENTATION FOR USER EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._fireUserEvents = function(fromWidget, toWidget, e)
+{
+ if (fromWidget && fromWidget != toWidget && fromWidget.hasEventListeners("dragout")) {
+ fromWidget.dispatchEvent(new qx.event.type.DragEvent("dragout", e, fromWidget, toWidget), true);
+ }
+
+ if (toWidget)
+ {
+ if (fromWidget != toWidget && toWidget.hasEventListeners("dragover")) {
+ toWidget.dispatchEvent(new qx.event.type.DragEvent("dragover", e, toWidget, fromWidget), true);
+ }
+
+ if (toWidget.hasEventListeners("dragmove")) {
+ toWidget.dispatchEvent(new qx.event.type.DragEvent("dragmove", e, toWidget, null), true);
+ }
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HANDLER FOR MOUSE EVENTS
+---------------------------------------------------------------------------
+*/
+
+/*!
+This wraps the mouse events to custom handlers.
+*/
+qx.Proto.handleMouseEvent = function(e)
+{
+ switch (e.getType())
+ {
+ case "mousedown":
+ return this._handleMouseDown(e);
+
+ case "mouseup":
+ return this._handleMouseUp(e);
+
+ case "mousemove":
+ return this._handleMouseMove(e);
+ }
+}
+
+/*!
+This starts the core drag and drop session.
+
+To really get drag and drop working you need to define
+a function which you attach to "dragstart"-event, which
+invokes at least this.startDrag()
+*/
+qx.Proto._handleMouseDown = function(e)
+{
+ if (e.getDefaultPrevented()) {
+ return;
+ }
+
+ // Store initial dragCache
+ this._dragCache =
+ {
+ startScreenX : e.getScreenX(),
+ startScreenY : e.getScreenY(),
+
+ pageX : e.getPageX(),
+ pageY : e.getPageY(),
+
+ sourceWidget : e.getTarget(),
+ sourceTopLevel : e.getTarget().getTopLevelWidget(),
+
+ dragHandlerActive : false,
+ hasFiredDragStart : false
+ }
+}
+
+
+/*!
+Handler for mouse move events
+*/
+
+qx.Proto._handleMouseMove = function(e)
+{
+ // Return if dragCache was not filled before
+ if (!this._dragCache) {
+ return;
+ }
+
+ /*
+ Default handling if drag handler is activated
+ */
+
+ if (this._dragCache.dragHandlerActive)
+ {
+ // Update page coordinates
+ this._dragCache.pageX = e.getPageX();
+ this._dragCache.pageY = e.getPageY();
+
+ // Get current target
+ var currentDropTarget = this.getDropTarget(e);
+
+ // Update action
+ this.setCurrentAction(currentDropTarget ? this._evalNewAction(e.getShiftKey(), e.getCtrlKey(), e.getAltKey()) : null);
+
+ // Fire user events
+ this._fireUserEvents(this._dragCache.currentDropWidget, currentDropTarget, e);
+
+ // Store current widget
+ this._dragCache.currentDropWidget = currentDropTarget;
+
+ // Update cursor icon
+ this._renderCursor();
+ }
+
+ /*
+ Initial activation and fire of dragstart
+ */
+ else if (!this._dragCache.hasFiredDragStart)
+ {
+ if (Math.abs(e.getScreenX() - this._dragCache.startScreenX) > 5 || Math.abs(e.getScreenY() - this._dragCache.startScreenY) > 5)
+ {
+ // Fire dragstart event to finally allow the above if to handle next events
+ this._dragCache.sourceWidget.dispatchEvent(new qx.event.type.DragEvent("dragstart", e, this._dragCache.sourceWidget), true);
+
+ // Update status flag
+ this._dragCache.hasFiredDragStart = true;
+
+ // Look if handler become active
+ if (this._dragCache.dragHandlerActive)
+ {
+ // Fire first user events
+ this._fireUserEvents(this._dragCache.currentDropWidget, this._dragCache.sourceWidget, e);
+
+ // Update status flags
+ this._dragCache.currentDropWidget = this._dragCache.sourceWidget;
+
+ // Activate capture for clientDocument
+ qx.ui.core.ClientDocument.getInstance().setCapture(true);
+ }
+ }
+ }
+}
+
+/*!
+Handle mouse up event. Normally this finalize the drag and drop event.
+*/
+qx.Proto._handleMouseUp = function(e)
+{
+ // Return if dragCache was not filled before
+ if (!this._dragCache) {
+ return;
+ }
+
+ if (this._dragCache.dragHandlerActive)
+ {
+ this._endDrag(this.getDropTarget(e), e);
+ }
+ else
+ {
+ // Clear drag cache
+ this._dragCache = null;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HANDLER FOR KEY EVENTS
+---------------------------------------------------------------------------
+*/
+
+/*!
+This wraps the key events to custom handlers.
+*/
+qx.Proto.handleKeyEvent = function(e)
+{
+ if (!this._dragCache) {
+ return;
+ }
+
+ switch (e.getType())
+ {
+ case "keydown":
+ this._handleKeyDown(e);
+ return;
+
+ case "keyup":
+ this._handleKeyUp(e);
+ return;
+ }
+}
+
+qx.Proto._handleKeyDown = function(e)
+{
+ // Stop Drag on Escape
+ if (e.getKeyIdentifier() == "Escape")
+ {
+ this.cancelDrag(e);
+ }
+
+ // Update cursor and action on press of modifier keys
+ else if (this.getCurrentAction() != null)
+ {
+ // TODO this doesn't work in WebKit because WebKit doesn't fire keyevents for modifier keys
+ switch(e.getKeyIdentifier())
+ {
+ case "Shift":
+ case "Control":
+ case "Alt":
+ this.setAction(this._evalNewAction(e.getShiftKey(), e.getCtrlKey(), e.getAltKey()));
+ this._renderCursor();
+
+ e.preventDefault();
+ }
+ }
+}
+
+qx.Proto._handleKeyUp = function(e)
+{
+ // TODO this doesn't work in WebKit because WebKit doesn't fire keyevents for modifier keys
+ var bShiftPressed = e.getKeyIdentifier() == "Shift";
+ var bCtrlPressed = e.getKeyIdentifier() == "Control";
+ var bAltPressed = e.getKeyIdentifier() == "Alt";
+
+ if (bShiftPressed || bCtrlPressed || bAltPressed)
+ {
+ if (this.getCurrentAction() != null)
+ {
+ this.setAction(this._evalNewAction(!bShiftPressed && e.getShiftKey(), ! bCtrlPressed && e.getCtrlKey(), !bAltPressed && e.getAltKey()));
+ this._renderCursor();
+
+ e.preventDefault();
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ IMPLEMENTATION OF DRAG&DROP SESSION FINALISATION
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Cancel current drag and drop session
+*/
+qx.Proto.cancelDrag = function(e) {
+ this._endDrag(null, e);
+}
+
+qx.Proto.globalCancelDrag = function()
+{
+ if (this._dragCache && this._dragCache.dragHandlerActive) {
+ this._endDragCore();
+ }
+}
+
+/*!
+ This will be called to the end of each drag and drop session
+*/
+qx.Proto._endDrag = function(currentDestinationWidget, e)
+{
+ // Use given destination widget
+ if (currentDestinationWidget)
+ {
+ this._lastDestinationEvent = e;
+ this.setDestinationWidget(currentDestinationWidget);
+ }
+
+ // Dispatch dragend event
+ this.getSourceWidget().dispatchEvent(new qx.event.type.DragEvent("dragend", e, this.getSourceWidget(), currentDestinationWidget), true);
+
+ // Fire dragout event
+ this._fireUserEvents(this._dragCache && this._dragCache.currentDropWidget, null, e);
+
+ // Call helper
+ this._endDragCore();
+}
+
+qx.Proto._endDragCore = function()
+{
+ // Remove cursor
+ var oldCursor = this.getCursor();
+ if (oldCursor)
+ {
+ oldCursor._style.display = "none";
+ this.forceCursor(null);
+ }
+
+ // Reset drag cache for next drag and drop session
+ if (this._dragCache)
+ {
+ this._dragCache.currentDropWidget = null;
+ this._dragCache = null;
+ }
+
+ // Deactivate capture for clientDocument
+ qx.ui.core.ClientDocument.getInstance().setCapture(false);
+
+ // Cleanup data and actions
+ this.clearData();
+ this.clearActions();
+
+ // Cleanup widgets
+ this.setSourceWidget(null);
+ this.setDestinationWidget(null);
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ IMPLEMENTATION OF CURSOR UPDATES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Select and setup the current used cursor
+*/
+qx.Proto._renderCursor = function()
+{
+ var vNewCursor;
+ var vOldCursor = this.getCursor();
+
+ switch(this.getCurrentAction())
+ {
+ case this._actionNames.move:
+ vNewCursor = this._cursors.move;
+ break;
+
+ case this._actionNames.copy:
+ vNewCursor = this._cursors.copy;
+ break;
+
+ case this._actionNames.alias:
+ vNewCursor = this._cursors.alias;
+ break;
+
+ default:
+ vNewCursor = this._cursors.nodrop;
+ }
+
+ // Hide old cursor
+ if (vNewCursor != vOldCursor && vOldCursor != null) {
+ vOldCursor._style.display = "none";
+ }
+
+ // Ensure that the cursor is created
+ if (!vNewCursor._initialLayoutDone)
+ {
+ qx.ui.core.ClientDocument.getInstance().add(vNewCursor);
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+
+ // Apply position with runtime style (fastest qooxdoo method)
+ vNewCursor._applyRuntimeLeft(this._dragCache.pageX + 5);
+ vNewCursor._applyRuntimeTop(this._dragCache.pageY + 15);
+
+ // Finally show new cursor
+ if (vNewCursor != vOldCursor) {
+ vNewCursor._style.display = "";
+ }
+
+ // Store new cursor
+ this.forceCursor(vNewCursor);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ IMPLEMENTATION OF DROP TARGET VALIDATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.supportsDrop = function(vWidget)
+{
+ var vTypes = vWidget.getDropDataTypes();
+
+ if (!vTypes) {
+ return false;
+ }
+
+ for (var i=0; i<vTypes.length; i++)
+ {
+ if (vTypes[i] in this._data) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+/*!
+#param e[qx.event.type.MouseEvent]: Current MouseEvent for dragdrop action
+*/
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto.getDropTarget = function(e)
+ {
+ var vCurrent = e.getTarget();
+
+ // work around gecko bug (all other browsers are correct)
+ // clicking on a free space and drag prohibit the get of
+ // a valid event target. The target is always the element
+ // which was the one with the mousedown event before.
+ if (vCurrent == this._dragCache.sourceWidget)
+ {
+ // vCurrent = qx.event.handler.EventHandler.getTargetObject(qx.dom.ElementFromPoint.getElementFromPoint(e.getPageX(), e.getPageY()));
+
+ // this is around 8-12 times faster as the above method
+ vCurrent = this._dragCache.sourceTopLevel.getWidgetFromPoint(e.getPageX(), e.getPageY());
+ }
+ else
+ {
+ vCurrent = qx.event.handler.EventHandler.getTargetObject(null, vCurrent);
+ }
+
+ while (vCurrent != null && vCurrent != this._dragCache.sourceWidget)
+ {
+ if (!vCurrent.supportsDrop(this._dragCache)) {
+ return null;
+ }
+
+ if (this.supportsDrop(vCurrent)) {
+ return vCurrent;
+ }
+
+ vCurrent = vCurrent.getParent();
+ }
+
+ return null;
+ }
+}
+else
+{
+ qx.Proto.getDropTarget = function(e)
+ {
+ var vCurrent = e.getTarget();
+
+ while (vCurrent != null)
+ {
+ if (!vCurrent.supportsDrop(this._dragCache)) {
+ return null;
+ }
+
+ if (this.supportsDrop(vCurrent)) {
+ return vCurrent;
+ }
+
+ vCurrent = vCurrent.getParent();
+ }
+
+ return null;
+ }
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ACTION HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addAction = function(vAction, vForce)
+{
+ this._actions[vAction] = true;
+
+ // Defaults to first added action
+ if (vForce || this.getCurrentAction() == null) {
+ this.setCurrentAction(vAction);
+ }
+}
+
+qx.Proto.clearActions = function()
+{
+ this._actions = {};
+ this.setCurrentAction(null);
+}
+
+qx.Proto.removeAction = function(vAction)
+{
+ delete this._actions[vAction];
+
+ // Reset current action on remove
+ if (this.getCurrentAction() == vAction) {
+ this.setCurrentAction(null);
+ }
+}
+
+qx.Proto.setAction = function(vAction)
+{
+ if (vAction != null && !(vAction in this._actions)) {
+ this.addAction(vAction, true);
+ }
+ else
+ {
+ this.setCurrentAction(vAction);
+ }
+}
+
+qx.Proto._evalNewAction = function(vKeyShift, vKeyCtrl, vKeyAlt)
+{
+ if (vKeyShift && vKeyCtrl && this._actionNames.alias in this._actions)
+ {
+ return this._actionNames.alias;
+ }
+ else if (vKeyShift && vKeyAlt && this._actionNames.copy in this._actions)
+ {
+ return this._actionNames.copy;
+ }
+ else if (vKeyShift && this._actionNames.move in this._actions)
+ {
+ return this._actionNames.move;
+ }
+ else if (vKeyAlt && this._actionNames.alias in this._actions)
+ {
+ return this._actionNames.alias;
+ }
+ else if (vKeyCtrl && this._actionNames.copy in this._actions)
+ {
+ return this._actionNames.copy;
+ }
+ else
+ {
+ // Return the first action found
+ for (var vAction in this._actions) {
+ return vAction;
+ }
+ }
+
+ return null;
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Reset drag cache for next drag and drop session
+ if (this._dragCache)
+ {
+ this._dragCache.currentDropWidget = null;
+ this._dragCache = null;
+ }
+
+ // Cleanup data and actions
+ this._data = null;
+ this._actions = null;
+ this._actionNames = null;
+
+ this._lastDestinationEvent = null;
+
+ if (this._cursors)
+ {
+ if (this._cursors.move)
+ {
+ this._cursors.move.dispose();
+ delete this._cursors.move;
+ }
+
+ if (this._cursors.copy)
+ {
+ this._cursors.copy.dispose();
+ delete this._cursors.copy;
+ }
+
+ if (this._cursors.alias)
+ {
+ this._cursors.alias.dispose();
+ delete this._cursors.alias;
+ }
+
+ if (this._cursors.nodrop)
+ {
+ this._cursors.nodrop.dispose();
+ delete this._cursors.nodrop;
+ }
+
+ this._cursors = null;
+ }
+
+ return qx.manager.object.ObjectManager.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/EventHandler.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/EventHandler.js
new file mode 100644
index 0000000000..311f731f82
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/EventHandler.js
@@ -0,0 +1,1172 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.event.type.KeyEvent)
+#require(qx.event.handler.KeyEventHandler)
+#optional(qx.event.handler.DragAndDropHandler)
+#optional(qx.manager.object.MenuManager)
+#optional(qx.event.handler.FocusHandler)
+#optional(qx.manager.object.PopupManager)
+#optional(qx.manager.object.ToolTipManager)
+
+************************************************************************ */
+
+/*!
+ This manager registers and manage all incoming key and mouse events.
+*/
+qx.OO.defineClass("qx.event.handler.EventHandler", qx.core.Target,
+function()
+{
+ qx.core.Target.call(this);
+
+ // Object Wrapper to Events (Needed for DOM-Events)
+ var o = this;
+
+ // User Events
+ this.__onmouseevent = function(e) { return o._onmouseevent(e); };
+ this.__ondragevent = function(e) { return o._ondragevent(e); };
+ this.__onselectevent = function(e) { return o._onselectevent(e); };
+
+ // Window Events
+ this.__onwindowblur = function(e) { return o._onwindowblur(e); };
+ this.__onwindowfocus = function(e) { return o._onwindowfocus(e); };
+ this.__onwindowresize = function(e) { return o._onwindowresize(e); };
+
+ // Init Command Interface
+ this._commands = {};
+});
+
+
+
+
+
+
+qx.OO.addProperty({ name : "allowClientContextMenu", type : "boolean", defaultValue : false });
+qx.OO.addProperty({ name : "allowClientSelectAll", type : "boolean", defaultValue : false });
+
+qx.OO.addProperty({ name : "captureWidget", type : "object", instance : "qx.ui.core.Widget", allowNull : true });
+qx.OO.addProperty({ name : "focusRoot", type : "object", instance : "qx.ui.core.Parent", allowNull : true });
+
+
+
+
+
+
+qx.Class.mouseEventTypes = [ "mouseover", "mousemove", "mouseout", "mousedown", "mouseup", "click", "dblclick", "contextmenu", qx.sys.Client.getInstance().isMshtml() ? "mousewheel" : "DOMMouseScroll" ];
+qx.Class.keyEventTypes = [ "keydown", "keypress", "keyup" ];
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Class.dragEventTypes = [ "dragdrop", "dragover", "dragenter", "dragexit", "draggesture" ];
+}
+else if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Class.dragEventTypes = [ "dragend", "dragover", "dragstart", "drag", "dragenter", "dragleave" ];
+}
+else
+{
+ qx.Class.dragEventTypes = [ "dragstart", "dragdrop", "dragover", "drag", "dragleave", "dragenter", "dragexit", "draggesture" ];
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE FLAGS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._lastMouseEventType = null;
+qx.Proto._lastMouseDown = false;
+qx.Proto._lastMouseEventDate = 0;
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyCaptureWidget = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.setCapture(false);
+ }
+
+ if (propValue) {
+ propValue.setCapture(true);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyFocusRoot = function(propValue, propOldValue, propData)
+{
+ // this.debug("FocusRoot: " + propValue + "(from:" + propOldValue + ")");
+
+ if (propOldValue) {
+ propOldValue.setFocusedChild(null);
+ }
+
+ if (propValue)
+ {
+ if (propValue.getFocusedChild() == null) {
+ propValue.setFocusedChild(propValue);
+ }
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMMAND INTERFACE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addCommand = function(vCommand) {
+ this._commands[vCommand.toHashCode()] = vCommand;
+}
+
+qx.Proto.removeCommand = function(vCommand) {
+ delete this._commands[vCommand.toHashCode()];
+}
+
+qx.Proto._checkKeyEventMatch = function(e)
+{
+ var vCommand;
+
+ for (var vHash in this._commands)
+ {
+ vCommand = this._commands[vHash];
+
+ if (vCommand.getEnabled() && vCommand._matchesKeyEvent(e))
+ {
+ // allow the user to stop the event
+ // through the execute event.
+ if (!vCommand.execute()) {
+ e.preventDefault();
+ }
+
+ break;
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-MAPPING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.attachEvents = function()
+{
+ // Register dom events
+ this.attachEventTypes(qx.event.handler.EventHandler.mouseEventTypes, this.__onmouseevent);
+ this.attachEventTypes(qx.event.handler.EventHandler.dragEventTypes, this.__ondragevent);
+
+ // Unregister separate handler events
+ qx.event.handler.KeyEventHandler.getInstance()._attachEvents();
+
+ // Register window events
+ qx.dom.EventRegistration.addEventListener(window, "blur", this.__onwindowblur);
+ qx.dom.EventRegistration.addEventListener(window, "focus", this.__onwindowfocus);
+ qx.dom.EventRegistration.addEventListener(window, "resize", this.__onwindowresize);
+
+ // Register selection events
+ document.body.onselect = document.onselectstart = document.onselectionchange = this.__onselectevent;
+}
+
+qx.Proto.detachEvents = function()
+{
+ // Unregister dom events
+ this.detachEventTypes(qx.event.handler.EventHandler.mouseEventTypes, this.__onmouseevent);
+ this.detachEventTypes(qx.event.handler.EventHandler.dragEventTypes, this.__ondragevent);
+
+ // Unregister separate handler events
+ qx.event.handler.KeyEventHandler.getInstance()._detachEvents();
+
+ // Unregister window events
+ qx.dom.EventRegistration.removeEventListener(window, "blur", this.__onwindowblur);
+ qx.dom.EventRegistration.removeEventListener(window, "focus", this.__onwindowfocus);
+ qx.dom.EventRegistration.removeEventListener(window, "resize", this.__onwindowresize);
+
+ // Unregister selection events
+ document.body.onselect = document.onselectstart = document.onselectionchange = null;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-MAPPING HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.attachEventTypes = function(vEventTypes, vFunctionPointer)
+{
+ try
+ {
+ // Gecko is a bit buggy to handle key events on document if not previously focused
+ // I think they will fix this sometimes, and we should add a version check here.
+ // Internet Explorer has problems to use 'window', so there we use the 'body' element
+ // as previously.
+ var el = qx.sys.Client.getInstance().isGecko() ? window : document.body;
+
+ for (var i=0, l=vEventTypes.length; i<l; i++) {
+ qx.dom.EventRegistration.addEventListener(el, vEventTypes[i], vFunctionPointer);
+ }
+ }
+ catch(ex)
+ {
+ throw new Error("qx.event.handler.EventHandler: Failed to attach window event types: " + vEventTypes + ": " + ex);
+ }
+}
+
+qx.Proto.detachEventTypes = function(vEventTypes, vFunctionPointer)
+{
+ try
+ {
+ var el = qx.sys.Client.getInstance().isGecko() ? window : document.body;
+
+ for (var i=0, l=vEventTypes.length; i<l; i++) {
+ qx.dom.EventRegistration.removeEventListener(el, vEventTypes[i], vFunctionPointer);
+ }
+ }
+ catch(ex)
+ {
+ throw new Error("qx.event.handler.EventHandler: Failed to detach window event types: " + vEventTypes + ": " + ex);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HELPER METHODS
+---------------------------------------------------------------------------
+*/
+
+// BUG: http://xscroll.mozdev.org/
+// If your Mozilla was built with an option `--enable-default-toolkit=gtk2',
+// it can not return the correct event target for DOMMouseScroll.
+
+qx.Class.getOriginalTargetObject = function(vNode)
+{
+ // Events on the HTML element, when using absolute locations which
+ // are outside the HTML element. Opera does not seem to fire events
+ // on the HTML element.
+ if (vNode == document.documentElement) {
+ vNode = document.body;
+ }
+
+ // Walk up the tree and search for an qx.ui.core.Widget
+ while(vNode != null && vNode.qx_Widget == null)
+ {
+ try {
+ vNode = vNode.parentNode;
+ }
+ catch(vDomEvent)
+ {
+ vNode = null;
+ }
+ }
+
+ return vNode ? vNode.qx_Widget : null;
+}
+
+if (qx.sys.Client.getInstance().isWebkit())
+{
+ /**
+ * extract the target node from a DOM event
+ * http://www.quirksmode.org/js/events_properties.html
+ *
+ * @param vDomEvent {Event}
+ * @return {Element} the target node
+ */
+ qx.Class.getDomTarget = function(vDomEvent)
+ {
+ var vNode = vDomEvent.target || vDomEvent.srcElement;
+
+ // Safari takes text nodes as targets for events
+ if (vNode && (vNode.nodeType == qx.dom.Node.TEXT)) {
+ vNode = vNode.parentNode;
+ }
+
+ return vNode;
+ };
+}
+else if (qx.sys.Client.getInstance().isMshtml())
+{
+ /**
+ * extract the target node from a DOM event
+ * http://www.quirksmode.org/js/events_properties.html
+ *
+ * @param vDomEvent {Event}
+ * @return {Element} the target node
+ */
+ qx.Class.getDomTarget = function(vDomEvent) {
+ return vDomEvent.target || vDomEvent.srcElement;
+ };
+}
+else
+{
+ /**
+ * extract the target node from a DOM event
+ * http://www.quirksmode.org/js/events_properties.html
+ *
+ * @param vDomEvent {Event}
+ * @return {Element} the target node
+ */
+ qx.Class.getDomTarget = function(vDomEvent) {
+ return vDomEvent.target;
+ };
+}
+
+
+qx.Class.getOriginalTargetObjectFromEvent = function(vDomEvent, vWindow)
+{
+ var vNode = qx.event.handler.EventHandler.getDomTarget(vDomEvent);
+
+ // Especially to fix key events.
+ // 'vWindow' is the window reference then
+ if (vWindow)
+ {
+ var vDocument = vWindow.document;
+
+ if (vNode == vWindow || vNode == vDocument || vNode == vDocument.documentElement || vNode == vDocument.body) {
+ return vDocument.body.qx_Widget;
+ }
+ }
+
+ return qx.event.handler.EventHandler.getOriginalTargetObject(vNode);
+}
+
+qx.Class.getRelatedOriginalTargetObjectFromEvent = function(vDomEvent) {
+ return qx.event.handler.EventHandler.getOriginalTargetObject(vDomEvent.relatedTarget || (vDomEvent.type == "mouseover" ? vDomEvent.fromElement : vDomEvent.toElement));
+}
+
+
+
+
+
+
+
+qx.Class.getTargetObject = function(vNode, vObject)
+{
+ if (!vObject)
+ {
+ var vObject = qx.event.handler.EventHandler.getOriginalTargetObject(vNode);
+
+ if (!vObject) {
+ return null;
+ }
+ }
+
+ // Search parent tree
+ while(vObject)
+ {
+ // Break if current object is disabled -
+ // event should be ignored then.
+ if (!vObject.getEnabled()) {
+ return null;
+ }
+
+ // If object is anonymous, search for
+ // first parent which is not anonymous
+ // and not disabled
+ if (!vObject.getAnonymous()) {
+ break;
+ }
+
+ vObject = vObject.getParent();
+ }
+
+ return vObject;
+};
+
+
+qx.Class.getTargetObjectFromEvent = function(vDomEvent) {
+ return qx.event.handler.EventHandler.getTargetObject(qx.event.handler.EventHandler.getDomTarget(vDomEvent));
+};
+
+
+qx.Class.getRelatedTargetObjectFromEvent = function(vDomEvent) {
+ var target = vDomEvent.relatedTarget;
+ if (!target) {
+ if (vDomEvent.type == "mouseover") {
+ target = vDomEvent.fromElement
+ } else {
+ target = vDomEvent.toElement
+ }
+ }
+ return qx.event.handler.EventHandler.getTargetObject(target);
+};
+
+
+/**
+ * stops further propagation of the event
+ *
+ * @param vDomEvent (Element) DOM event object
+ */
+qx.Class.stopDomEvent = function(vDomEvent) {};
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Class.stopDomEvent = function(vDomEvent) {
+ vDomEvent.returnValue = false;
+ }
+}
+else
+{
+ qx.Class.stopDomEvent = function(vDomEvent)
+ {
+ vDomEvent.preventDefault();
+ vDomEvent.returnValue = false;
+ }
+};
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeyevent_post = function(vDomEvent, vType, vKeyCode, vCharCode, vKeyIdentifier)
+{
+ var vDomTarget = qx.event.handler.EventHandler.getDomTarget(vDomEvent);
+
+
+ // Find current active qooxdoo object
+ var vFocusRoot = this.getFocusRoot();
+ var vTarget = this.getCaptureWidget() || (vFocusRoot == null ? null : vFocusRoot.getActiveChild());
+
+ if (vTarget == null || !vTarget.getEnabled()) {
+ return false;
+ }
+
+ var vDomEventTarget = vTarget.getElement();
+
+
+
+
+ // Hide Menus
+ switch(vKeyIdentifier)
+ {
+ case "Escape":
+ case "Tab":
+ if (qx.OO.isAvailable("qx.manager.object.MenuManager")) {
+ qx.manager.object.MenuManager.getInstance().update(vTarget, vType);
+ }
+
+ break;
+ }
+
+
+
+
+ // TODO: Move this to KeyEvent?
+
+ // Prohibit CTRL+A
+ if (!this.getAllowClientSelectAll())
+ {
+ if (vDomEvent.ctrlKey && vKeyIdentifier == "A")
+ {
+ switch(vDomTarget.tagName.toLowerCase())
+ {
+ case "input":
+ case "textarea":
+ case "iframe":
+ break;
+
+ default:
+ qx.event.handler.EventHandler.stopDomEvent(vDomEvent);
+ }
+ }
+ }
+
+
+
+ // Create Event Object
+ var vKeyEventObject = new qx.event.type.KeyEvent(vType, vDomEvent, vDomTarget, vTarget, null, vKeyCode, vCharCode, vKeyIdentifier);
+
+ // Check for commands
+ if (vDomEvent.type == "keydown") {
+ this._checkKeyEventMatch(vKeyEventObject);
+ }
+
+ // Starting Objects Internal Event Dispatcher
+ // This handles the real event action
+ vTarget.dispatchEvent(vKeyEventObject);
+
+ // Send event to qx.event.handler.DragAndDropHandler
+ if (qx.OO.isAvailable("qx.event.handler.DragAndDropHandler")) {
+ qx.event.handler.DragAndDropHandler.getInstance().handleKeyEvent(vKeyEventObject);
+ }
+
+ // Cleanup Event Object
+ vKeyEventObject.dispose();
+
+ // Flush Queues
+ qx.ui.core.Widget.flushGlobalQueues();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENTS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This one handle all mouse events
+
+ When a user double clicks on a qx.ui.core.Widget the
+ order of the mouse events is the following:
+
+ 1. mousedown
+ 2. mouseup
+ 3. click
+ 4. mousedown
+ 5. mouseup
+ 6. click
+ 7. dblclick
+*/
+
+if(qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._onmouseevent = function(vDomEvent)
+ {
+ qx.core.Init.getInstance().getComponent().preload();
+
+ if(!vDomEvent) {
+ vDomEvent = window.event;
+ }
+
+ var vDomTarget = qx.event.handler.EventHandler.getDomTarget(vDomEvent);
+ var vType = vDomEvent.type;
+
+ if(vType == "mousemove")
+ {
+ if (this._mouseIsDown && vDomEvent.button == 0)
+ {
+ this._onmouseevent_post(vDomEvent, "mouseup");
+ this._mouseIsDown = false;
+ }
+ }
+ else
+ {
+ if(vType == "mousedown")
+ {
+ this._mouseIsDown = true;
+ }
+ else if(vType == "mouseup")
+ {
+ this._mouseIsDown = false;
+ }
+
+ // Fix MSHTML Mouseup, should be after a normal click or contextmenu event, like Mozilla does this
+ if(vType == "mouseup" && !this._lastMouseDown && ((new Date).valueOf() - this._lastMouseEventDate) < 250)
+ {
+ this._onmouseevent_post(vDomEvent, "mousedown");
+ }
+ // Fix MSHTML Doubleclick, should be after a normal click event, like Mozilla does this
+ else if(vType == "dblclick" && this._lastMouseEventType == "mouseup" && ((new Date).valueOf() - this._lastMouseEventDate) < 250)
+ {
+ this._onmouseevent_post(vDomEvent, "click");
+ }
+
+ switch(vType)
+ {
+ case "mousedown":
+ case "mouseup":
+ case "click":
+ case "dblclick":
+ case "contextmenu":
+ this._lastMouseEventType = vType;
+ this._lastMouseEventDate = (new Date).valueOf();
+ this._lastMouseDown = vType == "mousedown";
+ }
+ }
+
+ this._onmouseevent_post(vDomEvent, vType, vDomTarget);
+ }
+}
+else
+{
+ qx.Proto._onmouseevent = function(vDomEvent)
+ {
+ qx.core.Init.getInstance().getComponent().preload();
+
+ var vDomTarget = qx.event.handler.EventHandler.getDomTarget(vDomEvent);
+ var vType = vDomEvent.type;
+
+ switch(vType)
+ {
+ case "DOMMouseScroll":
+ // normalize mousewheel event
+ vType = "mousewheel";
+ break;
+
+ case "click":
+ case "dblclick":
+ // ignore click or dblclick events with other then the left mouse button
+ if (vDomEvent.which !== 1) {
+ return;
+ }
+ }
+
+ this._onmouseevent_post(vDomEvent, vType, vDomTarget);
+ }
+}
+
+/*!
+Fixes browser quirks with 'click' detection
+
+Firefox 1.5.0.6: The DOM-targets are different. The click event only fires, if the target of the
+ mousedown is the same than with the mouseup. If the content moved away, the click isn't fired.
+
+Internet Explorer 6.0: The DOM-targets are identical and the click fires fine.
+
+Opera 9.01: The DOM-targets are different, but the click fires fine. Fires click successfull,
+ even if the content under the cursor was moved away.
+*/
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._onmouseevent_click_fix = function(vDomTarget, vType, vDispatchTarget)
+ {
+ var vReturn = false;
+
+ switch(vType)
+ {
+ case "mousedown":
+ this._lastMouseDownDomTarget = vDomTarget;
+ this._lastMouseDownDispatchTarget = vDispatchTarget;
+ break;
+
+ case "mouseup":
+ // Add additional click event if the dispatch target is the same, but the dom target is different
+ if (this._lastMouseDownDispatchTarget === vDispatchTarget && vDomTarget !== this._lastMouseDownDomTarget)
+ {
+ vReturn = true;
+ }
+ else
+ {
+ this._lastMouseDownDomTarget = null;
+ this._lastMouseDownDispatchTarget = null;
+ }
+ }
+
+ return vReturn;
+ };
+}
+else
+{
+ qx.Proto._onmouseevent_click_fix = function(vDomTarget, vDispatchTarget) {
+ return false;
+ }
+};
+
+/*!
+ This is the crossbrowser post handler for all mouse events.
+*/
+qx.Proto._onmouseevent_post = function(vDomEvent, vType, vDomTarget)
+{
+ try
+ {
+ var vEventObject, vCaptureTarget, vDispatchTarget, vTarget, vOriginalTarget, vRelatedTarget, vFixClick;
+
+
+
+
+
+
+
+ // Check for capturing, if enabled the target is the captured widget.
+ vCaptureTarget = this.getCaptureWidget();
+
+ // Event Target Object
+ vOriginalTarget = qx.event.handler.EventHandler.getOriginalTargetObject(vDomTarget);
+
+ // If capturing isn't active search for a valid target object
+ if (!vCaptureTarget)
+ {
+ // Get Target Object
+ vDispatchTarget = vTarget = qx.event.handler.EventHandler.getTargetObject(null, vOriginalTarget);
+ }
+ else
+ {
+ vDispatchTarget = vCaptureTarget;
+ vTarget = qx.event.handler.EventHandler.getTargetObject(null, vOriginalTarget);
+ }
+
+
+
+ // If there is no target, we have nothing to do
+ if (!vTarget) {
+ return false;
+ }
+
+ // Fix click event
+ vFixClick = this._onmouseevent_click_fix(vDomTarget, vType, vDispatchTarget);
+
+
+
+
+ switch(vType)
+ {
+ case "contextmenu":
+ if (!this.getAllowClientContextMenu()) {
+ qx.event.handler.EventHandler.stopDomEvent(vDomEvent);
+ }
+
+ break;
+
+ case "mousedown":
+ qx.event.handler.FocusHandler.mouseFocus = true;
+
+ var vRoot = vTarget.getFocusRoot();
+
+ if (vRoot)
+ {
+ this.setFocusRoot(vRoot);
+
+ vRoot.setActiveChild(vTarget);
+
+ // Active focus on element (if possible, else search up the parent tree)
+ var vFocusTarget = vTarget;
+ while (!vFocusTarget.isFocusable() && vFocusTarget != vRoot) {
+ vFocusTarget = vFocusTarget.getParent();
+ }
+
+ vRoot.setFocusedChild(vFocusTarget);
+ }
+
+ break;
+ }
+
+
+
+
+ var vDomEventTarget = vTarget.getElement();
+
+
+
+
+ // Find related target object
+ switch(vType)
+ {
+ case "mouseover":
+ case "mouseout":
+ vRelatedTarget = qx.event.handler.EventHandler.getRelatedTargetObjectFromEvent(vDomEvent);
+
+ // Ignore events where the related target and
+ // the real target are equal - from our sight
+ if (vRelatedTarget == vTarget) {
+ return;
+ }
+ }
+
+
+
+ try
+ {
+
+ // Create Mouse Event Object
+ vEventObject = new qx.event.type.MouseEvent(vType, vDomEvent, vDomTarget, vTarget, vOriginalTarget, vRelatedTarget);
+ }
+ catch(ex)
+ {
+ return this.error("Failed to create mouse event", ex);
+ }
+
+
+ // Store last Event in MouseEvent Constructor
+ // Needed for Tooltips, ...
+ qx.event.type.MouseEvent._storeEventState(vEventObject);
+
+
+
+ try
+ {
+ // Dispatch Event through target (eventtarget-)object
+ var vReturnValue = vDispatchTarget ? vDispatchTarget.dispatchEvent(vEventObject) : true;
+ }
+ catch(ex)
+ {
+ return this.error("Failed to dispatch mouse event", ex);
+ }
+
+
+
+
+
+ // Handle Special Post Events
+ switch(vType)
+ {
+ case "mousedown":
+ if (qx.OO.isAvailable("qx.manager.object.PopupManager")) {
+ qx.manager.object.PopupManager.getInstance().update(vTarget);
+ }
+
+ if (qx.OO.isAvailable("qx.manager.object.MenuManager")) {
+ qx.manager.object.MenuManager.getInstance().update(vTarget, vType);
+ }
+
+ if (qx.OO.isAvailable("qx.manager.object.IframeManager")) {
+ qx.manager.object.IframeManager.getInstance().handleMouseDown(vEventObject);
+ }
+
+ break;
+
+ case "mouseup":
+
+ // Mouseup event should always hide, independed of target, so don't send a target
+ if (qx.OO.isAvailable("qx.manager.object.MenuManager")) {
+ qx.manager.object.MenuManager.getInstance().update(vTarget, vType);
+ }
+
+ if (qx.OO.isAvailable("qx.manager.object.IframeManager")) {
+ qx.manager.object.IframeManager.getInstance().handleMouseUp(vEventObject);
+ }
+
+ break;
+
+ case "mouseover":
+ if (qx.OO.isAvailable("qx.manager.object.ToolTipManager")) {
+ qx.manager.object.ToolTipManager.getInstance().handleMouseOver(vEventObject);
+ }
+
+ break;
+
+ case "mouseout":
+ if (qx.OO.isAvailable("qx.manager.object.ToolTipManager")) {
+ qx.manager.object.ToolTipManager.getInstance().handleMouseOut(vEventObject);
+ }
+
+ break;
+
+ case "mousewheel":
+ // priority for the real target not the (eventually captured) dispatch target
+ vReturnValue ? this._onmousewheel(vOriginalTarget || vDispatchTarget, vEventObject) : qx.event.handler.EventHandler.stopDomEvent(vDomEvent);
+
+ break;
+ }
+
+
+
+ this._ignoreWindowBlur = vType === "mousedown";
+
+
+
+
+ // Send Event Object to Drag&Drop Manager
+ if (qx.OO.isAvailable("qx.event.handler.DragAndDropHandler") && vTarget) {
+ qx.event.handler.DragAndDropHandler.getInstance().handleMouseEvent(vEventObject);
+ }
+
+
+
+
+ // Dispose Event Object
+ vEventObject.dispose();
+ vEventObject = null;
+
+
+
+
+ // Flush Queues
+ qx.ui.core.Widget.flushGlobalQueues();
+
+
+ // Fix Click (Gecko Bug, see above)
+ if (vFixClick)
+ {
+ this._onmouseevent_post(vDomEvent, "click", this._lastMouseDownDomTarget);
+
+ this._lastMouseDownDomTarget = null;
+ this._lastMouseDownDispatchTarget = null;
+ }
+ }
+ catch(ex)
+ {
+ return this.error("Failed to handle mouse event", ex);
+ }
+}
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._onmousewheel = function(vTarget, vEvent)
+ {
+ if(vTarget == null) {
+ return;
+ }
+
+ // ingore if overflow is configured as hidden
+ // in this case send the event to the parent instead
+ if(vTarget.getOverflowY() == "hidden") {
+ return this._onmousewheel(vTarget.getParent(), vEvent);
+ }
+
+ var vScrollTop = vTarget.getScrollTop();
+ var vDelta = 20 * vEvent.getWheelDelta();
+
+ // if already at the top edge and the user scrolls up
+ // then send the event to the parent instead
+ if(vScrollTop == 0 && vDelta > 0) {
+ return this._onmousewheel(vTarget.getParent(), vEvent);
+ }
+
+ var vScrollHeight = vTarget.getScrollHeight();
+ var vClientHeight = vTarget.getClientHeight();
+
+ // if already at the bottom edge and the user scrolls down
+ // then send the event to the parent instead
+ if(vScrollTop + vClientHeight >= vScrollHeight && vDelta < 0) {
+ return this._onmousewheel(vTarget.getParent(), vEvent);
+ }
+
+ // apply new scroll position
+ vTarget.setScrollTop(vScrollTop - vDelta);
+
+ // stop default handling, that works sometimes, too
+ vEvent.preventDefault();
+ }
+}
+else
+{
+ qx.Proto._onmousewheel = function() {};
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DRAG EVENTS
+
+ Currently only to stop non needed events
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._ondragevent = function(vEvent)
+{
+ if (!vEvent) {
+ vEvent = window.event;
+ }
+
+ qx.event.handler.EventHandler.stopDomEvent(vEvent);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SELECT EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onselectevent = function(e)
+{
+ if(!e) {
+ e = window.event;
+ }
+
+ var vTarget = qx.event.handler.EventHandler.getOriginalTargetObjectFromEvent(e);
+
+ if(vTarget && !vTarget.getSelectable()) {
+ qx.event.handler.EventHandler.stopDomEvent(e);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WINDOW EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._focused = false;
+
+qx.Proto._onwindowblur = function(e)
+{
+ // this.debug("Try Window blur...");
+
+ if (!this._focused || this._ignoreWindowBlur) {
+ return;
+ }
+
+ this._focused = false;
+
+ // this.debug("Window blur...");
+
+ // Disable capturing
+ this.setCaptureWidget(null);
+
+ // Hide Popups, Tooltips, ...
+ if (qx.OO.isAvailable("qx.manager.object.PopupManager")) {
+ qx.manager.object.PopupManager.getInstance().update();
+ }
+
+ // Hide Menus
+ if (qx.OO.isAvailable("qx.manager.object.MenuManager")) {
+ qx.manager.object.MenuManager.getInstance().update();
+ }
+
+ // Cancel Drag Operations
+ if (qx.OO.isAvailable("qx.event.handler.DragAndDropHandler")) {
+ qx.event.handler.DragAndDropHandler.getInstance().globalCancelDrag();
+ }
+
+ // Send blur event to client document
+ qx.ui.core.ClientDocument.getInstance().createDispatchEvent("windowblur");
+}
+
+qx.Proto._onwindowfocus = function(e)
+{
+ // this.debug("Try Window focus...");
+
+ if (this._focused) {
+ return;
+ }
+
+ this._focused = true;
+
+ // this.debug("Window focus...");
+
+ // Send focus event to client document
+ qx.ui.core.ClientDocument.getInstance().createDispatchEvent("windowfocus");
+}
+
+qx.Proto._onwindowresize = function(e)
+{
+ // Send resize event to client document
+ qx.ui.core.ClientDocument.getInstance().createDispatchEvent("windowresize");
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Detach mouse events
+ this.detachEvents();
+
+ // Reset functions
+ this.__onmouseevent = this.__ondragevent = this.__onselectevent = null;
+ this.__onwindowblur = this.__onwindowfocus = this.__onwindowresize = null;
+
+ // Cleanup
+ this._lastMouseEventType = null;
+ this._lastMouseDown = null;
+ this._lastMouseEventDate = null;
+
+ this._lastMouseDownDomTarget = null;
+ this._lastMouseDownDispatchTarget = null;
+
+ if (this._commands)
+ {
+ for (var vHash in this._commands)
+ {
+ this._commands[vHash].dispose();
+ delete this._commands[vHash];
+ }
+
+ this._commands = null;
+ }
+
+ qx.core.Target.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/FocusHandler.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/FocusHandler.js
new file mode 100644
index 0000000000..2006adb569
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/FocusHandler.js
@@ -0,0 +1,342 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#optional(qx.ui.core.Parent)
+#optional(qx.ui.basic.Terminator)
+
+************************************************************************ */
+
+/*!
+ This object gets an instance in each focus root and manage the focus handling for it.
+*/
+qx.OO.defineClass("qx.event.handler.FocusHandler", qx.core.Target,
+function(vWidget)
+{
+ qx.core.Target.call(this);
+
+ if (qx.util.Validation.isValidObject(vWidget)) {
+ this._attachedWidget = vWidget;
+ }
+});
+
+qx.event.handler.FocusHandler.mouseFocus = false;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getAttachedWidget = function() {
+ return this._attachedWidget;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TAB-EVENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+// Check for TAB pressed
+// * use keydown on mshtml
+// * use keypress on vAll other (correct) browsers
+// = same behaviour
+qx.event.handler.FocusHandler.tabEventType = qx.sys.Client.getInstance().isMshtml() ? "keydown" : "keypress";
+
+qx.Proto._onkeyevent = function(vContainer, vEvent)
+{
+ if (vEvent.getKeyIdentifier() != "Tab") {
+ return;
+ }
+
+ // Stop all key-events with a TAB keycode
+ vEvent.stopPropagation();
+ vEvent.preventDefault();
+
+ // But only react on the one to use for this browser.
+ if (vEvent.getType() != qx.event.handler.FocusHandler.tabEventType) {
+ return;
+ }
+
+ qx.event.handler.FocusHandler.mouseFocus = false;
+
+ var vCurrent = this.getAttachedWidget().getFocusedChild();
+
+ // Support shift key to reverse widget detection order
+ if(!vEvent.getShiftKey()) {
+ var vNext = vCurrent ? this.getWidgetAfter(vContainer, vCurrent) : this.getFirstWidget(vContainer);
+ } else {
+ var vNext = vCurrent ? this.getWidgetBefore(vContainer, vCurrent) : this.getLastWidget(vContainer);
+ }
+
+ // If there was a widget found, focus it
+ if(vNext)
+ {
+ vNext.setFocused(true);
+ vNext._ontabfocus();
+ }
+}
+
+qx.Proto.compareTabOrder = function(c1, c2)
+{
+ // Sort-Check #1: Tab-Index
+ if(c1 == c2) {
+ return 0;
+ }
+
+ var t1 = c1.getTabIndex();
+ var t2 = c2.getTabIndex();
+
+ // The following are some ideas to handle focus after tabindex.
+
+ // Sort-Check #2: Top-Position
+ if(t1 != t2) {
+ return t1 - t2;
+ }
+
+ var y1 = qx.dom.Location.getPageBoxTop(c1.getElement());
+ var y2 = qx.dom.Location.getPageBoxTop(c2.getElement());
+
+ if(y1 != y2) {
+ return y1 - y2;
+ }
+
+ // Sort-Check #3: Left-Position
+ var x1 = qx.dom.Location.getPageBoxLeft(c1.getElement());
+ var x2 = qx.dom.Location.getPageBoxLeft(c2.getElement());
+
+ if(x1 != x2) {
+ return x1 - x2;
+ }
+
+ // Sort-Check #4: zIndex
+ var z1 = c1.getZIndex();
+ var z2 = c2.getZIndex();
+
+ if(z1 != z2) {
+ return z1 - z2;
+ }
+
+ return 0;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES FOR TAB HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getFirstWidget = function(vParentContainer) {
+ return this._getFirst(vParentContainer, null);
+}
+
+qx.Proto.getLastWidget = function(vParentContainer) {
+ return this._getLast(vParentContainer, null);
+}
+
+qx.Proto.getWidgetAfter = function(vParentContainer, vWidget)
+{
+ if(vParentContainer == vWidget) {
+ return this.getFirstWidget(vParentContainer);
+ }
+
+ if(vWidget.getAnonymous()) {
+ vWidget = vWidget.getParent();
+ }
+
+ if(vWidget == null) {
+ return [];
+ }
+
+ var vAll = [];
+
+ this._getAllAfter(vParentContainer, vWidget, vAll);
+
+ vAll.sort(this.compareTabOrder);
+
+ return vAll.length > 0 ? vAll[0] : this.getFirstWidget(vParentContainer);
+}
+
+qx.Proto.getWidgetBefore = function(vParentContainer, vWidget)
+{
+ if(vParentContainer == vWidget) {
+ return this.getLastWidget(vParentContainer);
+ }
+
+ if(vWidget.getAnonymous()) {
+ vWidget = vWidget.getParent();
+ }
+
+ if(vWidget == null) {
+ return [];
+ }
+
+ var vAll = [];
+
+ this._getAllBefore(vParentContainer, vWidget, vAll);
+
+ vAll.sort(this.compareTabOrder);
+
+ var vChildrenLength = vAll.length;
+ return vChildrenLength > 0 ? vAll[vChildrenLength-1] : this.getLastWidget(vParentContainer);
+}
+
+qx.Proto._getAllAfter = function(vParent, vWidget, vArray)
+{
+ var vChildren = vParent.getChildren();
+ var vCurrentChild;
+ var vChildrenLength = vChildren.length;
+
+ for (var i = 0; i < vChildrenLength; i++)
+ {
+ vCurrentChild = vChildren[i];
+
+ if(!(vCurrentChild instanceof qx.ui.core.Parent) && !(vCurrentChild instanceof qx.ui.basic.Terminator)) {
+ continue;
+ }
+
+ if(vCurrentChild.isFocusable() && vCurrentChild.getTabIndex() > 0 && this.compareTabOrder(vWidget, vCurrentChild) < 0) {
+ vArray.push(vChildren[i]);
+ }
+
+ if(!vCurrentChild.isFocusRoot() && vCurrentChild instanceof qx.ui.core.Parent) {
+ this._getAllAfter(vCurrentChild, vWidget, vArray);
+ }
+ }
+}
+
+qx.Proto._getAllBefore = function(vParent, vWidget, vArray)
+{
+ var vChildren = vParent.getChildren();
+ var vCurrentChild;
+ var vChildrenLength = vChildren.length;
+
+ for (var i = 0; i < vChildrenLength; i++)
+ {
+ vCurrentChild = vChildren[i];
+
+ if(!(vCurrentChild instanceof qx.ui.core.Parent) && !(vCurrentChild instanceof qx.ui.basic.Terminator)) {
+ continue;
+ }
+
+ if(vCurrentChild.isFocusable() && vCurrentChild.getTabIndex() > 0 && this.compareTabOrder(vWidget, vCurrentChild) > 0) {
+ vArray.push(vCurrentChild);
+ }
+
+ if(!vCurrentChild.isFocusRoot() && vCurrentChild instanceof qx.ui.core.Parent) {
+ this._getAllBefore(vCurrentChild, vWidget, vArray);
+ }
+ }
+}
+
+qx.Proto._getFirst = function(vParent, vFirstWidget)
+{
+ var vChildren = vParent.getChildren();
+ var vCurrentChild;
+ var vChildrenLength = vChildren.length;
+
+ for (var i = 0; i < vChildrenLength; i++)
+ {
+ vCurrentChild = vChildren[i];
+
+ if(!(vCurrentChild instanceof qx.ui.core.Parent) && !(vCurrentChild instanceof qx.ui.basic.Terminator)) {
+ continue;
+ }
+
+ if(vCurrentChild.isFocusable() && vCurrentChild.getTabIndex() > 0)
+ {
+ if(vFirstWidget == null || this.compareTabOrder(vCurrentChild, vFirstWidget) < 0) {
+ vFirstWidget = vCurrentChild;
+ }
+ }
+
+ if(!vCurrentChild.isFocusRoot() && vCurrentChild instanceof qx.ui.core.Parent) {
+ vFirstWidget = this._getFirst(vCurrentChild, vFirstWidget);
+ }
+ }
+
+ return vFirstWidget;
+}
+
+qx.Proto._getLast = function(vParent, vLastWidget)
+{
+ var vChildren = vParent.getChildren();
+ var vCurrentChild;
+ var vChildrenLength = vChildren.length;
+
+ for (var i = 0; i < vChildrenLength; i++)
+ {
+ vCurrentChild = vChildren[i];
+
+ if(!(vCurrentChild instanceof qx.ui.core.Parent) && !(vCurrentChild instanceof qx.ui.basic.Terminator)) {
+ continue;
+ }
+
+ if(vCurrentChild.isFocusable() && vCurrentChild.getTabIndex() > 0)
+ {
+ if(vLastWidget == null || this.compareTabOrder(vCurrentChild, vLastWidget) > 0) {
+ vLastWidget = vCurrentChild;
+ }
+ }
+
+ if(!vCurrentChild.isFocusRoot() && vCurrentChild instanceof qx.ui.core.Parent) {
+ vLastWidget = this._getLast(vCurrentChild, vLastWidget);
+ }
+ }
+
+ return vLastWidget;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._attachedWidget = null;
+
+ qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/KeyEventHandler.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/KeyEventHandler.js
new file mode 100644
index 0000000000..65e3c506c8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/handler/KeyEventHandler.js
@@ -0,0 +1,725 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.event.type.KeyEvent)
+#require(qx.util.Return);
+
+************************************************************************ */
+
+/**
+ * This class provides unified key event handler for Internet Explorer,
+ * Firefox, Opera and Safari
+ */
+qx.OO.defineClass("qx.event.handler.KeyEventHandler", qx.core.Target, function()
+{
+ qx.core.Target.call(this);
+
+ // Object Wrapper to Events (Needed for DOM-Events)
+ var o = this;
+
+ this.__onkeypress = function(e) { o._onkeypress(e); };
+ this.__onkeyupdown = function(e) { o._onkeyupdown(e); };
+});
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-MAPPING
+---------------------------------------------------------------------------
+*/
+
+/** attach the key event handler to the DOM events */
+qx.Proto._attachEvents = function()
+{
+ var el = qx.sys.Client.getInstance().isGecko() ? window : document.body;
+
+ qx.dom.EventRegistration.addEventListener(el, "keypress", this.__onkeypress);
+ qx.dom.EventRegistration.addEventListener(el, "keyup", this.__onkeyupdown);
+ qx.dom.EventRegistration.addEventListener(el, "keydown", this.__onkeyupdown);
+};
+
+/** detach the key event handler from the DOM events */
+qx.Proto._detachEvents = function()
+{
+ var el = qx.sys.Client.getInstance().isGecko() ? window : document.body;
+
+ // Unregister dom events
+ qx.dom.EventRegistration.removeEventListener(el, "keypress", this.__onkeypress);
+ qx.dom.EventRegistration.removeEventListener(el, "keyup", this.__onkeyupdown);
+ qx.dom.EventRegistration.removeEventListener(el, "keydown", this.__onkeyupdown);
+};
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY-MAPS
+---------------------------------------------------------------------------
+*/
+
+/** maps the charcodes of special printable keys to key identifiers */
+qx.Proto._specialCharCodeMap =
+{
+ 8 : "Backspace", // The Backspace (Back) key.
+ 9 : "Tab", // The Horizontal Tabulation (Tab) key.
+ 32 : "Space" // The Space (Spacebar) key.
+};
+
+/** maps the keycodes of non printable keys to key identifiers */
+qx.Proto._keyCodeToIdentifierMap =
+{
+ 13 : "Enter", // The Enter key.
+ // Note: This key identifier is also used for the
+ // Return (Macintosh numpad) key.
+ 16 : "Shift", // The Shift key.
+ 17 : "Control", // The Control (Ctrl) key.
+ 18 : "Alt", // The Alt (Menu) key.
+ 20 : "CapsLock", // The CapsLock key
+ 224 : "Meta", // The Meta key. (Apple Meta and Windows key)
+
+ 27 : "Escape", // The Escape (Esc) key.
+
+ 37 : "Left", // The Left Arrow key.
+ 38 : "Up", // The Up Arrow key.
+ 39 : "Right", // The Right Arrow key.
+ 40 : "Down", // The Down Arrow key.
+
+ 33 : "PageUp", // The Page Up key.
+ 34 : "PageDown", // The Page Down (Next) key.
+
+ 35 : "End", // The End key.
+ 36 : "Home", // The Home key.
+ 45 : "Insert", // The Insert (Ins) key. (Does not fire in Opera/Win)
+ 46 : "Delete", // The Delete (Del) Key.
+
+ 112 : "F1", // The F1 key.
+ 113 : "F2", // The F2 key.
+ 114 : "F3", // The F3 key.
+ 115 : "F4", // The F4 key.
+ 116 : "F5", // The F5 key.
+ 117 : "F6", // The F6 key.
+ 118 : "F7", // The F7 key.
+ 119 : "F8", // The F8 key.
+ 120 : "F9", // The F9 key.
+ 121 : "F10", // The F10 key.
+ 122 : "F11", // The F11 key.
+ 123 : "F12", // The F12 key.
+
+ 144 : "NumLock", // The Num Lock key.
+ 44 : "PrintScreen", // The Print Screen (PrintScrn, SnapShot) key.
+ 145 : "Scroll", // The scroll lock key
+ 19 : "Pause", // The pause/break key
+
+ 91 : "Win", // The Windows Logo key
+ 93 : "Apps" // The Application key (Windows Context Menu)
+};
+
+/** maps the keycodes of the numpad keys to the right charcodes */
+qx.Proto._numpadToCharCode =
+{
+ 96 : "0".charCodeAt(0),
+ 97 : "1".charCodeAt(0),
+ 98 : "2".charCodeAt(0),
+ 99 : "3".charCodeAt(0),
+ 100 : "4".charCodeAt(0),
+ 101 : "5".charCodeAt(0),
+ 102 : "6".charCodeAt(0),
+ 103 : "7".charCodeAt(0),
+ 104 : "8".charCodeAt(0),
+ 105 : "9".charCodeAt(0),
+
+ 106 : "*".charCodeAt(0),
+ 107 : "+".charCodeAt(0),
+ 109 : "-".charCodeAt(0),
+ 110 : ",".charCodeAt(0),
+ 111 : "/".charCodeAt(0)
+};
+
+
+// construct invers of keyCodeToIdentifierMap
+if (!qx.Proto._identifierToKeyCodeMap)
+{
+ qx.Proto._identifierToKeyCodeMap = {};
+
+ for (var key in qx.Proto._keyCodeToIdentifierMap) {
+ qx.Proto._identifierToKeyCodeMap[qx.Proto._keyCodeToIdentifierMap[key]] = parseInt(key);
+ }
+
+ for (var key in qx.Proto._specialCharCodeMap) {
+ qx.Proto._identifierToKeyCodeMap[qx.Proto._specialCharCodeMap[key]] = parseInt(key);
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HELPER-METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._charCodeA = "A".charCodeAt(0);
+qx.Proto._charCodeZ = "Z".charCodeAt(0);
+qx.Proto._charCode0 = "0".charCodeAt(0);
+qx.Proto._charCode9 = "9".charCodeAt(0);
+
+/**
+ * Checks wether the keyCode represents a non printable key
+ *
+ * @param keyCode (string)
+ * @return (boolean)
+ */
+qx.Proto._isNonPrintableKeyCode = function(keyCode) {
+ return this._keyCodeToIdentifierMap[keyCode] ? true : false;
+};
+
+
+/**
+ * Check wether the keycode can be reliably detected in keyup/keydown events
+ *
+ * @param keyCode (string)
+ * @return (boolean)
+ */
+qx.Proto._isIdentifiableKeyCode = function(keyCode)
+{
+ // A-Z
+ if (keyCode >= this._charCodeA && keyCode <= this._charCodeZ) {
+ return true;
+ }
+
+ // 0-9
+ if (keyCode >= this._charCode0 && keyCode <= this._charCode9) {
+ return true;
+ }
+
+ // Enter, Space, Tab, Backspace
+ if (this._specialCharCodeMap[keyCode]) {
+ return true;
+ }
+
+ // Numpad
+ if (this._numpadToCharCode[keyCode]) {
+ return true;
+ }
+
+ // non printable keys
+ if (this._isNonPrintableKeyCode(keyCode)) {
+ return true;
+ }
+
+ return false;
+};
+
+
+/**
+ * Checks wether a given string is a valid keyIdentifier
+ *
+ * @param keyIdentifier (string)
+ * @return (boolean) wether the given string is a valid keyIdentifier
+ */
+qx.Proto.isValidKeyIdentifier = function(keyIdentifier)
+{
+ if (this._identifierToKeyCodeMap[keyIdentifier]) {
+ return true;
+ }
+
+ if (keyIdentifier.length != 1) {
+ return false;
+ }
+
+ if (keyIdentifier >= "0" && keyIdentifier <= "9") {
+ return true;
+ }
+
+ if (keyIdentifier >= "A" && keyIdentifier <= "Z") {
+ return true;
+ }
+
+ switch (keyIdentifier)
+ {
+ case "+":
+ case "-":
+ case "*":
+ case "/":
+ return true;
+
+ default:
+ return false;
+ }
+};
+
+
+/**
+ * converts a keyboard code to the corresponding identifier
+ *
+ * @param keyCode (int)
+ * @return (string) key identifier
+ */
+qx.Proto._keyCodeToIdentifier = function(keyCode)
+{
+ if (this._isIdentifiableKeyCode(keyCode))
+ {
+ var numPadKeyCode = this._numpadToCharCode[keyCode];
+ if (numPadKeyCode) {
+ return String.fromCharCode(numPadKeyCode);
+ }
+
+ return (
+ this._keyCodeToIdentifierMap[keyCode] ||
+ this._specialCharCodeMap[keyCode] ||
+ String.fromCharCode(keyCode)
+ );
+ }
+ else
+ {
+ return "Unidentified";
+ }
+};
+
+
+/**
+ * converts a character code to the corresponding identifier
+ *
+ * @param charCode (string)
+ * @return (string) key identifier
+ */
+qx.Proto._charCodeToIdentifier = function(charCode) {
+ return this._specialCharCodeMap[charCode] || String.fromCharCode(charCode).toUpperCase();
+};
+
+
+/**
+ * converts a key identifier back to a keycode
+ *
+ * @param keyIdentifier (string)
+ * @return (int) keyboard code
+ */
+qx.Proto._identifierToKeyCode = function(keyIdentifier) {
+ return this._identifierToKeyCodeMap[keyIdentifier] || keyIdentifier.charCodeAt(0);
+};
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMPATIBILITY TO COMMAND
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oldKeyNameToKeyIdentifierMap =
+{
+ // all other keys are converted by converting the first letter to uppercase
+
+ esc : "Escape",
+ ctrl : "Control",
+ print : "PrintScreen",
+ del : "Delete",
+ pageup : "PageUp",
+ pagedown : "PageDown",
+ numlock : "NumLock",
+ numpad_0 : "0",
+ numpad_1 : "1",
+ numpad_2 : "2",
+ numpad_3 : "3",
+ numpad_4 : "4",
+ numpad_5 : "5",
+ numpad_6 : "6",
+ numpad_7 : "7",
+ numpad_8 : "8",
+ numpad_9 : "9",
+ numpad_divide : "/",
+ numpad_multiply : "*",
+ numpad_minus : "-",
+ numpad_plus : "+"
+};
+
+
+/**
+ * converts an old key name as found in @see(qx.event.type.KeyEvent.keys) to
+ * the new keyIdentifier.
+ *
+ * @param keyName (string) old name of the key.
+ * @return (string) corresponding keyIdentifier or "Unidentified" if a conversion was not possible
+ */
+qx.Proto.oldKeyNameToKeyIdentifier = function(keyName)
+{
+ var keyIdentifier = "Unidentified";
+
+ if (this.isValidKeyIdentifier(keyName)) {
+ return keyName;
+ }
+
+ if (keyName.length == 1 && keyName >= "a" && keyName <= "z") {
+ return keyName.toUpperCase();
+ }
+
+ keyName = keyName.toLowerCase();
+
+ // check wether its a valid old key name
+ if (!qx.event.type.KeyEvent.keys[keyName]) {
+ return "Unidentified";
+ }
+
+ var keyIdentifier = this._oldKeyNameToKeyIdentifierMap[keyName];
+ if (keyIdentifier) {
+ return keyIdentifier;
+ } else {
+ return qx.lang.String.toFirstUp(keyName);
+ }
+};
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ IDEALIZED-KEY-HANDLER
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Key handler for an idealized browser.
+ * Runs after the browser specific key handlers have normalized the key events.
+ *
+ * @param keyCode (string) keyboard code
+ * @param charCode (string) character code
+ * @param eventType (string) type of the event (keydown, keypress, keyup)
+ * @param domEvent (Element) DomEvent
+ */
+qx.Proto._idealKeyHandler = function(keyCode, charCode, eventType, domEvent)
+{
+ if (!keyCode && !charCode) {
+ return;
+ }
+
+ var keyIdentifier;
+
+ // Use: keyCode
+ if (keyCode)
+ {
+ keyIdentifier = this._keyCodeToIdentifier(keyCode);
+
+ if (keyIdentifier != "Unidentified") {
+ qx.event.handler.EventHandler.getInstance()._onkeyevent_post(domEvent, eventType, keyCode, charCode, keyIdentifier);
+ }
+ }
+
+ // Use: charCode
+ else
+ {
+ keyIdentifier = this._charCodeToIdentifier(charCode);
+
+ if (keyIdentifier != "Unidentified")
+ {
+ qx.event.handler.EventHandler.getInstance()._onkeyevent_post(domEvent, "keypress", keyCode, charCode, keyIdentifier);
+ qx.event.handler.EventHandler.getInstance()._onkeyevent_post(domEvent, "keyinput", keyCode, charCode, keyIdentifier);
+ }
+ }
+};
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BROWSER-SPECIFIC-KEY-HANDLER: MSHTML
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._lastUpDownType = {};
+
+ qx.Proto._charCode2KeyCode =
+ {
+ 13 : 13,
+ 27 : 27
+ };
+
+ qx.Proto._onkeyupdown = function(domEvent)
+ {
+ domEvent = window.event || domEvent;
+
+ var keyCode = domEvent.keyCode;
+ var charcode = 0;
+ var type = domEvent.type;
+
+ // Ignore the down in such sequences dp dp dp
+ if (!(this._lastUpDownType[keyCode] == "keydown" && type == "keydown")) {
+ this._idealKeyHandler(keyCode, charcode, type, domEvent);
+ }
+
+ // On non print-able character be sure to add a keypress event
+ if (this._isNonPrintableKeyCode(keyCode) && type == "keydown") {
+ this._idealKeyHandler(keyCode, charcode, "keypress", domEvent);
+ }
+
+ // Store last type
+ this._lastUpDownType[keyCode] = type;
+ };
+
+ qx.Proto._onkeypress = function(domEvent)
+ {
+ domEvent = window.event || domEvent;
+
+ if (this._charCode2KeyCode[domEvent.keyCode]) {
+ this._idealKeyHandler(this._charCode2KeyCode[domEvent.keyCode], 0, domEvent.type, domEvent);
+ } else {
+ this._idealKeyHandler(0, domEvent.keyCode, domEvent.type, domEvent);
+ }
+ };
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BROWSER-SPECIFIC-KEY-HANDLER: GECKO
+---------------------------------------------------------------------------
+*/
+
+else if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._lastUpDownType = {};
+
+ qx.Proto._keyCodeFix = {
+ 12 : qx.Proto._identifierToKeyCode("NumLock")
+ };
+
+ /**
+ * key handler for Gecko
+ *
+ * @param domEvent (Element) DomEvent
+ */
+ qx.Proto._onkeyupdown = qx.Proto._onkeypress = function(domEvent)
+ {
+ var keyCode = this._keyCodeFix[domEvent.keyCode] || domEvent.keyCode;
+ var charCode = domEvent.charCode;
+ var type = domEvent.type;
+
+ // FF repeats under windows keydown events like IE
+ if (qx.sys.Client.getInstance().runsOnWindows())
+ {
+ var keyIdentifier = keyCode ? this._keyCodeToIdentifier(keyCode) : this._charCodeToIdentifier(charCode)
+
+ if (!(this._lastUpDownType[keyIdentifier] == "keypress" && type == "keydown")) {
+ this._idealKeyHandler(keyCode, charCode, type, domEvent);
+ }
+
+ // Store last type
+ this._lastUpDownType[keyIdentifier] = type;
+ }
+
+ // all other OSes
+ else
+ {
+ this._idealKeyHandler(keyCode, charCode, type, domEvent);
+ }
+ };
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BROWSER-SPECIFIC-KEY-HANDLER: WEBKIT
+---------------------------------------------------------------------------
+*/
+
+else if (qx.sys.Client.getInstance().isWebkit())
+{
+ qx.Proto._charCode2KeyCode =
+ {
+ // Safari/Webkit Mappings
+ 63289 : qx.Proto._identifierToKeyCode("NumLock"),
+ 63276 : qx.Proto._identifierToKeyCode("PageUp"),
+ 63277 : qx.Proto._identifierToKeyCode("PageDown"),
+ 63275 : qx.Proto._identifierToKeyCode("End"),
+ 63273 : qx.Proto._identifierToKeyCode("Home"),
+ 63234 : qx.Proto._identifierToKeyCode("Left"),
+ 63232 : qx.Proto._identifierToKeyCode("Up"),
+ 63235 : qx.Proto._identifierToKeyCode("Right"),
+ 63233 : qx.Proto._identifierToKeyCode("Down"),
+ 63272 : qx.Proto._identifierToKeyCode("Delete"),
+ 63302 : qx.Proto._identifierToKeyCode("Insert"),
+ 63236 : qx.Proto._identifierToKeyCode("F1"),
+ 63237 : qx.Proto._identifierToKeyCode("F2"),
+ 63238 : qx.Proto._identifierToKeyCode("F3"),
+ 63239 : qx.Proto._identifierToKeyCode("F4"),
+ 63240 : qx.Proto._identifierToKeyCode("F5"),
+ 63241 : qx.Proto._identifierToKeyCode("F6"),
+ 63242 : qx.Proto._identifierToKeyCode("F7"),
+ 63243 : qx.Proto._identifierToKeyCode("F8"),
+ 63244 : qx.Proto._identifierToKeyCode("F9"),
+ 63245 : qx.Proto._identifierToKeyCode("F10"),
+ 63246 : qx.Proto._identifierToKeyCode("F11"),
+ 63247 : qx.Proto._identifierToKeyCode("F12"),
+ 63248 : qx.Proto._identifierToKeyCode("PrintScreen"),
+
+ 3 : qx.Proto._identifierToKeyCode("Enter"),
+ 12 : qx.Proto._identifierToKeyCode("NumLock"),
+ 13 : qx.Proto._identifierToKeyCode("Enter")
+ };
+
+ qx.Proto._onkeyupdown = qx.Proto._onkeypress = function(domEvent)
+ {
+ var keyCode = 0;
+ var charCode = 0;
+ var type = domEvent.type;
+
+ // prevent Safari from sending key signals twice
+ // This bug is fixed in recent Webkit builds so we need a revision check
+ // see http://trac.mochikit.com/ticket/182 for details
+ if (qx.sys.Client.getInstance().getVersion() < 420)
+ {
+ if (!this._lastCharCodeForType) {
+ this._lastCharCodeForType = {};
+ }
+
+ var isSafariSpecialKey = this._lastCharCodeForType[type] > 63000;
+
+ if (isSafariSpecialKey) {
+ this._lastCharCodeForType[type] = null;
+ return;
+ }
+
+ this._lastCharCodeForType[type] = domEvent.charCode;
+ }
+
+ if (type == "keyup" || type == "keydown") {
+ keyCode = this._charCode2KeyCode[domEvent.charCode] || domEvent.keyCode;
+ }
+ else
+ {
+ if (this._charCode2KeyCode[domEvent.charCode]) {
+ keyCode = this._charCode2KeyCode[domEvent.charCode];
+ } else {
+ charCode = domEvent.charCode;
+ }
+ }
+
+ this._idealKeyHandler(keyCode, charCode, type, domEvent);
+ };
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BROWSER-SPECIFIC-KEY-HANDLER: OPERA
+---------------------------------------------------------------------------
+*/
+
+else if (qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto._onkeyupdown = function(domEvent) {
+ this._idealKeyHandler(domEvent.keyCode, 0, domEvent.type, domEvent);
+ };
+
+ qx.Proto._onkeypress = function(domEvent)
+ {
+ if (this._keyCodeToIdentifierMap[domEvent.keyCode]) {
+ this._idealKeyHandler(domEvent.keyCode, 0, domEvent.type, domEvent);
+ } else {
+ this._idealKeyHandler(0, domEvent.keyCode, domEvent.type, domEvent);
+ }
+ };
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Destructor
+ */
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Detach keyboard events
+ this._detachEvents();
+
+ return qx.core.Target.prototype.dispose.call(this);
+};
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DataEvent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DataEvent.js
new file mode 100644
index 0000000000..a8b0a84d08
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DataEvent.js
@@ -0,0 +1,48 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/*!
+ Event object for property changes.
+*/
+qx.OO.defineClass("qx.event.type.DataEvent", qx.event.type.Event,
+function(vType, vData)
+{
+ qx.event.type.Event.call(this, vType);
+
+ this.setData(vData);
+});
+
+qx.OO.addFastProperty({ name : "propagationStopped", defaultValue : false });
+qx.OO.addFastProperty({ name : "data" });
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ this._valueData = null;
+
+ return qx.event.type.Event.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DomEvent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DomEvent.js
new file mode 100644
index 0000000000..5e62b5333e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DomEvent.js
@@ -0,0 +1,227 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.event.type.DomEvent", qx.event.type.Event,
+function(vType, vDomEvent, vDomTarget, vTarget, vOriginalTarget)
+{
+ qx.event.type.Event.call(this, vType);
+
+ this.setDomEvent(vDomEvent);
+ this.setDomTarget(vDomTarget);
+
+ this.setTarget(vTarget);
+ this.setOriginalTarget(vOriginalTarget);
+});
+
+qx.OO.addFastProperty({ name : "bubbles", defaultValue : true, noCompute : true });
+qx.OO.addFastProperty({ name : "propagationStopped", defaultValue : false, noCompute : true });
+
+qx.OO.addFastProperty({ name : "domEvent", setOnlyOnce : true, noCompute : true });
+qx.OO.addFastProperty({ name : "domTarget", setOnlyOnce : true, noCompute : true });
+
+/**
+ * The modifiers. A mask of the pressed modifier keys. This is an OR-combination of
+ * {@link #SHIFT_MASK}, {@link #CTRL_MASK}, {@link #ALT_MASK} and {@link #META_MASK}.
+ */
+qx.OO.addCachedProperty({ name : "modifiers", defaultValue : null });
+
+
+// property computer
+qx.Proto._computeModifiers = function() {
+ var mask = 0;
+ var evt = this.getDomEvent();
+ if (evt.shiftKey) mask |= qx.event.type.DomEvent.SHIFT_MASK;
+ if (evt.ctrlKey) mask |= qx.event.type.DomEvent.CTRL_MASK;
+ if (evt.altKey) mask |= qx.event.type.DomEvent.ALT_MASK;
+ if (evt.metaKey) mask |= qx.event.type.DomEvent.META_MASK;
+ return mask;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SPECIAL KEY SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Returns whether the the ctrl key is pressed.
+ *
+ * @return {boolean} whether the the ctrl key is pressed.
+ */
+qx.Proto.isCtrlPressed = function() {
+ return this.getDomEvent().ctrlKey;
+}
+
+/**
+ * Returns whether the the ctrl key is pressed.
+ *
+ * @return {boolean} whether the the ctrl key is pressed.
+ * @deprecated Use {@link #isCtrlPressed} instead.
+ */
+qx.Proto.getCtrlKey = qx.Proto.isCtrlPressed;
+
+
+/**
+ * Returns whether the the shift key is pressed.
+ *
+ * @return {boolean} whether the the shift key is pressed.
+ */
+qx.Proto.isShiftPressed = function() {
+ return this.getDomEvent().shiftKey;
+}
+
+/**
+ * Returns whether the the shift key is pressed.
+ *
+ * @return {boolean} whether the the shift key is pressed.
+ * @deprecated Use {@link #isShiftPressed} instead.
+ */
+qx.Proto.getShiftKey = qx.Proto.isShiftPressed;
+
+
+/**
+ * Returns whether the the alt key is pressed.
+ *
+ * @return {boolean} whether the the alt key is pressed.
+ */
+qx.Proto.isAltPressed = function() {
+ return this.getDomEvent().altKey;
+}
+
+/**
+ * Returns whether the the alt key is pressed.
+ *
+ * @return {boolean} whether the the alt key is pressed.
+ * @deprecated Use {@link #isAltPressed} instead.
+ */
+qx.Proto.getAltKey = qx.Proto.isAltPressed;
+
+
+/**
+ * Returns whether the the meta key is pressed.
+ *
+ * @return {boolean} whether the the meta key is pressed.
+ */
+qx.Proto.isMetaPressed = function() {
+ return this.getDomEvent().metaKey;
+}
+
+
+/**
+ * Returns whether the ctrl key or (on the Mac) the command key is pressed.
+ *
+ * @return {boolean} <code>true</code> if the command key is pressed on the Mac
+ * or the ctrl key is pressed on another system.
+ */
+qx.Proto.isCtrlOrCommandPressed = function() {
+ if (qx.sys.Client.getInstance().runsOnMacintosh()) {
+ return this.getDomEvent().metaKey;
+ } else {
+ return this.getDomEvent().ctrlKey;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREVENT DEFAULT
+---------------------------------------------------------------------------
+*/
+
+if(qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.setDefaultPrevented = function(vValue)
+ {
+ if (!vValue) {
+ return this.error("It is not possible to set preventDefault to false if it was true before!", "setDefaultPrevented");
+ }
+
+ this.getDomEvent().returnValue = false;
+
+ qx.event.type.Event.prototype.setDefaultPrevented.call(this, vValue);
+ }
+}
+else
+{
+ qx.Proto.setDefaultPrevented = function(vValue)
+ {
+ if (!vValue) {
+ return this.error("It is not possible to set preventDefault to false if it was true before!", "setDefaultPrevented");
+ }
+
+ this.getDomEvent().preventDefault();
+ this.getDomEvent().returnValue = false;
+
+ qx.event.type.Event.prototype.setDefaultPrevented.call(this, vValue);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._valueDomEvent = null;
+ this._valueDomTarget = null;
+
+ return qx.event.type.Event.prototype.dispose.call(this);
+}
+
+
+
+
+/** {int} The modifier mask for the shift key. */
+qx.Class.SHIFT_MASK = 1;
+
+/** {int} The modifier mask for the control key. */
+qx.Class.CTRL_MASK = 2;
+
+/** {int} The modifier mask for the alt key. */
+qx.Class.ALT_MASK = 4;
+
+/** {int} The modifier mask for the meta key (e.g. apple key on Macs). */
+qx.Class.META_MASK = 8;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DragEvent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DragEvent.js
new file mode 100644
index 0000000000..96c1db951b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/DragEvent.js
@@ -0,0 +1,155 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_dragdrop)
+
+************************************************************************ */
+
+/*!
+ The event object for drag and drop sessions
+*/
+qx.OO.defineClass("qx.event.type.DragEvent", qx.event.type.MouseEvent,
+function(vType, vMouseEvent, vTarget, vRelatedTarget)
+{
+ this._mouseEvent = vMouseEvent;
+
+ var vOriginalTarget = null;
+
+ switch(vType)
+ {
+ case "dragstart":
+ case "dragover":
+ vOriginalTarget = vMouseEvent.getOriginalTarget();
+ }
+
+ qx.event.type.MouseEvent.call(this, vType, vMouseEvent.getDomEvent(), vTarget.getElement(), vTarget, vOriginalTarget, vRelatedTarget);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getMouseEvent = function() {
+ return this._mouseEvent;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPLICATION CONNECTION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.startDrag = function()
+{
+ if (this.getType() != "dragstart") {
+ throw new Error("qx.event.type.DragEvent startDrag can only be called during the dragstart event: " + this.getType());
+ }
+
+ this.stopPropagation();
+ qx.event.handler.DragAndDropHandler.getInstance().startDrag();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addData = function(sType, oData) {
+ qx.event.handler.DragAndDropHandler.getInstance().addData(sType, oData);
+}
+
+qx.Proto.getData = function(sType) {
+ return qx.event.handler.DragAndDropHandler.getInstance().getData(sType);
+}
+
+qx.Proto.clearData = function() {
+ qx.event.handler.DragAndDropHandler.getInstance().clearData();
+}
+
+qx.Proto.getDropDataTypes = function() {
+ return qx.event.handler.DragAndDropHandler.getInstance().getDropDataTypes();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ACTION SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addAction = function(sAction) {
+ qx.event.handler.DragAndDropHandler.getInstance().addAction(sAction);
+}
+
+qx.Proto.removeAction = function(sAction) {
+ qx.event.handler.DragAndDropHandler.getInstance().removeAction(sAction);
+}
+
+qx.Proto.getAction = function() {
+ return qx.event.handler.DragAndDropHandler.getInstance().getCurrentAction();
+}
+
+qx.Proto.clearActions = function() {
+ qx.event.handler.DragAndDropHandler.getInstance().clearActions();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._mouseEvent = null;
+
+ return qx.event.type.MouseEvent.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/Event.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/Event.js
new file mode 100644
index 0000000000..8d52339b40
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/Event.js
@@ -0,0 +1,88 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/*!
+ The qooxdoo core event object. Each event object for qx.core.Targets should extend this class.
+*/
+qx.OO.defineClass("qx.event.type.Event", qx.core.Object,
+function(vType)
+{
+ qx.core.Object.call(this, false);
+
+ this.setType(vType);
+});
+
+qx.OO.addFastProperty({ name : "type", setOnlyOnce : true });
+
+qx.OO.addFastProperty({ name : "originalTarget", setOnlyOnce : true });
+qx.OO.addFastProperty({ name : "target", setOnlyOnce : true });
+qx.OO.addFastProperty({ name : "relatedTarget", setOnlyOnce : true });
+qx.OO.addFastProperty({ name : "currentTarget" });
+
+qx.OO.addFastProperty({ name : "bubbles", defaultValue : false, noCompute : true });
+qx.OO.addFastProperty({ name : "propagationStopped", defaultValue : true, noCompute : true });
+qx.OO.addFastProperty({ name : "defaultPrevented", defaultValue : false, noCompute : true });
+
+/** If the event object should automatically be disposed by the dispatcher */
+qx.OO.addFastProperty({ name : "autoDispose", defaultValue : false });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SHORTCUTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.preventDefault = function() {
+ this.setDefaultPrevented(true);
+}
+
+qx.Proto.stopPropagation = function() {
+ this.setPropagationStopped(true);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ this._valueOriginalTarget = null;
+ this._valueTarget = null;
+ this._valueRelatedTarget = null;
+ this._valueCurrentTarget = null;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/FocusEvent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/FocusEvent.js
new file mode 100644
index 0000000000..835ab05f7f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/FocusEvent.js
@@ -0,0 +1,46 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/*!
+ This event handles all focus events.
+
+ The four supported types are:
+ 1+2: focus and blur also propagate the target object
+ 3+4: focusout and focusin are bubbling to the parent objects
+*/
+qx.OO.defineClass("qx.event.type.FocusEvent", qx.event.type.Event,
+function(vType, vTarget)
+{
+ qx.event.type.Event.call(this, vType);
+
+ this.setTarget(vTarget);
+
+ switch(vType)
+ {
+ case "focusin":
+ case "focusout":
+ this.setBubbles(true);
+ this.setPropagationStopped(false);
+ }
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/KeyEvent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/KeyEvent.js
new file mode 100644
index 0000000000..32552a1172
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/KeyEvent.js
@@ -0,0 +1,152 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/**
+ * A key event instance contains all data for each occured key event
+ *
+ * @param vType (string) event type (keydown, keypress, keyinput, keyup)
+ * @param vDomEvent (Element) DOM event object
+ * @param vDomTarget (Element) target element of the DOM event
+ * @param vTarget
+ * @param vOriginalTarget
+ * @param vKeyCode (int)
+ * @param vCharCode (int)
+ * @param vKeyIdentifier (string)
+ */
+qx.OO.defineClass("qx.event.type.KeyEvent", qx.event.type.DomEvent,
+function(vType, vDomEvent, vDomTarget, vTarget, vOriginalTarget, vKeyCode, vCharCode, vKeyIdentifier)
+{
+ qx.event.type.DomEvent.call(this, vType, vDomEvent, vDomTarget, vTarget, vOriginalTarget);
+
+ this.setKeyCode(vKeyCode);
+ this.setCharCode(vCharCode);
+ this.setKeyIdentifier(vKeyIdentifier);
+});
+
+/**
+ * Legacy keycode
+ * @deprecated Will be removed with qooxdoo 0.7
+ */
+qx.OO.addFastProperty({ name : "keyCode", setOnlyOnce : true, noCompute : true });
+
+/**
+ * Unicode number of the pressed character.
+ * Only valid in "keyinput" events
+ */
+qx.OO.addFastProperty({ name : "charCode", setOnlyOnce : true, noCompute : true });
+
+/**
+ * Identifier of the pressed key.
+ * Not Valid in "keyinput" events"
+ */
+qx.OO.addFastProperty({ name : "keyIdentifier", setOnlyOnce : true, noCompute : true });
+
+
+
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ CLASS PROPERTIES AND METHODS
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Mapping of the old key identifiers to the key codes
+ * @deprecated
+ */
+qx.event.type.KeyEvent.keys =
+{
+ esc : 27,
+ enter : 13,
+ tab : 9,
+ space : 32,
+
+ up : 38,
+ down : 40,
+ left : 37,
+ right : 39,
+
+ shift : 16,
+ ctrl : 17,
+ alt : 18,
+
+ f1 : 112,
+ f2 : 113,
+ f3 : 114,
+ f4 : 115,
+ f5 : 116,
+ f6 : 117,
+ f7 : 118,
+ f8 : 119,
+ f9 : 120,
+ f10 : 121,
+ f11 : 122,
+ f12 : 123,
+
+ print : 124,
+
+ del : 46,
+ backspace : 8,
+ insert : 45,
+ home : 36,
+ end : 35,
+
+ pageup : 33,
+ pagedown : 34,
+
+ numlock : 144,
+
+ numpad_0 : 96,
+ numpad_1 : 97,
+ numpad_2 : 98,
+ numpad_3 : 99,
+ numpad_4 : 100,
+ numpad_5 : 101,
+ numpad_6 : 102,
+ numpad_7 : 103,
+ numpad_8 : 104,
+ numpad_9 : 105,
+
+ numpad_divide : 111,
+ numpad_multiply : 106,
+ numpad_minus : 109,
+ numpad_plus : 107
+};
+
+// create dynamic codes copy
+(function() {
+ qx.event.type.KeyEvent.codes = {};
+ for (var i in qx.event.type.KeyEvent.keys) {
+ qx.event.type.KeyEvent.codes[qx.event.type.KeyEvent.keys[i]] = i;
+ }
+})();
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/MouseEvent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/MouseEvent.js
new file mode 100644
index 0000000000..55e32e98f8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/event/type/MouseEvent.js
@@ -0,0 +1,309 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/*!
+ A mouse event instance contains all data for each occured mouse event
+*/
+qx.OO.defineClass("qx.event.type.MouseEvent", qx.event.type.DomEvent,
+function(vType, vDomEvent, vDomTarget, vTarget, vOriginalTarget, vRelatedTarget)
+{
+ qx.event.type.DomEvent.call(this, vType, vDomEvent, vDomTarget, vTarget, vOriginalTarget);
+
+ if (vRelatedTarget) {
+ this.setRelatedTarget(vRelatedTarget);
+ }
+});
+
+qx.Class.C_BUTTON_LEFT = "left";
+qx.Class.C_BUTTON_MIDDLE = "middle";
+qx.Class.C_BUTTON_RIGHT = "right";
+qx.Class.C_BUTTON_NONE = "none";
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ CLASS PROPERTIES AND METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.event.type.MouseEvent._screenX = qx.event.type.MouseEvent._screenY = qx.event.type.MouseEvent._clientX = qx.event.type.MouseEvent._clientY = qx.event.type.MouseEvent._pageX = qx.event.type.MouseEvent._pageY = 0;
+qx.event.type.MouseEvent._button = null;
+
+qx.event.type.MouseEvent._storeEventState = function(e)
+{
+ qx.event.type.MouseEvent._screenX = e.getScreenX();
+ qx.event.type.MouseEvent._screenY = e.getScreenY();
+ qx.event.type.MouseEvent._clientX = e.getClientX();
+ qx.event.type.MouseEvent._clientY = e.getClientY();
+ qx.event.type.MouseEvent._pageX = e.getPageX();
+ qx.event.type.MouseEvent._pageY = e.getPageY();
+ qx.event.type.MouseEvent._button = e.getButton();
+}
+
+qx.event.type.MouseEvent.getScreenX = function() { return qx.event.type.MouseEvent._screenX; }
+qx.event.type.MouseEvent.getScreenY = function() { return qx.event.type.MouseEvent._screenY; }
+qx.event.type.MouseEvent.getClientX = function() { return qx.event.type.MouseEvent._clientX; }
+qx.event.type.MouseEvent.getClientY = function() { return qx.event.type.MouseEvent._clientY; }
+qx.event.type.MouseEvent.getPageX = function() { return qx.event.type.MouseEvent._pageX; }
+qx.event.type.MouseEvent.getPageY = function() { return qx.event.type.MouseEvent._pageY; }
+qx.event.type.MouseEvent.getButton = function() { return qx.event.type.MouseEvent._button; }
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.event.type.MouseEvent.buttons = { left : 1, right : 2, middle : 4 }
+}
+else
+{
+ qx.event.type.MouseEvent.buttons = { left : 0, right : 2, middle : 1 }
+}
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ SCREEN COORDINATES SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getScreenX = function() {
+ return this.getDomEvent().screenX;
+}
+
+qx.Proto.getScreenY = function() {
+ return this.getDomEvent().screenY;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PAGE COORDINATES SUPPORT
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+qx.OO.addFastProperty({ name : "pageX", readOnly : true });
+qx.OO.addFastProperty({ name : "pageY", readOnly : true });
+
+ if (qx.sys.Client.getInstance().isInQuirksMode())
+ {
+ qx.Proto._computePageX = function() {
+ return this.getDomEvent().clientX + document.documentElement.scrollLeft;
+ }
+
+ qx.Proto._computePageY = function() {
+ return this.getDomEvent().clientY + document.documentElement.scrollTop;
+ }
+ }
+ else
+ {
+ qx.Proto._computePageX = function() {
+ return this.getDomEvent().clientX + document.body.scrollLeft;
+ }
+
+ qx.Proto._computePageY = function() {
+ return this.getDomEvent().clientY + document.body.scrollTop;
+ }
+ }
+}
+else if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto.getPageX = function() {
+ return this.getDomEvent().pageX;
+ }
+
+ qx.Proto.getPageY = function() {
+ return this.getDomEvent().pageY;
+ }
+}
+else
+{
+ qx.Proto.getPageX = function() {
+ return this.getDomEvent().clientX;
+ }
+
+ qx.Proto.getPageY = function() {
+ return this.getDomEvent().clientY;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLIENT COORDINATES SUPPORT
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto.getClientX = function() {
+ return this.getDomEvent().clientX;
+ }
+
+ qx.Proto.getClientY = function() {
+ return this.getDomEvent().clientY;
+ }
+}
+else
+{
+qx.OO.addFastProperty({ name : "clientX", readOnly : true });
+qx.OO.addFastProperty({ name : "clientY", readOnly : true });
+
+ qx.Proto._computeClientX = function() {
+ return this.getDomEvent().clientX + (document.body && document.body.scrollLeft != null ? document.body.scrollLeft : 0);
+ }
+
+ qx.Proto._computeClientY = function() {
+ return this.getDomEvent().clientY + (document.body && document.body.scrollTop != null ? document.body.scrollTop : 0);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BUTTON SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addFastProperty({ name : "button", readOnly : true });
+
+// IE does not set e.button in click events
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.isLeftButtonPressed = function() {
+ if (this.getType() == "click") {
+ return true;
+ } else {
+ return this.getButton() === qx.event.type.MouseEvent.C_BUTTON_LEFT;
+ }
+ }
+}
+else
+{
+ qx.Proto.isLeftButtonPressed = function() {
+ return this.getButton() === qx.event.type.MouseEvent.C_BUTTON_LEFT;
+ }
+}
+
+qx.Proto.isMiddleButtonPressed = function() {
+ return this.getButton() === qx.event.type.MouseEvent.C_BUTTON_MIDDLE;
+}
+
+qx.Proto.isRightButtonPressed = function() {
+ return this.getButton() === qx.event.type.MouseEvent.C_BUTTON_RIGHT;
+}
+
+qx.Proto._computeButton = function() {
+ var e = this.getDomEvent();
+ if (e.which) {
+ switch (e.which) {
+ case 1:
+ return qx.event.type.MouseEvent.C_BUTTON_LEFT;
+
+ case 3:
+ return qx.event.type.MouseEvent.C_BUTTON_RIGHT;
+
+ case 2:
+ return qx.event.type.MouseEvent.C_BUTTON_MIDDLE;
+
+ default:
+ return qx.event.type.MouseEvent.C_BUTTON_NONE;
+
+ }
+ } else {
+ switch(e.button) {
+ case 1:
+ return qx.event.type.MouseEvent.C_BUTTON_LEFT;
+
+ case 2:
+ return qx.event.type.MouseEvent.C_BUTTON_RIGHT;
+
+ case 4:
+ return qx.event.type.MouseEvent.C_BUTTON_MIDDLE;
+
+ default:
+ return qx.event.type.MouseEvent.C_BUTTON_NONE;
+ }
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WHEEL SUPPORT
+---------------------------------------------------------------------------
+*/
+
+// Implementation differences: http://ajaxian.com/archives/javascript-and-mouse-wheels
+
+qx.OO.addFastProperty({ name : "wheelDelta", readOnly : true });
+
+if(qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._computeWheelDelta = function() {
+ return this.getDomEvent().wheelDelta / 120;
+ }
+}
+else if(qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto._computeWheelDelta = function() {
+ return -this.getDomEvent().wheelDelta / 120;
+ }
+}
+else
+{
+ qx.Proto._computeWheelDelta = function() {
+ return -this.getDomEvent().detail / 3;
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/Json.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/Json.js
new file mode 100644
index 0000000000..d74a502952
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/Json.js
@@ -0,0 +1,385 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ <sebastian dot werner at 1und1 dot de>
+ * Andreas Ecker (ecker)
+ <andreas dot ecker at 1und1 dot de>
+ * Andreas Junghans (lucidcake)
+ <andreas dot junghans at stz-ida dot de>
+ * Derrell Lipman
+ <derrell dot lipman at unwireduniverse dot com>
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+
+
+/*
+Copyright (c) 2005 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+
+/**
+ * This is a slightly modified JSON implementation that supports Dates and
+ * treats undefined like null.
+ */
+
+qx.OO.defineClass("qx.io.Json");
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("encodeUndefined", true);
+qx.Settings.setDefault("enableDebug", false);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+qx.io.Json = function ()
+{
+ var m = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ s = {
+ 'boolean': function (x) {
+ return String(x);
+ },
+
+ number: function (x) {
+ return isFinite(x) ? String(x) : 'null';
+ },
+
+ string: function (x) {
+ if (/["\\\x00-\x1f]/.test(x)) {
+ x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
+ var c = m[b];
+ if (c) {
+ return c;
+ }
+ c = b.charCodeAt();
+ return '\\u00' +
+ Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ });
+ }
+ return '"' + x + '"';
+ },
+
+ object: function (x) {
+ if (x) {
+ var a = [], b, f, i, l, v;
+ if (x instanceof Array) {
+ var beautify = qx.io.Json._beautify;
+ a[0] = '[';
+ if (beautify) {
+ qx.io.Json._indent += qx.io.Json.BEAUTIFYING_INDENT;
+ a.push(qx.io.Json._indent);
+ }
+ l = x.length;
+ for (i = 0; i < l; i += 1) {
+ v = x[i];
+ f = s[typeof v];
+ if (f) {
+ v = f(v);
+ if (typeof v == 'string') {
+ if (b) {
+ a[a.length] = ',';
+ if (beautify) {
+ a.push(qx.io.Json._indent);
+ }
+ }
+ a[a.length] = v;
+ b = true;
+ }
+ }
+ }
+ if (beautify) {
+ qx.io.Json._indent = qx.io.Json._indent.substring(0, qx.io.Json._indent.length - qx.io.Json.BEAUTIFYING_INDENT.length);
+ a.push(qx.io.Json._indent);
+ }
+ a[a.length] = ']';
+ // AJ, DJL --
+ } else if (x instanceof Date) {
+ /*
+ * The Date object is a primitive type in Javascript,
+ * but the Javascript specification neglects to provide
+ * a literal form for it. The only way to generate a
+ * Date object is with "new Date()". For fast
+ * processing by Javascript, we want to be able to
+ * eval() a JSON response. If Date objects are to be
+ * passed to the client using JSON, about the only
+ * reasonable way to do it is to have "new Date()"
+ * in the JSON message. See this page for a proposal to
+ * add a Date literal syntax to Javascript which,
+ * if/when implemented in Javascript, would eliminate
+ * the need to pass "new Date() in JSON":
+ *
+ * http://www.hikhilk.net/DateSyntaxForJSON.aspx
+ *
+ * Sending a JSON message from client to server, we have
+ * no idea what language the server will be written in,
+ * what size integers it supports, etc. We do want to
+ * be able to represent as large a range of dates as
+ * possible, though. If we were to send the number of
+ * milliseconds since the beginning of the epoch, the
+ * value would exceed, in many cases, what can fit in a
+ * 32-bit integer. Even if one were to simply strip off
+ * the last three digits (milliseconds), the number of
+ * seconds could exceed a 32-bit signed integer's range
+ * with very distant past or distant future dates. To
+ * make it easier for any generic server to handle a
+ * date without risk of loss of precision due to
+ * automatic type casting, we'll send a UTC date with
+ * separated fields, in the form:
+ *
+ * new Date(Date.UTC(year,month,day,hour,min,sec,ms))
+ *
+ * The server can fairly easily parse this in its JSON
+ * implementation by stripping off "new Date(Date.UTC("
+ * from the beginning of the string, and "))" from the
+ * end of the string. What remains is the set of
+ * comma-separated date components, which are also very
+ * easy to parse.
+ *
+ * The server should send this same format to the
+ * client, which can simply eval() it just as with the
+ * remainder of JSON.
+ *
+ * A requirement of the implementation of the server is
+ * that after a date has been sent from the client to
+ * the server, converted by the server into whatever
+ * native type the date will be stored or manipulated
+ * in, convered back to JSON, and received back at the
+ * client, a comparison of the sent and received Date
+ * object should yield identity. This means that even
+ * if the server does not natively operate on
+ * milliseconds, it must maintain milliseconds in dates
+ * sent to it by the client.
+ */
+ var dateParams =
+ x.getUTCFullYear() + "," +
+ x.getUTCMonth() + "," +
+ x.getUTCDate() + "," +
+ x.getUTCHours() + "," +
+ x.getUTCMinutes() + "," +
+ x.getUTCSeconds() + "," +
+ x.getUTCMilliseconds();
+ return "new Date(Date.UTC(" + dateParams + "))";
+ // -- AJ, DJL
+ } else if (x instanceof Object) {
+ var beautify = qx.io.Json._beautify;
+ a[0] = '{';
+ if (beautify) {
+ qx.io.Json._indent += qx.io.Json.BEAUTIFYING_INDENT;
+ a.push(qx.io.Json._indent);
+ }
+ for (i in x) {
+ v = x[i];
+ f = s[typeof v];
+ if (f) {
+ v = f(v);
+ if (typeof v == 'string') {
+ if (b) {
+ a[a.length] = ',';
+ if (beautify) {
+ a.push(qx.io.Json._indent);
+ }
+ }
+ a.push(s.string(i), ':', v);
+ b = true;
+ }
+ }
+ }
+ if (beautify) {
+ qx.io.Json._indent = qx.io.Json._indent.substring(0, qx.io.Json._indent.length - qx.io.Json.BEAUTIFYING_INDENT.length);
+ a.push(qx.io.Json._indent);
+ }
+ a[a.length] = '}';
+ } else {
+ return;
+ }
+ return a.join('');
+ }
+ return 'null';
+ },
+
+ // AJ, DJL --
+ undefined: function(x) {
+ if (qx.Settings.getValueOfClass("qx.io.Json", "encodeUndefined"))
+ return 'null';
+ }
+ // -- AJ, DJL
+ }
+
+ return {
+ copyright: '(c)2005 JSON.org',
+ license: 'http://www.JSON.org/license.html',
+
+ /**
+ * Stringify a JavaScript value, producing a JSON text.
+ *
+ * @param v {var} the object to serialize.
+ * @param beautify {boolean ? false} whether to beautify the serialized string
+ * by adding some white space that indents objects and arrays.
+ * @return {string} the serialized object.
+ */
+ stringify: function (v, beautify) {
+ this._beautify = beautify;
+ this._indent = this.BEAUTIFYING_LINE_END;
+
+ var f = s[typeof v];
+ // AJ, DJL --
+ var ret = null;
+ // -- AJ, DJL
+ if (f) {
+ v = f(v);
+ if (typeof v == 'string') {
+ // DJL --
+ ret = v;
+ // -- DJL
+ }
+ }
+
+ // DJL --
+ if (qx.Settings.getValueOfClass("qx.io.Json", "enableDebug")) {
+ var logger = qx.dev.log.Logger.getClassLogger(qx.core.Object);
+ logger.debug("JSON request: " + ret);
+ }
+
+ return ret;
+ // -- DJL
+ },
+/*
+ Parse a JSON text, producing a JavaScript value.
+ It returns false if there is a syntax error.
+*/
+ parse: function (text) {
+ try {
+ return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
+ text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
+ eval('(' + text + ')');
+ } catch (e) {
+ return false;
+ }
+ }
+ }
+}();
+
+
+///*
+// * Recursively descend through an object looking for any class hints. Right
+// * now, the only class hint we support is 'Date' which can not be easily sent
+// * from javascript to an arbitrary (e.g. PHP) JSON-RPC server and back again
+// * without truncation or modification.
+// */
+//qx.io.Json._fixObj = function(obj) {
+// /* If there's a class hint... */
+// if (obj.__jsonclass__)
+// {
+// /* ... then check for supported classes. We support only Date. */
+// if (obj.__jsonclass__ == "Date" && obj.secSinceEpoch && obj.msAdditional)
+// {
+// /* Found a Date. Replace class hint object with a Date object. */
+// obj = new Date((obj.secSinceEpoch * 1000) + obj.msAdditional);
+// return obj;
+// }
+// }
+//
+// /*
+// * It wasn't something with a supported class hint, so recursively descend
+// */
+// for (var member in obj) {
+// thisObj = obj[member];
+// if (typeof thisObj == 'object' && thisObj !== null) {
+// obj[member] = qx.io.Json._fixObj(thisObj);
+// }
+// }
+//
+// return obj;
+//}
+
+
+/**
+ * Parse a JSON text, producing a JavaScript value.
+ * It triggers an exception if there is a syntax error.
+ */
+qx.io.Json.parseQx = function(text) {
+ /* Convert the result text into a result primitive or object */
+
+ if (qx.Settings.getValueOfClass("qx.io.Json", "enableDebug")) {
+ var logger = qx.dev.log.Logger.getClassLogger(qx.core.Object);
+ logger.debug("JSON response: " + text);
+ }
+
+ var obj = (text && text.length > 0) ? eval('(' + text + ')') : null;
+
+// /*
+// * Something like this fixObj() call may be used later when we want to
+// * support class hints. For now, ignore that code
+// */
+//
+// /* If it's an object, not null, and contains a "result" field.. */
+// if (typeof obj == 'object' && obj !== null && obj.result) {
+// /* ... then 'fix' the result by handling any supported class hints */
+// obj.result = qx.io.Json._fixObj(obj.result);
+// }
+
+ return obj;
+}
+
+qx.io.Json.BEAUTIFYING_INDENT = " ";
+
+qx.io.Json.BEAUTIFYING_LINE_END = "\n";
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/Preloader.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/Preloader.js
new file mode 100644
index 0000000000..928795cc01
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/Preloader.js
@@ -0,0 +1,197 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/**
+ * This is the preloader used from qx.ui.basic.Image instances.
+ *
+ * @event load {qx.event.type.Event}
+ * @event error {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.io.image.Preloader", qx.core.Target,
+function(vSource)
+{
+ if(qx.manager.object.ImagePreloaderManager.getInstance().has(vSource))
+ {
+ this.debug("Reuse qx.io.image.Preloader in old-style!");
+ this.debug("Please use qx.manager.object.ImagePreloaderManager.getInstance().create(source) instead!");
+
+ return qx.manager.object.ImagePreloaderManager.getInstance().get(vSource);
+ }
+
+ qx.core.Target.call(this);
+
+ // Create Image-Node
+ // Does not work with document.createElement("img") in Webkit. Interesting.
+ // Compare this to the bug in qx.ui.basic.Image.
+ this._element = new Image;
+
+ // This is needed for wrapping event to the object
+ this._element.qx_ImagePreloader = this;
+
+ // Define handler if image events occurs
+ if (qx.sys.Client.getInstance().isWebkit())
+ {
+ // Webkit as of version 41xxx
+ // does not get the target right. We need to help out a bit
+ // ugly closure!
+ var self = this;
+ this._element.onload = function(e) {
+ return self._onload(e);
+ };
+ this._element.onerror = function(e) {
+ return self._onerror(e);
+ };
+ }
+ else
+ {
+ this._element.onload = qx.io.image.Preloader.__onload;
+ this._element.onerror = qx.io.image.Preloader.__onerror;
+ }
+
+ // Set Source
+ this._source = vSource;
+ this._element.src = vSource;
+
+ // Set PNG State
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ this._isPng = /\.png$/i.test(this._element.nameProp);
+ }
+
+ qx.manager.object.ImagePreloaderManager.getInstance().add(this);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE MANAGERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._source = null;
+qx.Proto._isLoaded = false;
+qx.Proto._isErroneous = false;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CROSSBROWSER GETTERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getUri = function() { return this._source; };
+qx.Proto.getSource = function() { return this._source; };
+qx.Proto.isLoaded = function() { return this._isLoaded; };
+qx.Proto.isErroneous = function() { return this._isErroneous; };
+
+// only used in mshtml: true when the image format is in png
+qx.Proto._isPng = false;
+qx.Proto.getIsPng = function() { return this._isPng; };
+
+if(qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto.getWidth = function() { return this._element.naturalWidth; };
+ qx.Proto.getHeight = function() { return this._element.naturalHeight; };
+}
+else
+{
+ qx.Proto.getWidth = function() { return this._element.width; };
+ qx.Proto.getHeight = function() { return this._element.height; };
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT MAPPING
+---------------------------------------------------------------------------
+*/
+
+qx.io.image.Preloader.__onload = function(e) { this.qx_ImagePreloader._onload(); };
+qx.io.image.Preloader.__onerror = function(e) { this.qx_ImagePreloader._onerror(); };
+
+qx.Proto._onload = function()
+{
+ if (this._isLoaded || this._isErroneous) {
+ return;
+ }
+
+ this._isLoaded = true;
+ this._isErroneous = false;
+
+ if (this.hasEventListeners("load")) {
+ this.dispatchEvent(new qx.event.type.Event("load"), true);
+ }
+}
+
+qx.Proto._onerror = function()
+{
+ if (this._isLoaded || this._isErroneous) {
+ return;
+ }
+
+ this.debug("Could not load: " + this._source);
+
+ this._isLoaded = false;
+ this._isErroneous = true;
+
+ if (this.hasEventListeners("error")) {
+ this.dispatchEvent(new qx.event.type.Event("error"), true);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ if (this._element)
+ {
+ this._element.onload = this._element.onerror = null;
+ this._element.qx_ImagePreloader = null;
+ this._element = null;
+ }
+
+ this._isLoaded = this._isErroneous = this._isPng = false;
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/PreloaderSystem.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/PreloaderSystem.js
new file mode 100755
index 0000000000..ef1356dc52
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/image/PreloaderSystem.js
@@ -0,0 +1,187 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/**
+ * @event completed {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.io.image.PreloaderSystem", qx.core.Target,
+function(vPreloadList, vCallBack, vCallBackScope)
+{
+ qx.core.Target.call(this);
+
+ this._list = vPreloadList;
+
+ // Create timer
+ this._timer = new qx.client.Timer(this.getSetting("timeout"));
+ this._timer.addEventListener("interval", this._oninterval, this);
+
+ // If we use the compact syntax, automatically add an event listeners and start the loading process
+ if (vCallBack)
+ {
+ this.addEventListener("completed", vCallBack, vCallBackScope || null);
+ this.start();
+ }
+});
+
+qx.Proto._stopped = false;
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("timeout", 3000);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER ACCESS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.start = function()
+{
+ if (qx.lang.Object.isEmpty(this._list))
+ {
+ this.createDispatchEvent("completed");
+ return;
+ }
+
+ for (var vSource in this._list)
+ {
+ var vPreloader = qx.manager.object.ImagePreloaderManager.getInstance().create(qx.manager.object.AliasManager.getInstance().resolvePath(vSource));
+
+ if (vPreloader.isErroneous() || vPreloader.isLoaded())
+ {
+ delete this._list[vSource];
+ }
+ else
+ {
+ vPreloader._origSource = vSource;
+
+ vPreloader.addEventListener("load", this._onload, this);
+ vPreloader.addEventListener("error", this._onerror, this);
+ }
+ }
+
+ // Initial check
+ this._check();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onload = function(e)
+{
+ delete this._list[e.getTarget()._origSource];
+ this._check();
+}
+
+qx.Proto._onerror = function(e)
+{
+ delete this._list[e.getTarget()._origSource];
+ this._check();
+}
+
+qx.Proto._oninterval = function(e)
+{
+ this.error("Could not preload: " + qx.lang.Object.getKeysAsString(this._list));
+
+ this._stopped = true;
+ this._timer.stop();
+
+ this.createDispatchEvent("completed");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHECK
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._check = function()
+{
+ if (this._stopped) {
+ return;
+ }
+
+ // this.debug("Check: " + qx.lang.Object.getKeysAsString(this._list));
+
+ if (qx.lang.Object.isEmpty(this._list))
+ {
+ this._timer.stop();
+ this.createDispatchEvent("completed");
+ }
+ else
+ {
+ // Restart timer for timeout
+ this._timer.restart();
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this._list = null;
+
+ if (this._timer)
+ {
+ this._timer.dispose();
+ this._timer = null;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieApi.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieApi.js
new file mode 100755
index 0000000000..23d3c928a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieApi.js
@@ -0,0 +1,139 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.io.local.CookieApi",
+{
+ STR_EXPIRES : "expires",
+ STR_PATH : "path",
+ STR_DOMAIN : "domain",
+ STR_SECURE : "secure",
+ STR_DELDATA : "Thu, 01-Jan-1970 00:00:01 GMT"
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER APPLICATION METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Class.get = function(vName)
+{
+ var start = document.cookie.indexOf(vName + "=");
+ var len = start + vName.length + 1;
+
+ if ((!start) && (vName != document.cookie.substring(0, vName.length))) {
+ return null;
+ }
+
+ if (start == -1) {
+ return null;
+ }
+
+ var end = document.cookie.indexOf(";", len);
+
+ if (end == -1) {
+ end = document.cookie.length;
+ }
+
+ return unescape(document.cookie.substring(len, end));
+}
+
+qx.Class.set = function(vName, vValue, vExpires, vPath, vDomain, vSecure)
+{
+ var today = new Date();
+ today.setTime(today.getTime());
+
+ // Generate cookie
+ var vCookie = [ vName, "=", escape(vValue) ];
+
+ if (vExpires)
+ {
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_EXPIRES);
+ vCookie.push("=");
+ vCookie.push(new Date(today.getTime() + (vExpires * 1000 * 60 * 60 * 24)).toGMTString());
+ }
+
+ if (vPath)
+ {
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_PATH);
+ vCookie.push("=");
+ vCookie.push(vPath);
+ }
+
+ if (vDomain)
+ {
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_DOMAIN);
+ vCookie.push("=");
+ vCookie.push(vDomain);
+ }
+
+ if (vSecure)
+ {
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_SECURE);
+ }
+
+ // Store cookie
+ document.cookie = vCookie.join("");
+}
+
+qx.Class.del = function(vName, vPath, vDomain)
+{
+ if (!qx.io.local.CookieApi.get(vName)) {
+ return;
+ }
+
+ // Generate cookie
+ var vCookie = [ vName, "=" ];
+
+ if (vPath)
+ {
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_PATH);
+ vCookie.push("=");
+ vCookie.push(vPath);
+ }
+
+ if (vDomain)
+ {
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_DOMAIN);
+ vCookie.push("=");
+ vCookie.push(vDomain);
+ }
+
+ vCookie.push(";");
+ vCookie.push(qx.io.local.CookieApi.STR_EXPIRES);
+ vCookie.push("=");
+ vCookie.push(qx.io.local.CookieApi.STR_DELDATA);
+
+ // Store cookie
+ document.cookie = vCookie.join("");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieTransport.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieTransport.js
new file mode 100755
index 0000000000..b837eb7f6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/local/CookieTransport.js
@@ -0,0 +1,181 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.io.local.CookieTransport",
+{
+ BASENAME : "qx",
+ ITEMSEPARATOR : "&",
+ KEYVALUESEPARATOR : "=",
+ MAXCOOKIES : 20,
+ MAXSIZE : 4096
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER APPLICATION METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Class.set = function(vName, vValue)
+{
+ if (!qx.util.Validation.isValid(vValue)) {
+ return qx.io.local.CookieTransport.del(vName);
+ }
+
+ var vAll = qx.io.local.CookieTransport._getAll();
+ vAll[vName] = vValue;
+ this._setAll(vAll);
+}
+
+qx.Class.get = function(vName)
+{
+ var vAll = qx.io.local.CookieTransport._getAll();
+
+ var vValue = qx.io.local.CookieTransport._getAll()[vName];
+ if (qx.util.Validation.isValidString(vValue)) {
+ return vValue;
+ }
+
+ return "";
+}
+
+qx.Class.del = function(vName)
+{
+ var vAll = qx.io.local.CookieTransport._getAll();
+ delete vAll[vName];
+ this._setAll(vAll);
+}
+
+qx.Class.setAll = function(vHash)
+{
+ var vAll = qx.io.local.CookieTransport._getAll();
+ vAll = qx.lang.Object.mergeWith(vAll, vHash);
+ qx.io.local.CookieTransport._setAll(vAll);
+}
+
+qx.Class.getAll = function() {
+ return qx.io.local.CookieTransport._getAll();
+}
+
+qx.Class.replaceAll = function(vHash) {
+ qx.io.local.CookieTransport._setAll(vHash);
+}
+
+qx.Class.delAll = function() {
+ qx.io.local.CookieTransport.replaceAll({});
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOW LEVEL INTERNAL METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Class._getAll = function()
+{
+ var vHash = {};
+ var vCookie, vItems, vItem;
+
+ for (var i=0; i<qx.io.local.CookieTransport.MAXCOOKIES; i++)
+ {
+ vCookie = qx.io.local.CookieApi.get(qx.io.local.CookieTransport.BASENAME + i);
+ if (vCookie)
+ {
+ vItems = vCookie.split(qx.io.local.CookieTransport.ITEMSEPARATOR);
+ for (var j=0, l=vItems.length; j<l; j++)
+ {
+ vItem = vItems[j].split(qx.io.local.CookieTransport.KEYVALUESEPARATOR);
+ vHash[vItem[0]] = vItem[1];
+ }
+ }
+ }
+
+ return vHash;
+}
+
+qx.Class._setAll = function(vHash)
+{
+ var vString = "";
+ var vTemp;
+ var vIndex = 0;
+
+ for (var vName in vHash)
+ {
+ vTemp = vName + qx.io.local.CookieTransport.KEYVALUESEPARATOR + vHash[vName];
+
+ if (vTemp.length > qx.io.local.CookieTransport.MAXSIZE)
+ {
+ qx.dev.log.Logger.getClassLogger(qx.io.local.CookieTransport).debug("Could not store value of name '" + vName + "': Maximum size of " + qx.io.local.CookieTransport.MAXSIZE + "reached!");
+ continue;
+ }
+
+ if ((qx.io.local.CookieTransport.ITEMSEPARATOR.length + vString.length + vTemp.length) > qx.io.local.CookieTransport.MAXSIZE)
+ {
+ qx.io.local.CookieTransport._setCookie(vIndex++, vString);
+
+ if (vIndex == qx.io.local.CookieTransport.MAXCOOKIES)
+ {
+ qx.dev.log.Logger.getClassLogger(qx.io.local.CookieTransport).debug("Failed to store cookie. Max cookie amount reached!", "error");
+ return false;
+ }
+
+ vString = vTemp;
+ }
+ else
+ {
+ if (vString != "") {
+ vString += qx.io.local.CookieTransport.ITEMSEPARATOR;
+ }
+
+ vString += vTemp;
+ }
+ }
+
+ if (vString != "") {
+ qx.io.local.CookieTransport._setCookie(vIndex++, vString);
+ }
+
+ while (vIndex < qx.io.local.CookieTransport.MAXCOOKIES) {
+ qx.io.local.CookieTransport._delCookie(vIndex++);
+ }
+}
+
+qx.Class._setCookie = function(vIndex, vString)
+{
+ // qx.dev.log.Logger.getClassLogger(qx.io.local.CookieTransport).debug("Store: " + vIndex + " = " + vString);
+ qx.io.local.CookieApi.set(qx.io.local.CookieTransport.BASENAME + vIndex, vString);
+}
+
+qx.Class._delCookie = function(vIndex)
+{
+ // qx.dev.log.Logger.getClassLogger(qx.io.local.CookieTransport).debug("Delete: " + vIndex);
+ qx.io.local.CookieApi.del(qx.io.local.CookieTransport.BASENAME + vIndex);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/AbstractRemoteTransport.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/AbstractRemoteTransport.js
new file mode 100644
index 0000000000..2232394dea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/AbstractRemoteTransport.js
@@ -0,0 +1,328 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+
+/**
+ * @event created {qx.event.type.Event}
+ * @event configured {qx.event.type.Event}
+ * @event sending {qx.event.type.Event}
+ * @event receiving {qx.event.type.Event}
+ * @event completed {qx.event.type.Event}
+ * @event aborted {qx.event.type.Event}
+ * @event failed {qx.event.type.Event}
+ * @event timeout {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.io.remote.AbstractRemoteTransport", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+});
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Target url to issue the request to
+*/
+qx.OO.addProperty({ name : "url", type : "string" });
+
+/*!
+ Determines what type of request to issue
+*/
+qx.OO.addProperty({ name : "method", type : "string" });
+
+/*!
+ Set the request to asynchronous
+*/
+qx.OO.addProperty({ name : "asynchronous", type : "boolean" });
+
+/*!
+ Set the data to be sent via this request
+*/
+qx.OO.addProperty({ name : "data", type : "string" });
+
+/*!
+ Username to use for HTTP authentication
+*/
+qx.OO.addProperty({ name : "username", type : "string" });
+
+/*!
+ Password to use for HTTP authentication
+*/
+qx.OO.addProperty({ name : "password", type : "string" });
+
+/*!
+ The state of the current request
+*/
+qx.OO.addProperty(
+{
+ name : "state",
+ type : "string",
+ possibleValues : [
+ "created", "configured",
+ "sending", "receiving",
+ "completed", "aborted",
+ "timeout", "failed"
+ ],
+ defaultValue : "created"
+});
+
+/*!
+ Request headers
+*/
+qx.OO.addProperty({ name : "requestHeaders", type: "object" });
+
+/*!
+ Request parameters to send.
+*/
+qx.OO.addProperty({ name : "parameters", type: "object" });
+
+/*!
+ Response Type
+*/
+qx.OO.addProperty({ name : "responseType", type: "string" });
+
+/*!
+ Use Basic HTTP Authentication
+*/
+qx.OO.addProperty({ name : "useBasicHttpAuth", type : "boolean" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.send = function() {
+ throw new Error("send is abstract");
+}
+
+qx.Proto.abort = function()
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Aborting...");
+ }
+
+ this.setState("aborted");
+}
+
+/*!
+
+*/
+qx.Proto.timeout = function()
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Timeout...");
+ }
+
+ this.setState("timeout");
+}
+
+/*!
+
+ Force the transport into the failed state ("failed").
+
+ Listeners of the "failed" signal are notified about the event.
+*/
+qx.Proto.failed = function()
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Failed...");
+ }
+
+ this.setState("failed");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REQUEST HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+/*!
+ Add a request header to this transports qx.io.remote.Request.
+
+ This method is virtual and concrete subclasses are supposed to
+ implement it.
+*/
+qx.Proto.setRequestHeader = function(vLabel, vValue) {
+ throw new Error("setRequestHeader is abstract");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getResponseHeader = function(vLabel) {
+ throw new Error("getResponseHeader is abstract");
+}
+
+/*!
+ Provides an hash of all response headers.
+*/
+qx.Proto.getResponseHeaders = function() {
+ throw new Error("getResponseHeaders is abstract");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATUS SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Returns the current status code of the request if available or -1 if not.
+*/
+qx.Proto.getStatusCode = function() {
+ throw new Error("getStatusCode is abstract");
+}
+
+/*!
+ Provides the status text for the current request if available and null otherwise.
+*/
+qx.Proto.getStatusText = function() {
+ throw new Error("getStatusText is abstract");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE DATA SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Provides the response text from the request when available and null otherwise.
+ By passing true as the "partial" parameter of this method, incomplete data will
+ be made available to the caller.
+*/
+qx.Proto.getResponseText = function() {
+ throw new Error("getResponseText is abstract");
+}
+
+/*!
+ Provides the XML provided by the response if any and null otherwise.
+ By passing true as the "partial" parameter of this method, incomplete data will
+ be made available to the caller.
+*/
+qx.Proto.getResponseXml = function() {
+ throw new Error("getResponseXml is abstract");
+}
+
+/*!
+ Returns the length of the content as fetched thus far
+*/
+qx.Proto.getFetchedLength = function() {
+ throw new Error("getFetchedLength is abstract");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyState = function(propValue, propOldValue, propData)
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("State: " + propValue);
+ }
+
+ switch(propValue)
+ {
+ case "created":
+ this.createDispatchEvent("created");
+ break;
+
+ case "configured":
+ this.createDispatchEvent("configured");
+ break;
+
+ case "sending":
+ this.createDispatchEvent("sending");
+ break;
+
+ case "receiving":
+ this.createDispatchEvent("receiving");
+ break;
+
+ case "completed":
+ this.createDispatchEvent("completed");
+ break;
+
+ case "aborted":
+ this.createDispatchEvent("aborted");
+ break;
+
+ case "failed":
+ this.createDispatchEvent("failed");
+ break;
+
+ case "timeout":
+ this.createDispatchEvent("timeout");
+ break;
+ }
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Exchange.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Exchange.js
new file mode 100644
index 0000000000..d9f0738660
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Exchange.js
@@ -0,0 +1,704 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+ * Andreas Junghans (lucidcake)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+
+/**
+ * @event sending {qx.event.type.Event}
+ * @event receiving {qx.event.type.Event}
+ * @event completed {qx.event.type.Event}
+ * @event aborted {qx.event.type.Event}
+ * @event timeout {qx.event.type.Event}
+ * @event failed {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.io.remote.Exchange", qx.core.Target,
+function(vRequest)
+{
+ qx.core.Target.call(this);
+
+ this.setRequest(vRequest);
+ vRequest.setTransport(this);
+});
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("enableDebug", false);
+
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ TRANSPORT TYPE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.io.remote.Exchange.typesOrder = [ "qx.io.remote.XmlHttpTransport", "qx.io.remote.IframeTransport", "qx.io.remote.ScriptTransport" ];
+
+qx.io.remote.Exchange.typesReady = false;
+
+qx.io.remote.Exchange.typesAvailable = {};
+qx.io.remote.Exchange.typesSupported = {};
+
+qx.io.remote.Exchange.registerType = function(vClass, vId) {
+ qx.io.remote.Exchange.typesAvailable[vId] = vClass;
+}
+
+qx.io.remote.Exchange.initTypes = function()
+{
+ if (qx.io.remote.Exchange.typesReady) {
+ return;
+ }
+
+ for (var vId in qx.io.remote.Exchange.typesAvailable)
+ {
+ vTransporterImpl = qx.io.remote.Exchange.typesAvailable[vId];
+
+ if (vTransporterImpl.isSupported()) {
+ qx.io.remote.Exchange.typesSupported[vId] = vTransporterImpl;
+ }
+ }
+
+ qx.io.remote.Exchange.typesReady = true;
+
+ if (qx.lang.Object.isEmpty(qx.io.remote.Exchange.typesSupported)) {
+ throw new Error("No supported transport types were found!");
+ }
+}
+
+qx.io.remote.Exchange.canHandle = function(vImpl, vNeeds, vResponseType)
+{
+ if (!qx.lang.Array.contains(vImpl.handles.responseTypes, vResponseType)) {
+ return false;
+ }
+
+ for (var vKey in vNeeds)
+ {
+ if (!vImpl.handles[vKey]) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING
+---------------------------------------------------------------------------
+*/
+
+/*
+http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/0e6a34e4-f90c-489d-acff-cb44242fafc6.asp
+
+0: UNINITIALIZED
+The object has been created, but not initialized (the open method has not been called).
+
+1: LOADING
+The object has been created, but the send method has not been called.
+
+2: LOADED
+The send method has been called, but the status and headers are not yet available.
+
+3: INTERACTIVE
+Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.
+
+4: COMPLETED
+All the data has been received, and the complete data is available in the
+*/
+
+qx.io.remote.Exchange._nativeMap =
+{
+ 0 : "created",
+ 1 : "configured",
+ 2 : "sending",
+ 3 : "receiving",
+ 4 : "completed"
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILS
+---------------------------------------------------------------------------
+*/
+
+qx.io.remote.Exchange.wasSuccessful = function(vStatusCode, vReadyState, vIsLocal)
+{
+ if (vIsLocal)
+ {
+ switch(vStatusCode)
+ {
+ case null:
+ case 0:
+ return true;
+
+ case -1:
+ // Not Available (OK for readystates: MSXML<4=1-3, MSXML>3=1-2, Gecko=1)
+ return vReadyState < 4;
+
+ default:
+ // at least older versions of Safari don't set the status code for local file access
+ return typeof vStatusCode === "undefined";
+ }
+ }
+ else
+ {
+ switch(vStatusCode)
+ {
+ case -1: // Not Available (OK for readystates: MSXML<4=1-3, MSXML>3=1-2, Gecko=1)
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug") && vReadyState > 3) {
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.Exchange).debug("Failed with statuscode: -1 at readyState " + vReadyState);
+ }
+
+ return vReadyState < 4;
+
+
+ case 200: // OK
+ case 304: // Not Modified
+ return true;
+
+
+ case 201: // Created
+ case 202: // Accepted
+ case 203: // Non-Authoritative Information
+ case 204: // No Content
+ case 205: // Reset Content
+ return true;
+
+
+ case 206: // Partial Content
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug") && vReadyState === 4) {
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.Exchange).debug("Failed with statuscode: 206 (Partial content while being complete!)");
+ }
+
+ return vReadyState !== 4;
+
+
+ case 300: // Multiple Choices
+ case 301: // Moved Permanently
+ case 302: // Moved Temporarily
+ case 303: // See Other
+ case 305: // Use Proxy
+ case 400: // Bad Request
+ case 401: // Unauthorized
+ case 402: // Payment Required
+ case 403: // Forbidden
+ case 404: // Not Found
+ case 405: // Method Not Allowed
+ case 406: // Not Acceptable
+ case 407: // Proxy Authentication Required
+ case 408: // Request Time-Out
+ case 409: // Conflict
+ case 410: // Gone
+ case 411: // Length Required
+ case 412: // Precondition Failed
+ case 413: // Request Entity Too Large
+ case 414: // Request-URL Too Large
+ case 415: // Unsupported Media Type
+ case 500: // Server Error
+ case 501: // Not Implemented
+ case 502: // Bad Gateway
+ case 503: // Out of Resources
+ case 504: // Gateway Time-Out
+ case 505: // HTTP Version not supported
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.Exchange).debug("Failed with typical HTTP statuscode: " + vStatusCode);
+ }
+
+ return false;
+
+
+ // The following case labels are wininet.dll error codes that may be encountered.
+ // Server timeout
+ case 12002:
+ // 12029 to 12031 correspond to dropped connections.
+ case 12029:
+ case 12030:
+ case 12031:
+ // Connection closed by server.
+ case 12152:
+ // See above comments for variable status.
+ case 13030:
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.Exchange).debug("Failed with MSHTML specific HTTP statuscode: " + vStatusCode);
+ }
+
+ return false;
+
+
+ default:
+ // Handle all 20x status codes as OK as defined in the corresponding RFC
+ // http://www.w3.org/Protocols/rfc2616/rfc2616.html
+ if (vStatusCode > 206 && vStatusCode < 300) {
+ return true;
+ }
+
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.Exchange).debug("Unknown status code: " + vStatusCode + " (" + vReadyState + ")");
+ throw new Error("Unknown status code: " + vStatusCode);
+ }
+ }
+}
+
+
+qx.io.remote.Exchange.statusCodeToString = function(vStatusCode)
+{
+ switch(vStatusCode)
+ {
+ case -1: return "Not available";
+ case 200: return "Ok";
+ case 304: return "Not modified";
+ case 206: return "Partial content";
+ case 204: return "No content";
+ case 300: return "Multiple choices";
+ case 301: return "Moved permanently";
+ case 302: return "Moved temporarily";
+ case 303: return "See other";
+ case 305: return "Use proxy";
+ case 400: return "Bad request";
+ case 401: return "Unauthorized";
+ case 402: return "Payment required";
+ case 403: return "Forbidden";
+ case 404: return "Not found";
+ case 405: return "Method not allowed";
+ case 406: return "Not acceptable";
+ case 407: return "Proxy authentication required";
+ case 408: return "Request time-out";
+ case 409: return "Conflict";
+ case 410: return "Gone";
+ case 411: return "Length required";
+ case 412: return "Precondition failed";
+ case 413: return "Request entity too large";
+ case 414: return "Request-URL too large";
+ case 415: return "Unsupported media type";
+ case 500: return "Server error";
+ case 501: return "Not implemented";
+ case 502: return "Bad gateway";
+ case 503: return "Out of resources";
+ case 504: return "Gateway time-out";
+ case 505: return "HTTP version not supported";
+ case 12002: return "Server timeout";
+ case 12029: return "Connection dropped";
+ case 12030: return "Connection dropped";
+ case 12031: return "Connection dropped";
+ case 12152: return "Connection closed by server";
+ case 13030: return "MSHTML-specific HTTP status code";
+ default: return "Unknown status code";
+ }
+}
+
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Set the request to send with this transport.
+*/
+qx.OO.addProperty({ name : "request", type : "object", instance : "qx.io.remote.Request" });
+/*!
+ Set the implementation to use to send the request with.
+
+ The implementation should be a subclass of qx.io.remote.AbstractRemoteTransport and
+ must implement all methods in the transport API.
+*/
+qx.OO.addProperty({ name : "implementation", type : "object" });
+qx.OO.addProperty(
+{
+ name : "state",
+ type : "string",
+ possibleValues : [
+ "configured", "sending",
+ "receiving", "completed",
+ "aborted", "timeout",
+ "failed"
+ ],
+ defaultValue : "configured"
+});
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.send = function()
+{
+ var vRequest = this.getRequest();
+
+ if (!vRequest) {
+ return this.error("Please attach a request object first");
+ }
+
+ qx.io.remote.Exchange.initTypes();
+
+ var vUsage = qx.io.remote.Exchange.typesOrder;
+ var vSupported = qx.io.remote.Exchange.typesSupported;
+
+ // Mapping settings to contenttype and needs to check later
+ // if the selected transport implementation can handle
+ // fulfill these requirements.
+ var vResponseType = vRequest.getResponseType();
+ var vNeeds = {};
+
+ if (vRequest.getAsynchronous()) {
+ vNeeds.asynchronous = true;
+ } else {
+ vNeeds.synchronous = true;
+ }
+
+ if (vRequest.getCrossDomain()) {
+ vNeeds.crossDomain = true;
+ }
+
+ if (vRequest.getFileUpload()) {
+ vNeeds.fileUpload = true;
+ }
+
+ var vTransportImpl, vTransport;
+ for (var i=0, l=vUsage.length; i<l; i++)
+ {
+ vTransportImpl = vSupported[vUsage[i]];
+
+ if (vTransportImpl)
+ {
+ if (!qx.io.remote.Exchange.canHandle(vTransportImpl, vNeeds, vResponseType)) {
+ continue;
+ }
+
+ try
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("Using implementation: " + vTransportImpl.classname);
+ }
+
+ vTransport = new vTransportImpl;
+ this.setImplementation(vTransport);
+
+ vTransport.setUseBasicHttpAuth(vRequest.getUseBasicHttpAuth());
+
+ vTransport.send();
+ return true;
+ }
+ catch(ex)
+ {
+ return this.error("Request handler throws error", ex);
+ }
+ }
+ }
+
+ this.error("There is no transport implementation available to handle this request: " + vRequest);
+}
+/*!
+ Force the transport into the aborted ("aborted")
+ state.
+*/
+qx.Proto.abort = function()
+{
+ var vImplementation = this.getImplementation();
+
+ if (vImplementation)
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("Abort: implementation " + vImplementation.toHashCode());
+ }
+ vImplementation.abort();
+ }
+ else
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("Abort: forcing state to be aborted");
+ }
+ this.setState("aborted");
+ }
+}
+/*!
+ Force the transport into the timeout state.
+*/
+qx.Proto.timeout = function()
+{
+ var vImplementation = this.getImplementation();
+
+ if (vImplementation)
+ {
+ this.warn("Timeout: implementation " + vImplementation.toHashCode());
+ vImplementation.timeout();
+ }
+ else
+ {
+ this.warn("Timeout: forcing state to timeout");
+ this.setState("timeout");
+ }
+
+ // Disable future timeouts in case user handler blocks
+ if (this.getRequest()) {
+ this.getRequest().setTimeout(0);
+ }
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onsending = function(e) {
+ this.setState("sending");
+}
+
+qx.Proto._onreceiving = function(e) {
+ this.setState("receiving");
+}
+
+qx.Proto._oncompleted = function(e) {
+ this.setState("completed");
+}
+
+qx.Proto._onabort = function(e) {
+ this.setState("aborted");
+}
+
+qx.Proto._onfailed = function(e) {
+ this.setState("failed");
+}
+
+qx.Proto._ontimeout = function(e) {
+ this.setState("timeout");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyImplementation = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ propOldValue.removeEventListener("sending", this._onsending, this);
+ propOldValue.removeEventListener("receiving", this._onreceiving, this);
+ propOldValue.removeEventListener("completed", this._oncompleted, this);
+ propOldValue.removeEventListener("aborted", this._onabort, this);
+ propOldValue.removeEventListener("timeout", this._ontimeout, this);
+ propOldValue.removeEventListener("failed", this._onfailed, this);
+ }
+
+ if (propValue)
+ {
+ var vRequest = this.getRequest();
+
+ propValue.setUrl(vRequest.getUrl());
+ propValue.setMethod(vRequest.getMethod());
+ propValue.setAsynchronous(vRequest.getAsynchronous());
+
+ propValue.setUsername(vRequest.getUsername());
+ propValue.setPassword(vRequest.getPassword());
+
+ propValue.setParameters(vRequest.getParameters());
+ propValue.setRequestHeaders(vRequest.getRequestHeaders());
+ propValue.setData(vRequest.getData());
+
+ propValue.setResponseType(vRequest.getResponseType());
+
+ propValue.addEventListener("sending", this._onsending, this);
+ propValue.addEventListener("receiving", this._onreceiving, this);
+ propValue.addEventListener("completed", this._oncompleted, this);
+ propValue.addEventListener("aborted", this._onabort, this);
+ propValue.addEventListener("timeout", this._ontimeout, this);
+ propValue.addEventListener("failed", this._onfailed, this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyState = function(propValue, propOldValue, propData)
+{
+ var vRequest = this.getRequest();
+
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("State: " + propOldValue + " => " + propValue);
+ }
+
+ switch(propValue)
+ {
+ case "sending":
+ this.createDispatchEvent("sending");
+ break;
+
+ case "receiving":
+ this.createDispatchEvent("receiving");
+ break;
+
+ case "completed":
+ case "aborted":
+ case "timeout":
+ case "failed":
+ var vImpl = this.getImplementation();
+
+ if (! vImpl) {
+ // implementation has already been disposed
+ break;
+ }
+
+ var vResponse = new qx.io.remote.Response;
+
+ if (propValue == "completed") {
+ var vContent = vImpl.getResponseContent();
+ vResponse.setContent(vContent);
+
+ /*
+ * Was there acceptable content? This might occur, for example, if
+ * the web server was shut down unexpectedly and thus the connection
+ * closed with no data having been sent.
+ */
+ if (vContent === null) {
+ // Nope. Change COMPLETED to FAILED.
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("Altered State: " + propValue + " => failed");
+ }
+ propValue = "failed";
+ }
+ }
+
+ vResponse.setStatusCode(vImpl.getStatusCode());
+ vResponse.setResponseHeaders(vImpl.getResponseHeaders());
+
+ // this.debug("Result Text: " + vResponse.getTextContent());
+
+ var vEventType;
+
+ switch(propValue)
+ {
+ case "completed":
+ vEventType = "completed";
+ break;
+
+ case "aborted":
+ vEventType = "aborted";
+ break;
+
+ case "timeout":
+ vEventType = "timeout";
+ break;
+
+ case "failed":
+ vEventType = "failed";
+ break;
+ }
+
+ // Disconnect and dispose implementation
+ this.setImplementation(null);
+ vImpl.dispose();
+
+ // Fire event to listeners
+ this.createDispatchDataEvent(vEventType, vResponse);
+ break;
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ var vImpl = this.getImplementation();
+ if (vImpl)
+ {
+ this.setImplementation(null);
+ vImpl.dispose();
+ }
+
+ this.setRequest(null);
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/IframeTransport.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/IframeTransport.js
new file mode 100644
index 0000000000..29126c587b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/IframeTransport.js
@@ -0,0 +1,472 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+ * Andreas Junghans (lucidcake)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+#require(qx.io.remote.Exchange)
+
+************************************************************************ */
+
+/*!
+ Transports requests to a server using an IFRAME.
+
+ This class should not be used directly by client programmers.
+ */
+qx.OO.defineClass("qx.io.remote.IframeTransport", qx.io.remote.AbstractRemoteTransport,
+function()
+{
+ qx.io.remote.AbstractRemoteTransport.call(this);
+
+ var vUniqueId = (new Date).valueOf();
+ var vFrameName = "frame_" + vUniqueId;
+ var vFormName = "form_" + vUniqueId;
+
+ // Mshtml allows us to define a full HTML as a parameter for createElement.
+ // Using this method is the only (known) working to register the frame
+ // to the known elements of the Internet Explorer.
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ this._frame = document.createElement('<iframe name="' + vFrameName + '"></iframe>');
+ } else {
+ this._frame = document.createElement("iframe");
+ }
+
+ this._frame.src = "javascript:void(0)";
+ this._frame.id = this._frame.name = vFrameName;
+ this._frame.onload = function(e) { return o._onload(e); }
+
+ this._frame.style.display = "none";
+
+ document.body.appendChild(this._frame);
+
+ this._form = document.createElement("form");
+ this._form.target = vFrameName;
+ this._form.id = this._form.name = vFormName;
+
+ this._form.style.display = "none";
+
+ document.body.appendChild(this._form);
+
+ this._data = document.createElement("textarea");
+ this._data.id = this._data.name = "_data_";
+ this._form.appendChild(this._data);
+
+ var o = this;
+ this._frame.onreadystatechange = function(e) { return o._onreadystatechange(e); }
+});
+
+qx.Proto._lastReadyState = 0;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS PROPERTIES AND METHODS
+---------------------------------------------------------------------------
+*/
+
+// basic registration to qx.io.remote.Exchange
+// the real availability check (activeX stuff and so on) follows at the first real request
+qx.io.remote.Exchange.registerType(qx.io.remote.IframeTransport, "qx.io.remote.IframeTransport");
+
+qx.io.remote.IframeTransport.handles =
+{
+ synchronous : false,
+ asynchronous : true,
+ crossDomain : false,
+ fileUpload: true,
+ responseTypes : [ "text/plain", "text/javascript", "text/json", "application/xml", "text/html" ]
+}
+
+qx.io.remote.IframeTransport.isSupported = function() {
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.send = function()
+{
+ var vMethod = this.getMethod();
+ var vUrl = this.getUrl();
+
+
+
+ // --------------------------------------
+ // Adding parameters
+ // --------------------------------------
+
+ var vParameters = this.getParameters();
+ var vParametersList = [];
+ for (var vId in vParameters) {
+ var value = vParameters[vId];
+ if (value instanceof Array) {
+ for (var i = 0; i < value.length; i++) {
+ vParametersList.push(encodeURIComponent(vId) + "=" +
+ encodeURIComponent(value[i]));
+ }
+ } else {
+ vParametersList.push(encodeURIComponent(vId) + "=" +
+ encodeURIComponent(value));
+ }
+ }
+
+ if (vParametersList.length > 0) {
+ vUrl += (vUrl.indexOf("?") >= 0 ?
+ "&" : "?") + vParametersList.join("&");
+ }
+
+
+
+ // --------------------------------------
+ // Preparing form
+ // --------------------------------------
+
+ this._form.action = vUrl;
+ this._form.method = vMethod;
+
+
+
+ // --------------------------------------
+ // Sending data
+ // --------------------------------------
+
+ this._data.appendChild(document.createTextNode(this.getData()));
+ this._form.submit();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENER
+---------------------------------------------------------------------------
+*/
+
+// For reference:
+// http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/readyState_1.asp
+qx.io.remote.IframeTransport._numericMap =
+{
+ "uninitialized" : 1,
+ "loading" : 2,
+ "loaded" : 2,
+ "interactive" : 3,
+ "complete" : 4
+}
+
+/*!
+ Converting complete state to numeric value and update state property
+*/
+qx.Proto._onload = function(e)
+{
+ if (this._form.src) {
+ return;
+ }
+
+ this._switchReadyState(qx.io.remote.IframeTransport._numericMap.complete);
+}
+
+/*!
+ Converting named readyState to numeric value and update state property
+*/
+qx.Proto._onreadystatechange = function(e) {
+ this._switchReadyState(qx.io.remote.IframeTransport._numericMap[this._frame.readyState]);
+}
+
+qx.Proto._switchReadyState = function(vReadyState)
+{
+ // Ignoring already stopped requests
+ switch(this.getState())
+ {
+ case "completed":
+ case "aborted":
+ case "failed":
+ case "timeout":
+ this.warn("Ignore Ready State Change");
+ return;
+ }
+
+ // Updating internal state
+ while (this._lastReadyState < vReadyState) {
+ this.setState(qx.io.remote.Exchange._nativeMap[++this._lastReadyState]);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REQUEST HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setRequestHeader = function(vLabel, vValue)
+{
+ // TODO
+ // throw new Error("setRequestHeader is abstract");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getResponseHeader = function(vLabel)
+{
+ return null;
+
+ // TODO
+ // this.error("Need implementation", "getResponseHeader");
+}
+
+/*!
+ Provides an hash of all response headers.
+*/
+qx.Proto.getResponseHeaders = function()
+{
+ return {}
+
+ // TODO
+ // throw new Error("getResponseHeaders is abstract");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATUS SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Returns the current status code of the request if available or -1 if not.
+*/
+qx.Proto.getStatusCode = function()
+{
+ return 200;
+
+ // TODO
+ // this.error("Need implementation", "getStatusCode");
+}
+
+/*!
+ Provides the status text for the current request if available and null otherwise.
+*/
+qx.Proto.getStatusText = function()
+{
+ return "";
+
+ // TODO
+ // this.error("Need implementation", "getStatusText");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FRAME UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getIframeWindow = function() {
+ return qx.dom.Iframe.getWindow(this._frame);
+}
+
+qx.Proto.getIframeDocument = function() {
+ return qx.dom.Iframe.getDocument(this._frame);
+}
+
+qx.Proto.getIframeBody = function() {
+ return qx.dom.Iframe.getBody(this._frame);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE DATA SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getIframeTextContent = function()
+{
+ var vBody = this.getIframeBody();
+
+ if (!vBody) {
+ return null;
+ }
+
+ // Mshtml returns the content inside a PRE
+ // element if we use plain text
+ if (vBody.firstChild.tagName.toLowerCase() == "pre")
+ {
+ return vBody.firstChild.innerHTML;
+ }
+ else
+ {
+ return vBody.innerHTML;
+ }
+}
+
+qx.Proto.getIframeHtmlContent = function()
+{
+ var vBody = this.getIframeBody();
+ return vBody ? vBody.innerHTML : null;
+}
+
+/*!
+ Returns the length of the content as fetched thus far
+*/
+qx.Proto.getFetchedLength = function()
+{
+ return 0;
+
+ // TODO
+ // throw new Error("getFetchedLength is abstract");
+}
+
+qx.Proto.getResponseContent = function()
+{
+ if (this.getState() !== "completed")
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Transfer not complete, ignoring content!");
+ }
+
+ return null;
+ }
+
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("Returning content for responseType: " + this.getResponseType());
+ }
+
+ var vText = this.getIframeTextContent();
+
+ switch(this.getResponseType())
+ {
+ case "text/plain":
+ return vText;
+ break;
+
+ case "text/html":
+ return this.getIframeHtmlContent();
+ break;
+
+ case "text/json":
+ try {
+ return vText && vText.length > 0 ? qx.io.Json.parseQx(vText) : null;
+ } catch(ex) {
+ return this.error("Could not execute json: (" + vText + ")", ex);
+ }
+
+ case "text/javascript":
+ try {
+ return vText && vText.length > 0 ? window.eval(vText) : null;
+ } catch(ex) {
+ return this.error("Could not execute javascript: (" + vText + ")", ex);
+ }
+
+ case "application/xml":
+ return this.getIframeDocument();
+
+ default:
+ this.warn("No valid responseType specified (" + this.getResponseType() + ")!");
+ return null;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._frame)
+ {
+ this._frame.onload = null;
+ this._frame.onreadystatechange = null;
+
+ // Reset source to a blank image for gecko
+ // Otherwise it will switch into a load-without-end behaviour
+ if (qx.sys.Client.getInstance().isGecko()) {
+ this._frame.src = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ }
+
+ // Finally remove element node
+ document.body.removeChild(this._frame);
+
+ this._frame = null;
+ }
+
+ if (this._form)
+ {
+ document.body.removeChild(this._form);
+ this._form = null;
+ }
+
+ return qx.io.remote.AbstractRemoteTransport.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Request.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Request.js
new file mode 100644
index 0000000000..6c398cc528
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Request.js
@@ -0,0 +1,545 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+#require(qx.net.Http)
+
+************************************************************************ */
+
+/*!
+ This class is used to send HTTP requests to the server.
+ @param vUrl Target url to issue the request to.
+ @param vMethod Determines what type of request to issue (GET or
+ POST). Default is GET.
+ @param vResponseType The mime type of the response. Default is text/plain.
+*/
+qx.OO.defineClass("qx.io.remote.Request", qx.core.Target,
+function(vUrl, vMethod, vResponseType)
+{
+ qx.core.Target.call(this);
+
+ this._requestHeaders = {};
+ this._parameters = {};
+
+ this.setUrl(vUrl);
+ this.setMethod(vMethod || qx.net.Http.METHOD_GET);
+ this.setResponseType(vResponseType || "text/plain");
+
+ this.setProhibitCaching(true);
+
+ // Prototype-Style Request Headers
+ this.setRequestHeader("X-Requested-With", "qooxdoo");
+ this.setRequestHeader("X-Qooxdoo-Version", qx.core.Version.toString());
+
+ // Get the next sequence number for this request
+ this._seqNum = ++qx.io.remote.Request._seqNum;
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+/*!
+ Target url to issue the request to.
+*/
+qx.OO.addProperty({ name : "url", type : "string" });
+/*!
+ Determines what type of request to issue (GET or POST).
+*/
+qx.OO.addProperty(
+{
+ name : "method",
+ type : "string",
+ possibleValues : [
+ qx.net.Http.METHOD_GET, qx.net.Http.METHOD_POST,
+ qx.net.Http.METHOD_PUT, qx.net.Http.METHOD_HEAD,
+ qx.net.Http.METHOD_DELETE
+ ]
+});
+/*!
+ Set the request to asynchronous.
+*/
+qx.OO.addProperty({ name : "asynchronous", type : "boolean", defaultValue : true,
+ getAlias: "isAsynchronous" });
+/*!
+ Set the data to be sent via this request
+*/
+qx.OO.addProperty({ name : "data", type : "string" });
+/*!
+ Username to use for HTTP authentication. Null if HTTP authentication
+ is not used.
+*/
+qx.OO.addProperty({ name : "username", type : "string" });
+/*!
+ Password to use for HTTP authentication. Null if HTTP authentication
+ is not used.
+*/
+qx.OO.addProperty({ name : "password", type : "string" });
+qx.OO.addProperty(
+{
+ name : "state",
+ type : "string",
+ possibleValues : [
+ "configured", "queued",
+ "sending", "receiving",
+ "completed", "aborted",
+ "timeout", "failed"
+ ],
+ defaultValue : "configured"
+});
+/*
+ Response type of request.
+
+ The response type is a MIME type, default is text/plain. Other
+ supported MIME types are text/javascript, text/html, text/json,
+ application/xml.
+*/
+qx.OO.addProperty({
+ name : "responseType",
+ type : "string",
+ possibleValues : [
+ "text/plain",
+ "text/javascript", "text/json",
+ "application/xml", "text/html"
+ ]
+});
+/*!
+ Number of millieseconds before the request is being timed out.
+
+ If this property is null, the timeout for the request comes is the
+ qx.io.remote.RequestQueue's property defaultTimeout.
+*/
+qx.OO.addProperty({ name : "timeout", type : "number" });
+
+/*!
+ Prohibit request from being cached.
+
+ Setting the value to true adds a parameter "nocache" to the request
+ with a value of the current time. Setting the value to false removes
+ the parameter.
+*/
+qx.OO.addProperty({ name : "prohibitCaching", type : "boolean" });
+/*!
+ Indicate that the request is cross domain.
+
+ A request is cross domain if the request's URL points to a host other
+ than the local host. This switches the concrete implementation that
+ is used for sending the request from qx.io.remote.XmlHttpTransport to
+ qx.io.remote.ScriptTransport, because only the latter can handle cross domain
+ requests.
+*/
+qx.OO.addProperty({ name : "crossDomain", type : "boolean", defaultValue : false });
+/*!
+ Indicate that the request will be used for a file upload.
+
+ The request will be used for a file upload. This switches the concrete
+ implementation that is used for sending the request from
+ qx.io.remote.XmlHttpTransport to qx.io.remote.IFrameTransport, because only
+ the latter can handle file uploads.
+*/
+qx.OO.addProperty({ name : "fileUpload", type : "boolean", defaultValue : false });
+/*!
+ The transport instance used for the request.
+
+ This is necessary to be able to abort an asynchronous request.
+*/
+qx.OO.addProperty({ name : "transport", type : "object", instance : "qx.io.remote.Exchange" });
+/*!
+ Use Basic HTTP Authentication
+*/
+qx.OO.addProperty({ name : "useBasicHttpAuth", type : "boolean" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+/*!
+ Schedule this request for transport to server.
+
+ The request is added to the singleton class qx.io.remote.RequestQueue's list of
+ pending requests.
+*/
+qx.Proto.send = function() {
+ qx.io.remote.RequestQueue.getInstance().add(this);
+}
+
+/*!
+ Abort sending this request.
+
+ The request is removed from the singleton class qx.io.remote.RequestQueue's
+ list of pending events. If the request haven't been scheduled this
+ method is a noop.
+*/
+qx.Proto.abort = function() {
+ qx.io.remote.RequestQueue.getInstance().abort(this);
+}
+
+qx.Proto.reset = function()
+{
+ switch(this.getState())
+ {
+ case "sending":
+ case "receiving":
+ this.error("Aborting already sent request!");
+ // no break
+
+ case "queued":
+ this.abort();
+ break;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE ALIASES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.isConfigured = function() {
+ return this.getState() === "configured";
+}
+
+qx.Proto.isQueued = function() {
+ return this.getState() === "queued";
+}
+
+qx.Proto.isSending = function() {
+ return this.getState() === "sending";
+}
+
+qx.Proto.isReceiving = function() {
+ return this.getState() === "receiving";
+}
+
+qx.Proto.isCompleted = function() {
+ return this.getState() === "completed";
+}
+
+qx.Proto.isAborted = function() {
+ return this.getState() === "aborted";
+}
+
+qx.Proto.isTimeout = function() {
+ return this.getState() === "timeout";
+}
+
+/*!
+ Return true if the request is in the failed state
+ ("failed").
+*/
+qx.Proto.isFailed = function() {
+ return this.getState() === "failed";
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onqueued = function(e)
+{
+ // Modify internal state
+ this.setState("queued");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+}
+
+qx.Proto._onsending = function(e)
+{
+ // Modify internal state
+ this.setState("sending");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+}
+
+qx.Proto._onreceiving = function(e)
+{
+ // Modify internal state
+ this.setState("receiving");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+}
+
+qx.Proto._oncompleted = function(e)
+{
+ // Modify internal state
+ this.setState("completed");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+
+ // Automatically dispose after event completion
+ this.dispose();
+}
+
+qx.Proto._onaborted = function(e)
+{
+ // Modify internal state
+ this.setState("aborted");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+
+ // Automatically dispose after event completion
+ this.dispose();
+}
+
+qx.Proto._ontimeout = function(e)
+{
+/*
+ // User's handler can block until timeout.
+ switch(this.getState())
+ {
+ // If we're no longer running...
+ case "completed":
+ case "timeout":
+ case "aborted":
+ case "failed":
+ // then don't bubble up the timeout event
+ return;
+ }
+*/
+
+ // Modify internal state
+ this.setState("timeout");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+
+ // Automatically dispose after event completion
+ this.dispose();
+}
+
+qx.Proto._onfailed = function(e)
+{
+ // Modify internal state
+ this.setState("failed");
+
+ // Bubbling up
+ this.dispatchEvent(e);
+
+ // Automatically dispose after event completion
+ this.dispose();
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyState = function(propValue, propOldValue, propData)
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("State: " + propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyProhibitCaching = function(propValue, propOldValue, propData)
+{
+ propValue ? this.setParameter("nocache", new Date().valueOf()) : this.removeParameter("nocache");
+
+ return true;
+}
+
+qx.Proto._modifyMethod = function(propValue, propOldValue, propData)
+{
+ if (propValue === qx.net.Http.METHOD_POST) {
+ this.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ }
+
+ return true;
+}
+
+qx.Proto._modifyResponseType = function(propValue, propOldValue, propData)
+{
+ this.setRequestHeader("X-Qooxdoo-Response-Type", propValue);
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REQUEST HEADER
+---------------------------------------------------------------------------
+*/
+/*!
+ Add a request header to the request.
+
+ Example: request.setRequestHeader("Content-Type", "text/html")
+*/
+qx.Proto.setRequestHeader = function(vId, vValue) {
+ this._requestHeaders[vId] = vValue;
+}
+
+qx.Proto.removeRequestHeader = function(vId) {
+ delete this._requestHeaders[vId];
+}
+
+qx.Proto.getRequestHeader = function(vId) {
+ return this._requestHeaders[vId] || null;
+}
+
+qx.Proto.getRequestHeaders = function() {
+ return this._requestHeaders;
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PARAMETERS
+---------------------------------------------------------------------------
+*/
+/*!
+ Add a parameter to the request.
+
+ @param vId String identifier of the parameter to add.
+ @param vValue Value of parameter. May be a string (for one parameter) or an
+ array of strings (for setting multiple parameter values with the same
+ parameter name).
+*/
+qx.Proto.setParameter = function(vId, vValue) {
+ this._parameters[vId] = vValue;
+}
+
+/*!
+ Remove a parameter from the request.
+
+ @param vId String identifier of the parameter to remove.
+*/
+qx.Proto.removeParameter = function(vId) {
+ delete this._parameters[vId];
+}
+
+/*!
+ Get a parameter in the request.
+
+ @param vId String identifier of the parameter to get.
+*/
+qx.Proto.getParameter = function(vId) {
+ return this._parameters[vId] || null;
+}
+
+/*!
+ Returns an object containg all parameters for the request.
+*/
+qx.Proto.getParameters = function() {
+ return this._parameters;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SEQUENCE NUMBER
+---------------------------------------------------------------------------
+*/
+
+/*
+ * Sequence (id) number of a request, used to associate a response or error
+ * with its initiating request.
+ */
+qx.io.remote.Request._seqNum = 0;
+
+/**
+ * Obtain the sequence (id) number used for this request
+ */
+qx.Proto.getSequenceNumber = function() {
+ return this._seqNum;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._requestHeaders = null;
+ this._parameters = null;
+
+ this.setTransport(null);
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/RequestQueue.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/RequestQueue.js
new file mode 100644
index 0000000000..21d3af56e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/RequestQueue.js
@@ -0,0 +1,392 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+/*!
+ Handles scheduling of requests to be sent to a server.
+
+ This class is a singleton and is used by qx.io.remote.Request to schedule its
+ requests. It should not be used directly.
+ */
+qx.OO.defineClass("qx.io.remote.RequestQueue", qx.core.Target,
+function()
+{
+ qx.core.Target.call(this);
+
+ this._queue = [];
+ this._active = [];
+
+ this._totalRequests = 0;
+
+ // timeout handling
+ this._timer = new qx.client.Timer(500);
+ this._timer.addEventListener("interval", this._oninterval, this);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "maxTotalRequests", type : "number" });
+qx.OO.addProperty({ name : "maxConcurrentRequests", type : "number", defaultValue : 3 });
+qx.OO.addProperty({ name : "defaultTimeout", type : "number", defaultValue : 5000 });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ QUEUE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._debug = function()
+{
+ // Debug output
+ var vText = this._active.length + "/" + (this._queue.length+this._active.length);
+
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug"))
+ {
+ this.debug("Progress: " + vText);
+ window.status = "Request-Queue Progress: " + vText;
+ }
+}
+
+qx.Proto._check = function()
+{
+ // Debug output
+ this._debug();
+
+ // Check queues and stop timer if not needed anymore
+ if (this._active.length == 0 && this._queue.length == 0) {
+ this._timer.stop();
+ }
+
+ // Checking if enabled
+ if (!this.getEnabled()) {
+ return;
+ }
+
+ // Checking active queue fill
+ if (this._active.length >= this.getMaxConcurrentRequests() || this._queue.length == 0) {
+ return;
+ }
+
+ // Checking number of total requests
+ if (this.getMaxTotalRequests() != null && this._totalRequests >= this.getMaxTotalRequests()) {
+ return;
+ }
+
+ var vRequest = this._queue.shift();
+ var vTransport = new qx.io.remote.Exchange(vRequest);
+
+ // Increment counter
+ this._totalRequests++;
+
+ // Add to active queue
+ this._active.push(vTransport);
+
+ // Debug output
+ this._debug();
+
+ // Establish event connection between qx.io.remote.Exchange instance and qx.io.remote.Request
+ vTransport.addEventListener("sending", vRequest._onsending, vRequest);
+ vTransport.addEventListener("receiving", vRequest._onreceiving, vRequest);
+ vTransport.addEventListener("completed", vRequest._oncompleted, vRequest);
+ vTransport.addEventListener("aborted", vRequest._onaborted, vRequest);
+ vTransport.addEventListener("timeout", vRequest._ontimeout, vRequest);
+ vTransport.addEventListener("failed", vRequest._onfailed, vRequest);
+
+ // Establish event connection between qx.io.remote.Exchange and me.
+ vTransport.addEventListener("sending", this._onsending, this);
+ vTransport.addEventListener("completed", this._oncompleted, this);
+ vTransport.addEventListener("aborted", this._oncompleted, this);
+ vTransport.addEventListener("timeout", this._oncompleted, this);
+ vTransport.addEventListener("failed", this._oncompleted, this);
+
+ // Store send timestamp
+ vTransport._start = (new Date).valueOf();
+
+ // Send
+ vTransport.send();
+
+ // Retry
+ if (this._queue.length > 0) {
+ this._check();
+ }
+}
+
+qx.Proto._remove = function(vTransport)
+{
+ var vRequest = vTransport.getRequest();
+
+ // Destruct event connection between qx.io.remote.Exchange instance and qx.io.remote.Request
+ vTransport.removeEventListener("sending", vRequest._onsending, vRequest);
+ vTransport.removeEventListener("receiving", vRequest._onreceiving, vRequest);
+ vTransport.removeEventListener("completed", vRequest._oncompleted, vRequest);
+ vTransport.removeEventListener("aborted", vRequest._onaborted, vRequest);
+ vTransport.removeEventListener("timeout", vRequest._ontimeout, vRequest);
+ vTransport.removeEventListener("failed", vRequest._onfailed, vRequest);
+
+ // Destruct event connection between qx.io.remote.Exchange and me.
+ vTransport.removeEventListener("sending", this._onsending, this);
+ vTransport.removeEventListener("completed", this._oncompleted, this);
+ vTransport.removeEventListener("aborted", this._oncompleted, this);
+ vTransport.removeEventListener("timeout", this._oncompleted, this);
+ vTransport.removeEventListener("failed", this._oncompleted, this);
+
+ // Remove from active transports
+ qx.lang.Array.remove(this._active, vTransport);
+
+ // Dispose transport object
+ vTransport.dispose();
+
+ // Check again
+ this._check();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._activeCount = 0;
+
+qx.Proto._onsending = function(e)
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug"))
+ {
+ this._activeCount++;
+ e.getTarget()._counted = true;
+
+ this.debug("ActiveCount: " + this._activeCount);
+ }
+}
+
+qx.Proto._oncompleted = function(e)
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug"))
+ {
+ if (e.getTarget()._counted)
+ {
+ this._activeCount--;
+ this.debug("ActiveCount: " + this._activeCount);
+ }
+ }
+
+ this._remove(e.getTarget());
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TIMEOUT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oninterval = function(e)
+{
+ var vActive = this._active;
+
+ if (vActive.length == 0) {
+ return;
+ }
+
+ var vCurrent = (new Date).valueOf();
+ var vTransport;
+ var vRequest;
+ var vDefaultTimeout = this.getDefaultTimeout();
+ var vTimeout;
+ var vTime;
+
+ for (var i=vActive.length-1; i>=0; i--)
+ {
+ vTransport = vActive[i];
+ vRequest = vTransport.getRequest();
+ if (vRequest.isAsynchronous()) {
+ vTimeout = vRequest.getTimeout();
+
+ // if timer is disabled...
+ if (vTimeout == 0) {
+ // then ignore it.
+ continue;
+ }
+
+ if (vTimeout == null) {
+ vTimeout = vDefaultTimeout;
+ }
+
+ vTime = vCurrent - vTransport._start;
+
+ if (vTime > vTimeout)
+ {
+ this.warn("Timeout: transport " + vTransport.toHashCode());
+ this.warn(vTime + "ms > " + vTimeout + "ms");
+ vTransport.timeout();
+ }
+ }
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ if (propValue) {
+ this._check();
+ }
+
+ this._timer.setEnabled(propValue);
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+/*!
+ Add the request to the pending requests queue.
+*/
+qx.Proto.add = function(vRequest)
+{
+ vRequest.setState("queued");
+
+ this._queue.push(vRequest);
+ this._check();
+
+ if (this.getEnabled()) {
+ this._timer.start();
+ }
+}
+
+/*!
+ Remove the request from the pending requests queue.
+
+ The underlying transport of the request is forced into the aborted
+ state ("aborted") and listeners of the "aborted"
+ signal are notified about the event. If the request isn't in the
+ pending requests queue, this method is a noop.
+*/
+qx.Proto.abort = function(vRequest)
+{
+ var vTransport = vRequest.getTransport();
+
+ if (vTransport)
+ {
+ vTransport.abort();
+ }
+ else if (qx.lang.Array.contains(this._queue, vRequest))
+ {
+ qx.lang.Array.remove(this._queue, vRequest);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._active)
+ {
+ for (var i=0, a=this._active, l=a.length; i<l; i++) {
+ this._remove(a[i]);
+ }
+
+ this._active = null;
+ }
+
+ if (this._timer)
+ {
+ this._timer.removeEventListener("interval", this._oninterval, this);
+ this._timer = null;
+ }
+
+ this._queue = null;
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Response.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Response.js
new file mode 100644
index 0000000000..e35460cb2a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Response.js
@@ -0,0 +1,110 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.io.remote.Response", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "state", type : "number" });
+/*!
+ Status code of the response.
+*/
+qx.OO.addProperty({ name : "statusCode", type : "number" });
+qx.OO.addProperty({ name : "content" });
+qx.OO.addProperty({ name : "responseHeaders", type : "object" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+/*
+qx.Proto._modifyResponseHeaders = function(propValue, propOldValue, propData)
+{
+ for (vKey in propValue) {
+ this.debug("R-Header: " + vKey + "=" + propValue[vKey]);
+ }
+
+ return true;
+}
+*/
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getResponseHeader = function(vHeader)
+{
+ var vAll = this.getResponseHeaders();
+ if (vAll) {
+ return vAll[vHeader] || null;
+ }
+
+ return null;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Rpc.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Rpc.js
new file mode 100644
index 0000000000..65b4f16ad3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/Rpc.js
@@ -0,0 +1,572 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Andreas Junghans (lucidcake)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+
+
+/**
+ * Provides a Remote Procedure Call (RPC) implementation.
+ *
+ * Each instance of this class represents a "Service". These services can
+ * correspond to various concepts on the server side (depending on the
+ * programming language/environment being used), but usually, a service means
+ * a class on the server.
+ *
+ * In case multiple instances of the same service are needed, they can be
+ * distinguished by ids. If such an id is specified, the server routes all
+ * calls to a service that have the same id to the same server-side instance.
+ *
+ * When calling a server-side method, the parameters and return values are
+ * converted automatically. Supported types are int (and Integer), double
+ * (and Double), String, Date, Map, and JavaBeans. Beans must habe a default
+ * constructor on the server side and are represented by simple JavaScript
+ * objects on the client side (used as associative arrays with keys matching
+ * the server-side properties). Beans can also be nested, but be careful to not
+ * create circular references! There are no checks to detect these (which would
+ * be expensive), so you as the user are responsible for avoiding them.
+ *
+ * @param url {string} identifies the url where the service
+ * is found. Note that if the url is to
+ * a domain (server) other than where the
+ * qooxdoo script came from, i.e. it is
+ * cross-domain, then you must also call
+ * the setCrossDomain(true) method to
+ * enable the IframeTrannsport instead of
+ * the XmlHttpTransport, since the latter
+ * can not handle cross-domain requests.
+ *
+ * @param serviceName {string} identifies the service. For the Java
+ * implementation, this is the fully
+ * qualified name of the class that offers
+ * the service methods
+ * (e.g. "my.pkg.MyService").
+ *
+ * @event completed (qx.event.type.DataEvent)
+ * @event failed (qx.event.type.DataEvent)
+ * @event timeout (qx.event.type.DataEvent)
+ * @event aborted (qx.event.type.DataEvent)
+ */
+
+qx.OO.defineClass("qx.io.remote.Rpc", qx.core.Target,
+function(url, serviceName)
+{
+ qx.core.Target.call(this);
+
+ this.setUrl(url);
+ if (serviceName != null) {
+ this.setServiceName(serviceName);
+ }
+ this._previousServerSuffix = null;
+ this._currentServerSuffix = null;
+ if (qx.core.ServerSettings) {
+ this._currentServerSuffix = qx.core.ServerSettings.serverPathSuffix;
+ }
+});
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ The timeout for asynchronous calls in milliseconds.
+ */
+qx.OO.addProperty({ name : "timeout", type : "number" });
+
+/**
+ Indicate that the request is cross domain.
+
+ A request is cross domain if the request's URL points to a host other
+ than the local host. This switches the concrete implementation that
+ is used for sending the request from qx.io.remote.XmlHttpTransport to
+ qx.io.remote.ScriptTransport because only the latter can handle cross domain
+ requests.
+*/
+qx.OO.addProperty({ name : "crossDomain", type : "boolean", defaultValue : false });
+
+/**
+ The URL at which the service is located.
+*/
+qx.OO.addProperty({ name : "url", type : "string", defaultValue : null });
+
+/**
+ The service name.
+*/
+qx.OO.addProperty({ name : "serviceName", type : "string", defaultValue : null });
+
+/**
+ Data sent as "out of band" data in the request to the server. The format of
+ the data is opaque to RPC and may be recognized only by particular servers
+ It is up to the server to decide what to do with it: whether to ignore it,
+ handle it locally before calling the specified method, or pass it on to the
+ method. This server data is not sent to the server if it has been set to
+ 'undefined'.
+*/
+qx.OO.addProperty({ name : "serverData", type : "object", defaultValue : undefined });
+
+/**
+ Username to use for HTTP authentication. Null if HTTP authentication
+ is not used.
+*/
+qx.OO.addProperty({ name : "username", type : "string" });
+
+/**
+ Password to use for HTTP authentication. Null if HTTP authentication
+ is not used.
+*/
+qx.OO.addProperty({ name : "password", type : "string" });
+
+/**
+ Use Basic HTTP Authentication
+*/
+qx.OO.addProperty({ name : "useBasicHttpAuth", type : "boolean" });
+
+/**
+ Origins of errors
+*/
+qx.io.remote.Rpc.origin =
+{
+ server : 1,
+ application : 2,
+ transport : 3,
+ local : 4
+}
+
+/**
+ Locally-detected errors
+*/
+qx.io.remote.Rpc.localError =
+{
+ timeout : 1,
+ abort : 2
+}
+
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+
+/* callType: 0 = sync, 1 = async with handler, 2 = async event listeners */
+qx.Proto._callInternal = function(args, callType, refreshSession) {
+ var self = this;
+ var offset = (callType == 0 ? 0 : 1)
+ var whichMethod = (refreshSession ? "refreshSession" : args[offset]);
+ var handler = args[0];
+ var argsArray = [];
+ var eventTarget = this;
+
+ for (var i = offset + 1; i < args.length; ++i) {
+ argsArray.push(args[i]);
+ }
+ var req = new qx.io.remote.Request(this.getUrl(),
+ qx.net.Http.METHOD_POST,
+ "text/json");
+ var requestObject = {
+ "service": (refreshSession ? null : this.getServiceName()),
+ "method": whichMethod,
+ "id": req.getSequenceNumber(),
+ "params": argsArray
+ // additional field 'server_data' optionally included, below
+ }
+
+ // See if there's any out-of-band data to be sent to the server
+ var serverData = this.getServerData();
+ if (serverData !== undefined) {
+ // There is. Send it.
+ requestObject.server_data = serverData;
+ }
+
+ req.setCrossDomain(this.getCrossDomain());
+
+ if (this.getUsername()) {
+ req.setUseBasicHttpAuth(this.getUseBasicHttpAuth());
+ req.setUsername(this.getUsername());
+ req.setPassword(this.getPassword());
+ }
+
+ req.setTimeout(this.getTimeout());
+ var ex = null;
+ var id = null;
+ var result = null;
+
+ var handleRequestFinished = function(eventType, eventTarget) {
+ switch(callType)
+ {
+ case 0: // sync
+ break;
+
+ case 1: // async with handler function
+ handler(result, ex, id);
+ break;
+
+ case 2: // async with event listeners
+ // Dispatch the event to our listeners.
+ if (! ex) {
+ eventTarget.createDispatchDataEvent(eventType, result);
+ } else {
+ // Add the id to the exception
+ ex.id = id;
+
+ if (args[0]) { // coalesce
+ // They requested that we coalesce all failure types to "failed"
+ eventTarget.createDispatchDataEvent("failed", ex);
+ } else {
+ // No coalese so use original event type
+ eventTarget.createDispatchDataEvent(eventType, ex);
+ }
+ }
+ }
+ }
+
+ var addToStringToObject = function(obj) {
+ obj.toString = function() {
+ switch(obj.origin)
+ {
+ case qx.io.remote.Rpc.origin.server:
+ return "Server error " + obj.code + ": " + obj.message;
+ case qx.io.remote.Rpc.origin.application:
+ return "Application error " + obj.code + ": " + obj.message;
+ case qx.io.remote.Rpc.origin.transport:
+ return "Transport error " + obj.code + ": " + obj.message;
+ case qx.io.remote.Rpc.origin.local:
+ return "Local error " + obj.code + ": " + obj.message;
+ default:
+ return "UNEXPECTED origin " + obj.origin + " error " + obj.code + ": " + obj.message;
+ }
+ }
+ }
+
+ var makeException = function(origin, code, message) {
+ var ex = new Object();
+
+ ex.origin = origin;
+ ex.code = code;
+ ex.message = message;
+ addToStringToObject(ex);
+
+ return ex;
+ }
+
+ req.addEventListener("failed", function(evt) {
+ var code = evt.getData().getStatusCode();
+ ex = makeException(qx.io.remote.Rpc.origin.transport,
+ code,
+ qx.io.remote.Exchange.statusCodeToString(code));
+ id = this.getSequenceNumber();
+ handleRequestFinished("failed", eventTarget);
+ });
+ req.addEventListener("timeout", function(evt) {
+ ex = makeException(qx.io.remote.Rpc.origin.local,
+ qx.io.remote.Rpc.localError.timeout,
+ "Local time-out expired");
+ id = this.getSequenceNumber();
+ handleRequestFinished("timeout", eventTarget);
+ });
+ req.addEventListener("aborted", function(evt) {
+ ex = makeException(qx.io.remote.Rpc.origin.local,
+ qx.io.remote.Rpc.localError.abort,
+ "Aborted");
+ id = this.getSequenceNumber();
+ handleRequestFinished("aborted", eventTarget);
+ });
+ req.addEventListener("completed", function(evt) {
+ result = evt.getData().getContent();
+ id = result["id"];
+ if (id != this.getSequenceNumber()) {
+ this.warn("Received id (" + id + ") does not match requested id (" + this.getSequenceNumber() + ")!");
+ }
+ var exTest = result["error"];
+ if (exTest != null) {
+ result = null;
+ addToStringToObject(exTest);
+ ex = exTest;
+ } else {
+ result = result["result"];
+ if (refreshSession) {
+ result = eval("(" + result + ")");
+ var newSuffix = qx.core.ServerSettings.serverPathSuffix;
+ if (self._currentServerSuffix != newSuffix) {
+ self._previousServerSuffix = self._currentServerSuffix;
+ self._currentServerSuffix = newSuffix;
+ }
+ self.setUrl(self.fixUrl(self.getUrl()));
+ }
+ }
+ handleRequestFinished("completed", eventTarget);
+ });
+ req.setData(qx.io.Json.stringify(requestObject));
+ req.setAsynchronous(callType > 0);
+
+ if (req.getCrossDomain()) {
+ // Our choice here has no effect anyway. This is purely informational.
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ } else {
+ // When not cross-domain, set type to text/json
+ req.setRequestHeader("Content-Type", "text/json");
+ }
+
+ req.send();
+
+ if (callType == 0) {
+ if (ex != null) {
+ var error = new Error(ex.toString());
+ error.rpcdetails = ex;
+ throw error;
+ }
+ return result;
+ } else {
+ return req;
+ }
+}
+
+
+/**
+ * Helper method to rewrite a URL with a stale session id (so that it includes
+ * the correct session id afterwards).
+ *
+ * @param url {string} the URL to examine.
+ *
+ * @return {string} the (possibly re-written) URL.
+ */
+
+qx.Proto.fixUrl = function(url) {
+ if (this._previousServerSuffix == null || this._currentServerSuffix == null ||
+ this._previousServerSuffix == "" ||
+ this._previousServerSuffix == this._currentServerSuffix) {
+ return url;
+ }
+ var index = url.indexOf(this._previousServerSuffix);
+ if (index == -1) {
+ return url;
+ }
+ return url.substring(0, index) + this._currentServerSuffix +
+ url.substring(index + this._previousServerSuffix.length);
+};
+
+
+/**
+ * Makes a synchronous server call. The method arguments (if any) follow
+ * after the method name (as normal JavaScript arguments, separated by commas,
+ * not as an array).
+ * <p>
+ * If a problem occurs when making the call, an exception is thrown.
+ * </p>
+ * <p>
+ * WARNING. With some browsers, the synchronous interface
+ * causes the browser to hang while awaiting a response! If the server
+ * decides to pause for a minute or two, your browser may do nothing
+ * (including refreshing following window changes) until the response is
+ * received. Instead, use the asynchronous interface.
+ * </p>
+ * <p>
+ * YOU HAVE BEEN WARNED.
+ * </p>
+ *
+ * @param methodName {string} the name of the method to call.
+ *
+ * @return {var} the result returned by the server.
+ */
+
+qx.Proto.callSync = function(methodName) {
+ return this._callInternal(arguments, 0);
+}
+
+
+/**
+ * Makes an asynchronous server call. The method arguments (if any) follow
+ * after the method name (as normal JavaScript arguments, separated by commas,
+ * not as an array).
+ * <p>
+ * When an answer from the server arrives, the <code>handler</code> function
+ * is called with the result of the call as the first, an exception as the
+ * second parameter, and the id (aka sequence number) of the invoking request
+ * as the third parameter. If the call was successful, the second parameter is
+ * <code>null</code>. If there was a problem, the second parameter contains an
+ * exception, and the first one is <code>null</code>.
+ * </p>
+ * <p>
+ * The return value of this method is a call reference that you can store if
+ * you want to abort the request later on. This value should be treated as
+ * opaque and can change completely in the future! The only thing you can rely
+ * on is that the <code>abort</code> method will accept this reference and
+ * that you can retrieve the sequence number of the request by invoking the
+ * getSequenceNumber() method (see below).
+ * </p>
+ * <p>
+ * If a specific method is being called, asynchronously, a number of times in
+ * succession, the getSequenceNumber() method may be used to disambiguate
+ * which request a response corresponds to. The sequence number value is a
+ * value which increments with each request.)
+ * </p>
+ *
+ * @param handler {Function} the callback function.
+ *
+ * @param methodName {string} the name of the method to call.
+ *
+ * @return {var} the method call reference.
+ */
+
+qx.Proto.callAsync = function(handler, methodName) {
+ return this._callInternal(arguments, 1);
+}
+
+
+/**
+ * Makes an asynchronous server call and dispatch an event upon completion or
+ * failure. The method arguments (if any) follow after the method name (as
+ * normal JavaScript arguments, separated by commas, not as an array).
+ * <p>
+ * When an answer from the server arrives (or fails to arrive on time), if an
+ * exception occurred, a "failed", "timeout" or "aborted" event, as
+ * appropriate, is dispatched to any waiting event listeners. If no exception
+ * occurred, a "completed" event is dispatched.
+ * </p>
+ * <p>
+ * When a "failed", "timeout" or "aborted" event is dispatched, the event data
+ * contains an object with the properties 'origin', 'code', 'message' and
+ * 'id'. The object has a toString() function which may be called to convert
+ * the exception to a string.
+ * </p>
+ * <p>
+ * When a "completed" event is dispatched, the event data contains the
+ * JSON-RPC result.
+ * </p>
+ * <p>
+ * The return value of this method is a call reference that you can store if
+ * you want to abort the request later on. This value should be treated as
+ * opaque and can change completely in the future! The only thing you can rely
+ * on is that the <code>abort</code> method will accept this reference and
+ * that you can retrieve the sequence number of the request by invoking the
+ * getSequenceNumber() method (see below).
+ * </p>
+ * <p>
+ * If a specific method is being called, asynchronously, a number of times in
+ * succession, the getSequenceNumber() method may be used to disambiguate
+ * which request a response corresponds to. The sequence number value is a
+ * value which increments with each request.)
+ * </p>
+ *
+ * @param coalesce (boolean) coalesce all failure types ("failed",
+ * "timeout", and "aborted") to "failed".
+ * This is reasonable in many cases, as
+ * the provided exception contains adequate
+ * disambiguating information.
+ *
+ * @param methodName (string) the name of the method to call.
+ *
+ * @return (var) the method call reference.
+ */
+
+qx.Proto.callAsyncListeners = function(coalesce, methodName) {
+ return this._callInternal(arguments, 2);
+}
+
+
+/**
+ * Refreshes a server session by retrieving the session id again from the
+ * server.
+ * <p>
+ * The specified handler function is called when the refresh is complete. The
+ * first parameter can be <code>true</code> (indicating that a refresh either
+ * wasn't necessary at this time or it was successful) or <code>false</code>
+ * (indicating that a refresh would have been necessary but can't be performed
+ * because the server backend doesn't support it). If there is a non-null
+ * second parameter, it's an exception indicating that there was an error when
+ * refreshing the session.
+ * </p>
+ *
+ * @param handler {Function} a callback function that is called when the
+ * refresh is complete (or failed).
+ */
+
+qx.Proto.refreshSession = function(handler) {
+ if (this.getCrossDomain()) {
+ if (qx.core.ServerSettings && qx.core.ServerSettings.serverPathSuffix) {
+ var timeDiff = (new Date()).getTime() - qx.core.ServerSettings.lastSessionRefresh;
+ if (timeDiff/1000 > (qx.core.ServerSettings.sessionTimeoutInSeconds - 30)) {
+ //this.info("refreshing session");
+ this._callInternal([handler], 1, true);
+ } else {
+ handler(true); // session refresh was OK (in this case: not needed)
+ }
+ } else {
+ handler(false); // no refresh possible, but would be necessary
+ }
+ } else {
+ handler(true); // session refresh was OK (in this case: not needed)
+ }
+}
+
+
+/**
+ * Aborts an asynchronous server call. Consequently, the callback function
+ * provided to <code>callAsync</code> or <code>callAsyncListeners</code> will
+ * be called with an exception.
+ *
+ * @param opaqueCallRef {var} the call reference as returned by
+ * <code>callAsync</code> or
+ * <code>callAsyncListeners</code>
+ */
+
+qx.Proto.abort = function(opaqueCallRef) {
+ opaqueCallRef.abort();
+}
+
+
+/**
+ * Creates an URL for talking to a local service. A local service is one that
+ * lives in the same application as the page calling the service. For backends
+ * that don't support this auto-generation, this method returns null.
+ *
+ * @param instanceId {string ? null} an optional identifier for the
+ * server side instance that should be
+ * used. All calls to the same service
+ * with the same instance id are
+ * routed to the same object instance
+ * on the server. The instance id can
+ * also be used to provide additional
+ * data for the service instantiation
+ * on the server.
+ *
+ * @return {string} the url.
+ */
+
+qx.Class.makeServerURL = function(instanceId) {
+ var retVal = null;
+ if (qx.core.ServerSettings) {
+ retVal = qx.core.ServerSettings.serverPathPrefix + "/.qxrpc" +
+ qx.core.ServerSettings.serverPathSuffix;
+ if (instanceId != null) {
+ retVal += "?instanceId=" + instanceId;
+ }
+ }
+ return retVal;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/ScriptTransport.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/ScriptTransport.js
new file mode 100644
index 0000000000..8416988717
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/ScriptTransport.js
@@ -0,0 +1,360 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+ * Andreas Junghans (lucidcake)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+#require(qx.io.remote.Exchange)
+
+************************************************************************ */
+
+/*!
+ Transports requests to a server using dynamic script tags.
+
+ This class should not be used directly by client programmers.
+ */
+qx.OO.defineClass("qx.io.remote.ScriptTransport", qx.io.remote.AbstractRemoteTransport,
+function()
+{
+ qx.io.remote.AbstractRemoteTransport.call(this);
+
+ var vUniqueId = ++qx.io.remote.ScriptTransport._uniqueId;
+ if (vUniqueId >= 2000000000) {
+ qx.io.remote.ScriptTransport._uniqueId = vUniqueId = 1;
+ }
+
+ this._element = null;
+ this._uniqueId = vUniqueId;
+});
+
+qx.Class._uniqueId = 0;
+qx.Class._instanceRegistry = {};
+qx.Class.ScriptTransport_PREFIX = "_ScriptTransport_";
+qx.Class.ScriptTransport_ID_PARAM = qx.Class.ScriptTransport_PREFIX + "id";
+qx.Class.ScriptTransport_DATA_PARAM = qx.Class.ScriptTransport_PREFIX + "data";
+qx.Proto._lastReadyState = 0;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS PROPERTIES AND METHODS
+---------------------------------------------------------------------------
+*/
+
+// basic registration to qx.io.remote.Exchange
+// the real availability check (activeX stuff and so on) follows at the first real request
+qx.io.remote.Exchange.registerType(qx.io.remote.ScriptTransport, "qx.io.remote.ScriptTransport");
+
+qx.io.remote.ScriptTransport.handles =
+{
+ synchronous : false,
+ asynchronous : true,
+ crossDomain : true,
+ fileUpload: false,
+ responseTypes : [ "text/plain", "text/javascript", "text/json" ]
+}
+
+qx.io.remote.ScriptTransport.isSupported = function() {
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.send = function()
+{
+ var vUrl = this.getUrl();
+
+
+
+ // --------------------------------------
+ // Adding parameters
+ // --------------------------------------
+
+ vUrl += (vUrl.indexOf("?") >= 0 ? "&" : "?") + qx.io.remote.ScriptTransport.ScriptTransport_ID_PARAM + "=" + this._uniqueId;
+
+ var vParameters = this.getParameters();
+ var vParametersList = [];
+ for (var vId in vParameters) {
+ if (vId.indexOf(qx.io.remote.ScriptTransport.ScriptTransport_PREFIX) == 0) {
+ this.error("Illegal parameter name. The following prefix is used internally by qooxdoo): " +
+ qx.io.remote.ScriptTransport.ScriptTransport_PREFIX);
+ }
+ var value = vParameters[vId];
+ if (value instanceof Array) {
+ for (var i = 0; i < value.length; i++) {
+ vParametersList.push(encodeURIComponent(vId) + "=" +
+ encodeURIComponent(value[i]));
+ }
+ } else {
+ vParametersList.push(encodeURIComponent(vId) + "=" +
+ encodeURIComponent(value));
+ }
+ }
+
+ if (vParametersList.length > 0) {
+ vUrl += "&" + vParametersList.join("&");
+ }
+
+
+
+ // --------------------------------------
+ // Sending data
+ // --------------------------------------
+
+ vData = this.getData();
+ if (vData != null) {
+ vUrl += "&" + qx.io.remote.ScriptTransport.ScriptTransport_DATA_PARAM + "=" + encodeURIComponent(vData);
+ }
+
+ qx.io.remote.ScriptTransport._instanceRegistry[this._uniqueId] = this;
+ this._element = document.createElement("script");
+ this._element.charset = "utf-8"; // IE needs this (it ignores the
+ // encoding from the header sent by the
+ // server for dynamic script tags)
+ this._element.src = vUrl;
+
+ document.body.appendChild(this._element);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENER
+---------------------------------------------------------------------------
+*/
+
+// For reference:
+// http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/readyState_1.asp
+qx.io.remote.ScriptTransport._numericMap =
+{
+ "uninitialized" : 1,
+ "loading" : 2,
+ "loaded" : 2,
+ "interactive" : 3,
+ "complete" : 4
+}
+
+qx.Proto._switchReadyState = function(vReadyState)
+{
+ // Ignoring already stopped requests
+ switch(this.getState())
+ {
+ case "completed":
+ case "aborted":
+ case "failed":
+ case "timeout":
+ this.warn("Ignore Ready State Change");
+ return;
+ }
+
+ // Updating internal state
+ while (this._lastReadyState < vReadyState) {
+ this.setState(qx.io.remote.Exchange._nativeMap[++this._lastReadyState]);
+ }
+}
+qx.Class._requestFinished = function(id, content) {
+ var vInstance = qx.io.remote.ScriptTransport._instanceRegistry[id];
+ if (vInstance == null) {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Request finished for an unknown instance (probably aborted or timed out before)");
+ }
+ } else {
+ vInstance._responseContent = content;
+ vInstance._switchReadyState(qx.io.remote.ScriptTransport._numericMap.complete);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REQUEST HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setRequestHeader = function(vLabel, vValue)
+{
+ // TODO
+ // throw new Error("setRequestHeader is abstract");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getResponseHeader = function(vLabel)
+{
+ return null;
+
+ // TODO
+ // this.error("Need implementation", "getResponseHeader");
+}
+
+/*!
+ Provides an hash of all response headers.
+*/
+qx.Proto.getResponseHeaders = function()
+{
+ return {}
+
+ // TODO
+ // throw new Error("getResponseHeaders is abstract");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATUS SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Returns the current status code of the request if available or -1 if not.
+*/
+qx.Proto.getStatusCode = function()
+{
+ return 200;
+
+ // TODO
+ // this.error("Need implementation", "getStatusCode");
+}
+
+/*!
+ Provides the status text for the current request if available and null otherwise.
+*/
+qx.Proto.getStatusText = function()
+{
+ return "";
+
+ // TODO
+ // this.error("Need implementation", "getStatusText");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE DATA SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Returns the length of the content as fetched thus far
+*/
+qx.Proto.getFetchedLength = function()
+{
+ return 0;
+
+ // TODO
+ // throw new Error("getFetchedLength is abstract");
+}
+
+qx.Proto.getResponseContent = function()
+{
+ if (this.getState() !== "completed")
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Transfer not complete, ignoring content!");
+ }
+
+ return null;
+ }
+
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.debug("Returning content for responseType: " + this.getResponseType());
+ }
+
+ switch(this.getResponseType())
+ {
+ case "text/plain":
+ // server is responsible for using a string as the response
+
+ case "text/json":
+
+ case "text/javascript":
+ return this._responseContent;
+
+ default:
+ this.warn("No valid responseType specified (" + this.getResponseType() + ")!");
+ return null;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._element != null)
+ {
+ delete qx.io.remote.ScriptTransport._instanceRegistry[this._uniqueId];
+ document.body.removeChild(this._element);
+ this._element = null;
+ }
+
+ return qx.io.remote.AbstractRemoteTransport.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/XmlHttpTransport.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/XmlHttpTransport.js
new file mode 100644
index 0000000000..b9e4bf29bc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/io/remote/XmlHttpTransport.js
@@ -0,0 +1,819 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+#require(qx.io.remote.Exchange)
+
+************************************************************************ */
+
+/**
+ * @event created {qx.event.type.Event}
+ * @event configured {qx.event.type.Event}
+ * @event sending {qx.event.type.Event}
+ * @event receiving {qx.event.type.Event}
+ * @event completed {qx.event.type.Event}
+ * @event failed {qx.event.type.Event}
+ * @event aborted {qx.event.type.Event}
+ * @event timeout {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.io.remote.XmlHttpTransport",
+ qx.io.remote.AbstractRemoteTransport,
+function()
+{
+ qx.io.remote.AbstractRemoteTransport.call(this);
+
+ this._req = qx.io.remote.XmlHttpTransport.createRequestObject();
+
+ var o = this;
+ this._req.onreadystatechange =
+ function(e) { return o._onreadystatechange(e); }
+});
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+// basic registration to qx.io.remote.Exchange
+// the real availability check (activeX stuff and so on) follows at the first real request
+qx.io.remote.Exchange.registerType(qx.io.remote.XmlHttpTransport,
+ "qx.io.remote.XmlHttpTransport");
+
+qx.io.remote.XmlHttpTransport.handles =
+{
+ synchronous : true,
+ asynchronous : true,
+ crossDomain : false,
+ fileUpload: false,
+ responseTypes : [
+ "text/plain",
+ "text/javascript",
+ "text/json",
+ "application/xml",
+ "text/html"
+ ]
+}
+
+qx.io.remote.XmlHttpTransport.requestObjects = [];
+qx.io.remote.XmlHttpTransport.requestObjectCount = 0;
+
+qx.io.remote.XmlHttpTransport.isSupported = function()
+{
+ if (window.XMLHttpRequest)
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange",
+ "enableDebug")) {
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.XmlHttpTransport).debug(
+ "Using XMLHttpRequest");
+ }
+
+ qx.io.remote.XmlHttpTransport.createRequestObject =
+ qx.io.remote.XmlHttpTransport._createNativeRequestObject;
+ return true;
+ }
+
+ if (window.ActiveXObject)
+ {
+ /*
+ According to information on the Microsoft XML Team's WebLog
+ it is recommended to check for availability of MSXML versions 6.0 and 3.0.
+ Other versions are included for completeness, 5.0 is excluded as it is
+ "off-by-default" in IE7 (which could trigger a goldbar).
+
+ http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/aabe29a2-bad2-4cea-8387-314174252a74.asp
+
+ See similar code in qx.xml.Core, qx.lang.XmlEmu
+ */
+ var vServers =
+ [
+ "MSXML2.XMLHTTP.6.0",
+ "MSXML2.XMLHTTP.3.0",
+ "MSXML2.XMLHTTP.4.0",
+ "MSXML2.XMLHTTP", // v3.0
+ "Microsoft.XMLHTTP" // v2.x
+ ];
+
+ var vObject;
+ var vServer;
+
+ for (var i=0, l=vServers.length; i<l; i++)
+ {
+ vServer = vServers[i];
+
+ try
+ {
+ vObject = new ActiveXObject(vServer);
+ break;
+ }
+ catch(ex)
+ {
+ vObject = null;
+ }
+ }
+
+ if (vObject)
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ qx.dev.log.Logger.getClassLogger(qx.io.remote.XmlHttpTransport).debug(
+ "Using ActiveXObject: " + vServer);
+ }
+
+ qx.io.remote.XmlHttpTransport._activeXServer = vServer;
+ qx.io.remote.XmlHttpTransport.createRequestObject = qx.io.remote.XmlHttpTransport._createActiveXRequestObject;
+
+ return true;
+ }
+ }
+
+ return false;
+}
+
+/*!
+ Return a new request object suitable for the client browser.
+
+ qx.io.remote.XmlHttpTransport's isSupported method scans which request object
+ to use. The createRequestObject method is then replaced with a
+ method that creates request suitable for the client browser. If the
+ client browser doesn't support XMLHTTP requests, the method isn't
+ replaced and the error "XMLHTTP is not supported!" is thrown.
+*/
+qx.io.remote.XmlHttpTransport.createRequestObject = function() {
+ throw new Error("XMLHTTP is not supported!");
+}
+
+qx.io.remote.XmlHttpTransport._createNativeRequestObject = function() {
+ return new XMLHttpRequest;
+}
+
+qx.io.remote.XmlHttpTransport._createActiveXRequestObject = function() {
+ return new ActiveXObject(qx.io.remote.XmlHttpTransport._activeXServer);
+}
+
+
+
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._localRequest = false;
+qx.Proto._lastReadyState = 0;
+
+qx.Proto.getRequest = function() {
+ return this._req;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.send = function()
+{
+ this._lastReadyState = 0;
+
+ var vRequest = this.getRequest();
+ var vMethod = this.getMethod();
+ var vAsynchronous = this.getAsynchronous();
+ var vUrl = this.getUrl();
+
+
+
+ // --------------------------------------
+ // Local handling
+ // --------------------------------------
+
+ var vLocalRequest = (qx.sys.Client.getInstance().getRunsLocally() &&
+ !(/^http(s){0,1}\:/.test(vUrl)));
+ this._localRequest = vLocalRequest;
+
+
+ // --------------------------------------
+ // Adding parameters
+ // --------------------------------------
+
+ var vParameters = this.getParameters();
+ var vParametersList = [];
+ for (var vId in vParameters) {
+ var value = vParameters[vId];
+ if (value instanceof Array) {
+ for (var i = 0; i < value.length; i++) {
+ vParametersList.push(encodeURIComponent(vId) + "=" +
+ encodeURIComponent(value[i]));
+ }
+ } else {
+ vParametersList.push(encodeURIComponent(vId) + "=" +
+ encodeURIComponent(value));
+ }
+ }
+
+ if (vParametersList.length > 0) {
+ vUrl += (vUrl.indexOf("?") >= 0
+ ? "&" : "?") + vParametersList.join("&");
+ }
+
+
+ var encode64 = function (input) {
+ var keyStr =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output +=
+ keyStr.charAt(enc1) +
+ keyStr.charAt(enc2) +
+ keyStr.charAt(enc3) +
+ keyStr.charAt(enc4);
+
+ } while (i < input.length);
+
+ return output;
+ }
+
+ // --------------------------------------
+ // Opening connection
+ // --------------------------------------
+
+ if (this.getUsername()) {
+ if (this.getUseBasicHttpAuth()) {
+ vRequest.open(vMethod, vUrl, vAsynchronous);
+ vRequest.setRequestHeader('Authorization',
+ 'Basic ' + encode64(this.getUsername() +
+ ':' +
+ this.getPassword()));
+ } else {
+ vRequest.open(vMethod, vUrl, vAsynchronous,
+ this.getUsername(), this.getPassword());
+ }
+ } else {
+ vRequest.open(vMethod, vUrl, vAsynchronous);
+ }
+
+
+
+ // --------------------------------------
+ // Appliying request header
+ // --------------------------------------
+
+ var vRequestHeaders = this.getRequestHeaders();
+ for (var vId in vRequestHeaders) {
+ vRequest.setRequestHeader(vId, vRequestHeaders[vId]);
+ }
+
+
+
+ // --------------------------------------
+ // Sending data
+ // --------------------------------------
+
+ try
+ {
+ vRequest.send(this.getData());
+ }
+ catch(ex)
+ {
+ if (vLocalRequest)
+ {
+ this.failedLocally();
+ }
+ else
+ {
+ this.error("Failed to send data: " + ex, "send");
+ this.failed();
+ }
+
+ return;
+ }
+
+
+
+ // --------------------------------------
+ // Readystate for sync reqeusts
+ // --------------------------------------
+
+ if (!vAsynchronous) {
+ this._onreadystatechange();
+ }
+}
+
+/*!
+ Force the transport into the failed state
+ ("failed").
+
+ This method should be used only if the requests URI was local
+ access. I.e. it started with "file://".
+*/
+qx.Proto.failedLocally = function()
+{
+ if (this.getState() === "failed") {
+ return;
+ }
+
+ // should only occur on "file://" access
+ this.warn("Could not load from file: " + this.getUrl());
+
+ this.failed();
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onreadystatechange = function(e)
+{
+ // Ignoring already stopped requests
+ switch(this.getState())
+ {
+ case "completed":
+ case "aborted":
+ case "failed":
+ case "timeout":
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange", "enableDebug")) {
+ this.warn("Ignore Ready State Change");
+ }
+ return;
+ }
+
+ // Checking status code
+ var vReadyState = this.getReadyState();
+ if (vReadyState == 4) {
+ // The status code is only meaningful when we reach ready state 4.
+ // (Important for Opera since it goes through other states before
+ // reaching 4, and the status code is not valid before 4 is reached.)
+ if (!qx.io.remote.Exchange.wasSuccessful(this.getStatusCode(), vReadyState, this._localRequest)) {
+ return this.failed();
+ }
+ }
+
+ // Updating internal state
+ while (this._lastReadyState < vReadyState) {
+ this.setState(qx.io.remote.Exchange._nativeMap[++this._lastReadyState]);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ READY STATE
+---------------------------------------------------------------------------
+*/
+/*!
+ Get the ready state of this transports request.
+
+ For qx.io.remote.XmlHttpTransports, the ready state is a number between 1 to 4.
+*/
+qx.Proto.getReadyState = function()
+{
+ var vReadyState = null;
+
+ try {
+ vReadyState = this._req.readyState;
+ } catch(ex) {}
+
+ return vReadyState;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REQUEST HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+/*!
+ Add a request header to this transports request.
+*/
+qx.Proto.setRequestHeader = function(vLabel, vValue) {
+ this._req.setRequestHeader(vLabel, vValue);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE HEADER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Returns a specific header provided by the server upon sending a request,
+ with header name determined by the argument headerName.
+
+ Only available at readyState 3 and 4 universally and in readyState 2
+ in Gecko.
+*/
+qx.Proto.getResponseHeader = function(vLabel)
+{
+ var vResponseHeader = null;
+
+ try {
+ this.getRequest().getResponseHeader(vLabel) || null;
+ } catch(ex) {}
+
+ return vResponseHeader;
+}
+
+qx.Proto.getStringResponseHeaders = function()
+{
+ var vSourceHeader = null;
+
+ try
+ {
+ var vLoadHeader = this._req.getAllResponseHeaders();
+ if (vLoadHeader) {
+ vSourceHeader = vLoadHeader;
+ }
+ } catch(ex) {}
+
+ return vSourceHeader;
+}
+
+/*!
+ Provides a hash of all response headers.
+*/
+qx.Proto.getResponseHeaders = function()
+{
+ var vSourceHeader = this.getStringResponseHeaders();
+ var vHeader = {};
+
+ if (vSourceHeader)
+ {
+ var vValues = vSourceHeader.split(/[\r\n]+/g);
+
+ for(var i=0, l=vValues.length; i<l; i++)
+ {
+ var vPair = vValues[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+ if(vPair) {
+ vHeader[vPair[1]] = vPair[2];
+ }
+ }
+ }
+
+ return vHeader;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATUS SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Returns the current status code of the request if available or -1 if not.
+*/
+qx.Proto.getStatusCode = function()
+{
+ var vStatusCode = -1;
+
+ try {
+ vStatusCode = this.getRequest().status;
+ } catch(ex) {}
+
+ return vStatusCode;
+}
+
+/*!
+ Provides the status text for the current request if available and null
+ otherwise.
+*/
+qx.Proto.getStatusText = function()
+{
+ var vStatusText = "";
+
+ try {
+ vStatusText = this.getRequest().statusText;
+ } catch(ex) {}
+
+ return vStatusText;
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESPONSE DATA SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Provides the response text from the request when available and null
+ otherwise. By passing true as the "partial" parameter of this method,
+ incomplete data will be made available to the caller.
+*/
+qx.Proto.getResponseText = function()
+{
+ var vResponseText = null;
+
+ var vStatus = this.getStatusCode();
+ var vReadyState = this.getReadyState();
+ if (qx.io.remote.Exchange.wasSuccessful(vStatus, vReadyState, this._localRequest))
+ {
+ try {
+ vResponseText = this.getRequest().responseText;
+ } catch(ex) {}
+ }
+
+ return vResponseText;
+}
+
+/*!
+ Provides the XML provided by the response if any and null otherwise. By
+ passing true as the "partial" parameter of this method, incomplete data will
+ be made available to the caller.
+*/
+qx.Proto.getResponseXml = function()
+{
+ var vResponseXML = null;
+
+ var vStatus = this.getStatusCode();
+ var vReadyState = this.getReadyState();
+ if (qx.io.remote.Exchange.wasSuccessful(vStatus, vReadyState, this._localRequest))
+ {
+ try {
+ vResponseXML = this.getRequest().responseXML;
+ } catch(ex) {}
+ }
+
+ // Typical behaviour on file:// on mshtml
+ // Could we check this with something like: /^file\:/.test(path); ?
+ // No browser check here, because it doesn't seem to break other browsers
+ // * test for this.req.responseXML's objecthood added by *
+ // * FRM, 20050816 *
+ if (typeof vResponseXML == "object" && vResponseXML != null)
+ {
+ if (!vResponseXML.documentElement)
+ {
+ // Clear xml file declaration, this breaks non unicode files (like ones with Umlauts)
+ var s = String(this.getRequest().responseText).replace(/<\?xml[^\?]*\?>/, "");
+ vResponseXML.loadXML(s);
+ };
+ // Re-check if fixed...
+ if (!vResponseXML.documentElement) {
+ throw new Error("Missing Document Element!");
+ };
+
+ if (vResponseXML.documentElement.tagName == "parseerror") {
+ throw new Error("XML-File is not well-formed!");
+ };
+ }
+ else
+ {
+ throw new Error("Response was not a valid xml document [" + this.getRequest().responseText + "]");
+ };
+
+ return vResponseXML;
+}
+
+/*!
+ Returns the length of the content as fetched thus far
+*/
+qx.Proto.getFetchedLength = function()
+{
+ var vText = this.getResponseText();
+ return qx.util.Validation.isValidString(vText) ? vText.length : 0;
+}
+
+qx.Proto.getResponseContent = function()
+{
+ if (this.getState() !== "completed")
+ {
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange",
+ "enableDebug")) {
+ this.warn("Transfer not complete, ignoring content!");
+ }
+
+ return null;
+ }
+
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange",
+ "enableDebug")) {
+ this.debug("Returning content for responseType: " + this.getResponseType());
+ }
+
+ var vText = this.getResponseText();
+
+ switch(this.getResponseType())
+ {
+ case "text/plain":
+ case "text/html":
+ return vText;
+
+ case "text/json":
+ try {
+ return vText && vText.length > 0 ? qx.io.Json.parseQx(vText) : null;
+ } catch(ex) {
+ this.error("Could not execute json: [" + vText + "]", ex);
+ return "<pre>Could not execute json: \n" + vText + "\n</pre>"
+ }
+
+ case "text/javascript":
+ try {
+ return vText && vText.length > 0 ? window.eval(vText) : null;
+ } catch(ex) {
+ return this.error("Could not execute javascript: [" + vText + "]", ex);
+ }
+
+ case "application/xml":
+ return this.getResponseXml();
+
+ default:
+ this.warn("No valid responseType specified (" + this.getResponseType() + ")!");
+ return null;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyState = function(propValue, propOldValue, propData)
+{
+ if (qx.Settings.getValueOfClass("qx.io.remote.Exchange",
+ "enableDebug")) {
+ this.debug("State: " + propValue);
+ }
+
+ switch(propValue)
+ {
+ case "created":
+ this.createDispatchEvent("created");
+ break;
+
+ case "configured":
+ this.createDispatchEvent("configured");
+ break;
+
+ case "sending":
+ this.createDispatchEvent("sending");
+ break;
+
+ case "receiving":
+ this.createDispatchEvent("receiving");
+ break;
+
+ case "completed":
+ this.createDispatchEvent("completed");
+ break;
+
+ case "failed":
+ this.createDispatchEvent("failed");
+ break;
+
+ case "aborted":
+ this.getRequest().abort();
+ this.createDispatchEvent("aborted");
+ break;
+
+ case "timeout":
+ this.getRequest().abort();
+ this.createDispatchEvent("timeout");
+ break;
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ var vRequest = this.getRequest();
+
+ if (vRequest)
+ {
+ // Should be right,
+ // but is not compatible to mshtml (throws an exception)
+ if (!qx.sys.Client.getInstance().isMshtml()) {
+ vRequest.onreadystatechange = null;
+ }
+
+ // Aborting
+ switch(vRequest.readyState)
+ {
+ case 1:
+ case 2:
+ case 3:
+ vRequest.abort();
+ }
+
+ // Cleanup objects
+ this._req = null;
+ }
+
+ return qx.io.remote.AbstractRemoteTransport.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Array.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Array.js
new file mode 100644
index 0000000000..57f124e884
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Array.js
@@ -0,0 +1,158 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.Array");
+
+qx.lang.Array.fromArguments = function(args) {
+ return Array.prototype.slice.call(args, 0);
+}
+
+/*!
+ Utility function for padding/margin and all other shorthand handling.
+*/
+qx.lang.Array.fromShortHand = function(params)
+{
+ var l = params.length;
+
+ if (l > 4) {
+ throw new Error("Invalid number of arguments!");
+ }
+
+ var v;
+ var list = [];
+
+ for (var i=0; i<l; i++)
+ {
+ v = params[i];
+
+ if (qx.util.Validation.isValidNumber(v))
+ {
+ list.push(v);
+ }
+ else if (qx.util.Validation.isInvalidString(v))
+ {
+ list.push(null);
+ }
+ else
+ {
+ throw new Error("Invalid shorthand value: " + v);
+ }
+ }
+
+ // Fix Values (Shorthand)
+ switch(l)
+ {
+ case 1:
+ list[1] = list[2] = list[3] = list[0];
+ break;
+
+ case 2:
+ list[2] = list[0];
+
+ case 3:
+ list[3] = list[1];
+ }
+
+ return list;
+}
+
+qx.lang.Array.copy = function(arr) {
+ return arr.concat();
+}
+
+qx.lang.Array.clone = function(arr) {
+ return arr.concat();
+}
+
+qx.lang.Array.getLast = function(arr) {
+ return arr[arr.length-1];
+}
+
+qx.lang.Array.getFirst = function(arr) {
+ return arr[0];
+}
+
+qx.lang.Array.insertAt = function(arr, obj, i)
+{
+ arr.splice(i, 0, obj);
+
+ return arr;
+}
+
+qx.lang.Array.insertBefore = function(arr, obj, obj2)
+{
+ var i = arr.indexOf(obj2);
+
+ if (i == -1)
+ {
+ arr.push(obj);
+ }
+ else
+ {
+ arr.splice(i, 0, obj);
+ }
+
+ return arr;
+}
+
+qx.lang.Array.insertAfter = function(arr, o, o2)
+{
+ var i = arr.indexOf(o2);
+
+ if (i == -1 || i == (arr.length-1))
+ {
+ arr.push(o);
+ }
+ else
+ {
+ arr.splice(i+1, 0, o);
+ }
+
+ return arr;
+}
+
+qx.lang.Array.removeAt = function(arr, i) {
+ return arr.splice(i, 1);
+}
+
+qx.lang.Array.removeAll = function(arr) {
+ return arr.splice(0, arr.length);
+}
+
+qx.lang.Array.append = function(arr, a) {
+ Array.prototype.push.apply(arr, a);
+}
+
+qx.lang.Array.remove = function(arr, obj)
+{
+ var i = arr.indexOf(obj);
+
+ if (i != -1) {
+ return arr.splice(i, 1);
+ }
+}
+
+qx.lang.Array.contains = function(arr, obj) {
+ return arr.indexOf(obj) != -1;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Core.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Core.js
new file mode 100644
index 0000000000..11a620e0d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Core.js
@@ -0,0 +1,238 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.Core");
+
+
+/*
+---------------------------------------------------------------------------
+ ADDITIONS FOR NATIVE ERROR OBJECT
+---------------------------------------------------------------------------
+*/
+
+if (!Error.prototype.toString)
+{
+ Error.prototype.toString = function() {
+ return this.message;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ADDITIONS FOR NATIVE FUNCTION OBJECT
+---------------------------------------------------------------------------
+*/
+
+/**
+ * function apply for browsers that do not support it natively, e.g. IE 5.0
+ * <p>
+ * Based on code from youngpup.net licensed under
+ * Creative Commons Attribution 2.0
+ * </p>
+ */
+if (!Function.prototype.apply)
+{
+ Function.prototype.apply = function(oScope, args)
+ {
+ var sarg = [];
+ var rtrn, call;
+
+ if (!oScope) {
+ oScope = window;
+ }
+
+ if (!args) {
+ args = [];
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ sarg[i] = "args["+i+"]";
+ }
+
+ call = "oScope._applyTemp_(" + sarg.join(",") + ");";
+
+ oScope._applyTemp_ = this;
+ rtrn = eval(call);
+
+ delete oScope._applyTemp_;
+
+ return rtrn;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ADDITIONS FOR NATIVE ARRAY OBJECT
+---------------------------------------------------------------------------
+*/
+
+// Add all JavaScript 1.5 Features if they are missing
+// Mozilla 1.8 has support for indexOf, lastIndexOf, forEach, filter, map, some, every
+
+// Some of them from Erik Arvidsson <http://erik.eae.net/>
+// More documentation could be found here:
+// http://www.webreference.com/programming/javascript/ncz/column4/
+// An alternative implementation can be found here:
+// http://www.nczonline.net/archive/2005/7/231
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:lastIndexOf
+if (!Array.prototype.indexOf)
+{
+ Array.prototype.indexOf = function(obj, fromIndex)
+ {
+ if (fromIndex == null)
+ {
+ fromIndex = 0;
+ }
+ else if (fromIndex < 0)
+ {
+ fromIndex = Math.max(0, this.length + fromIndex);
+ }
+
+ for (var i=fromIndex; i<this.length; i++) {
+ if (this[i] === obj) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+}
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:lastIndexOf
+if (!Array.prototype.lastIndexOf)
+{
+ Array.prototype.lastIndexOf = function(obj, fromIndex)
+ {
+ if (fromIndex == null)
+ {
+ fromIndex = this.length-1;
+ }
+ else if (fromIndex < 0)
+ {
+ fromIndex = Math.max(0, this.length + fromIndex);
+ }
+
+ for (var i=fromIndex; i>=0; i--) {
+ if (this[i] === obj) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+}
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:forEach
+if (!Array.prototype.forEach)
+{
+ Array.prototype.forEach = function(f, obj)
+ {
+ // 'l' must be fixed during loop... see docs
+ for (var i=0, l=this.length; i<l; i++) {
+ f.call(obj, this[i], i, this);
+ }
+ }
+}
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:filter
+if (!Array.prototype.filter)
+{
+ Array.prototype.filter = function(f, obj)
+ {
+ // must be fixed during loop... see docs
+ var l = this.length;
+ var res = [];
+
+ for (var i=0; i<l; i++)
+ {
+ if (f.call(obj, this[i], i, this)) {
+ res.push(this[i]);
+ }
+ }
+
+ return res;
+ }
+}
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:map
+if (!Array.prototype.map)
+{
+ Array.prototype.map = function(f, obj)
+ {
+ var l = this.length; // must be fixed during loop... see docs
+ var res = [];
+
+ for (var i=0; i<l; i++) {
+ res.push(f.call(obj, this[i], i, this));
+ }
+
+ return res;
+ }
+}
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:some
+if (!Array.prototype.some)
+{
+ Array.prototype.some = function(f, obj)
+ {
+ var l = this.length; // must be fixed during loop... see docs
+
+ for (var i=0; i<l; i++)
+ {
+ if (f.call(obj, this[i], i, this)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
+
+// http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:every
+if (!Array.prototype.every)
+{
+ Array.prototype.every = function (f, obj)
+ {
+ var l = this.length; // must be fixed during loop... see docs
+ for (var i=0; i<l; i++)
+ {
+ if (!f.call(obj, this[i], i, this)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Generics.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Generics.js
new file mode 100644
index 0000000000..71010a587d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Generics.js
@@ -0,0 +1,142 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.Generics");
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("enable", false);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ JAVASCRIPT 1.6 GENERICS
+---------------------------------------------------------------------------
+*/
+
+// Copyright 2006 Erik Arvidsson
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// http://erik.eae.net/archives/2006/02/28/00.39.52/
+
+// Relicensed under LGPL for qooxdoo.
+
+qx.lang.Generics.init = function()
+{
+ // Make generic versions of instance methods
+ var makeGeneric = [
+ {
+ object: Array,
+ methods:
+ [
+ "join",
+ "reverse",
+ "sort",
+ "push",
+ "pop",
+ "shift",
+ "unshift",
+ "splice",
+ "concat",
+ "slice",
+ "indexOf",
+ "lastIndexOf",
+ "forEach",
+ "map",
+ "filter",
+ "some",
+ "every"
+ ]
+ },
+ {
+ object: String,
+ methods:
+ [
+ "quote",
+ "substring",
+ "toLowerCase",
+ "toUpperCase",
+ "charAt",
+ "charCodeAt",
+ "indexOf",
+ "lastIndexOf",
+ "toLocaleLowerCase",
+ "toLocaleUpperCase",
+ "localeCompare",
+ "match",
+ "search",
+ "replace",
+ "split",
+ "substr",
+ "concat",
+ "slice"
+ ]
+ }];
+
+ for (var i=0, l=makeGeneric.length; i<l; i++)
+ {
+ var constr = makeGeneric[i].object;
+ var methods = makeGeneric[i].methods;
+
+ for (var j=0; j<methods.length; j++)
+ {
+ var name = methods[j];
+
+ if (!constr[name])
+ {
+ constr[methods[j]] = (function(constr, name)
+ {
+ return function(s)
+ {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return constr.prototype[name].apply(s, args);
+ }
+ })(constr, name);
+ }
+ }
+ }
+}
+
+if (qx.Settings.getValueOfClass("qx.lang.Generics", "enable")) {
+ qx.lang.Generics.init();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/MshtmlEmu.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/MshtmlEmu.js
new file mode 100644
index 0000000000..eb21669003
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/MshtmlEmu.js
@@ -0,0 +1,348 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.MshtmlEmu");
+
+/*
+ Parts are based on:
+ moz-behaviors.xml - version 1.1.1 (2005-08-19)
+ Copyright 2004-2005, Dean Edwards
+ License: http://creativecommons.org/licenses/LGPL/2.1/
+ Thanks to Erik Arvidsson (http://webfx.eae.net/dhtml/ieemu/)
+*/
+
+/*
+ We're going to mess about with some of mozilla's interfaces to
+ make them more explorer-like
+*/
+
+/*
+ Note:
+ In my comments where i say support/mimic a property:
+
+ * support = exactly the same as explorer
+ * mimic = close enough
+*/
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ /*
+ --------------------------------------------------------------------------------
+ CSS STYLES: FLOAT
+ --------------------------------------------------------------------------------
+ */
+
+ /*
+ Support microsoft's styleFloat
+ */
+
+ CSSStyleDeclaration.prototype.__defineGetter__("styleFloat", function() {
+ return this.cssFloat;
+ });
+
+ CSSStyleDeclaration.prototype.__defineSetter__("styleFloat", function(vValue) {
+ this.cssFloat = vValue;
+ });
+
+
+
+
+
+ /*
+ --------------------------------------------------------------------------------
+ CSS STYLES: DIMENSIONS
+ --------------------------------------------------------------------------------
+ */
+
+ /*
+ Mimic microsoft's pixel representations of left/top/width/height
+ the getters only work for values that are already pixels
+ */
+
+ CSSStyleDeclaration.prototype.__defineGetter__("pixelLeft", function() {
+ return parseInt(this.left) || 0;
+ });
+
+ CSSStyleDeclaration.prototype.__defineSetter__("pixelLeft", function(vValue) {
+ this.left = vValue + "px";
+ });
+
+ CSSStyleDeclaration.prototype.__defineGetter__("pixelTop", function() {
+ return parseInt(this.top) || 0;
+ });
+
+ CSSStyleDeclaration.prototype.__defineSetter__("pixelTop", function(vValue) {
+ this.top = vValue + "px";
+ });
+
+ CSSStyleDeclaration.prototype.__defineGetter__("pixelWidth", function() {
+ return parseInt(this.width) || 0;
+ });
+
+ CSSStyleDeclaration.prototype.__defineSetter__("pixelWidth", function(vValue) {
+ this.width = vValue + "px";
+ });
+
+ CSSStyleDeclaration.prototype.__defineGetter__("pixelHeight", function() {
+ return parseInt(this.height) || 0;
+ });
+
+ CSSStyleDeclaration.prototype.__defineSetter__("pixelHeight", function(vValue) {
+ this.height = vValue + "px";
+ });
+
+
+
+
+
+ /*
+ --------------------------------------------------------------------------------
+ HTML DOCUMENT EXTENSIONS
+ --------------------------------------------------------------------------------
+ */
+
+ /*
+ Support Microsoft's "all" property
+ */
+ HTMLDocument.prototype.__defineGetter__("all", function() {
+ return this.getElementsByTagName("*");
+ });
+
+ /*
+ Mimic the "createEventObject" method for the document object
+ */
+ HTMLDocument.prototype.createEventObject = function() {
+ return document.createEvent("Events");
+ }
+
+
+
+
+
+
+ /*
+ --------------------------------------------------------------------------------
+ HTML ELEMENT EXTENSIONS
+ --------------------------------------------------------------------------------
+ */
+
+ /*
+ Mimic Microsoft's "all" property
+ */
+ HTMLElement.prototype.__defineGetter__("all", function() {
+ return this.getElementsByTagName("*");
+ });
+
+ /*
+ Support "parentElement"
+ */
+ HTMLElement.prototype.__defineGetter__("parentElement", function() {
+ return (this.parentNode == this.ownerDocument) ? null : this.parentNode;
+ });
+
+ /*
+ Support "uniqueID"
+ */
+ HTMLElement.prototype.__defineGetter__("uniqueID", function()
+ {
+ // a global counter is stored privately as a property of this getter function.
+ // initialise the counter
+ if (!arguments.callee.count) {
+ arguments.callee.count = 0;
+ }
+
+ // create the id and increment the counter
+ var vUniqueID = "moz_id" + arguments.callee.count++;
+
+ // creating a unique id, creates a global reference
+ window[vUniqueID] = this;
+
+ // we don't want to increment next time, so redefine the getter
+ this.__defineGetter__("uniqueID", function(){return vUniqueID;});
+
+ return vUniqueID;
+ });
+
+ /*
+ Mimic Microsoft's "currentStyle"
+ */
+ HTMLElement.prototype.__defineGetter__("currentStyle", function() {
+ return getComputedStyle(this, null);
+ });
+
+ /*
+ Mimic Microsoft's "runtimeStyle"
+ */
+ HTMLElement.prototype.__defineGetter__("runtimeStyle", function()
+ {
+ /*
+ this doesn't work yet (https://bugzilla.mozilla.org/show_bug.cgi?id=45424)
+ return this.ownerDocument.defaultView.getOverrideStyle(this, null);
+ */
+
+ return this.style;
+ });
+
+ /*
+ Support "innerText"
+ */
+ HTMLElement.prototype.__defineGetter__("innerText", function() {
+ return this.textContent;
+ });
+
+ HTMLElement.prototype.__defineSetter__("innerText", function(vValue) {
+ this.textContent = vValue;
+ });
+
+ /*
+ Mimic the "attachEvent" method
+ */
+ HTMLElement.prototype.attachEvent = function(vName, vHandler) {
+ this.addEventListener(vName.slice(2), vHandler, false);
+ }
+
+ /*
+ Mimic the "removeEvent" method
+ */
+ HTMLElement.prototype.removeEvent = function(vName, vHandler) {
+ this.removeEventListener(vName.slice(2), vHandler, false);
+ }
+
+ /*
+ Mimic the "createEventObject" method
+ */
+ HTMLElement.prototype.createEventObject = function() {
+ return this.ownerDocument.createEventObject();
+ }
+
+ /*
+ Mimic the "fireEvent" method
+ */
+ HTMLElement.prototype.fireEvent = function(vName, vEvent)
+ {
+ if (!vEvent) {
+ vEvent = this.ownerDocument.createEventObject();
+ }
+
+ vEvent.initEvent(vName.slice(2), false, false);
+
+ this.dispatchEvent(vEvent);
+
+ // not sure that this should be here??
+ if (typeof this[vName] === "function")
+ {
+ this[vName]();
+ }
+ else if (this.getAttribute(vName))
+ {
+ eval(this.getAttribute(vName));
+ }
+ }
+
+ /*
+ Support the "contains" method
+ */
+ HTMLElement.prototype.contains = function(vElement) {
+ return Boolean(vElement == this || (vElement && this.contains(vElement.parentElement)));
+ }
+
+
+
+
+
+ /*
+ --------------------------------------------------------------------------------
+ EVENT EXTENSIONS
+ --------------------------------------------------------------------------------
+ */
+
+ /*
+ Support Microsoft's proprietary event properties
+ */
+ Event.prototype.__defineGetter__("srcElement", function() {
+ return (this.target.nodeType == Node.ELEMENT_NODE) ? this.target : this.target.parentNode;
+ });
+
+ Event.prototype.__defineGetter__("fromElement",function() {
+ return (this.type == "mouseover") ? this.relatedTarget : (this.type == "mouseout") ? this.srcElement : null;
+ });
+
+ Event.prototype.__defineGetter__("toElement", function() {
+ return (this.type == "mouseout") ? this.relatedTarget : (this.type == "mouseover") ? this.srcElement : null;
+ });
+
+ /*
+ Convert w3c button id's to Microsoft's
+ Breaks with qooxdoo's internal event handling!!!
+ */
+ /*
+ Event.prototype.__defineGetter__("button", function() {
+ return (this.which == 1) ? 1 : (this.which == 2) ? 4 : 2;
+ });
+ */
+
+
+ /*
+ Mimic "returnValue" (default is "true")
+ Breaks with qooxdoo's internal event handling!!!
+ */
+ /*
+ Event.prototype.__defineGetter__("returnValue", function() {
+ return true;
+ });
+
+ Event.prototype.__defineSetter__("returnValue", function(vValue)
+ {
+ if (this.cancelable && !vValue)
+ {
+ // this can't be undone!
+ this.preventDefault();
+
+ this.__defineGetter__("returnValue", function() {
+ return false;
+ });
+ }
+ });
+ */
+
+ /*
+ Mozilla already supports the read-only "cancelBubble"
+ so we only need to define the setter
+ */
+ Event.prototype.__defineSetter__("cancelBubble", function(vValue)
+ {
+ // this can't be undone!
+ if (vValue) {
+ this.stopPropagation();
+ }
+ });
+
+ Event.prototype.__defineGetter__("offsetX", function() {
+ return this.layerX;
+ });
+
+ Event.prototype.__defineGetter__("offsetY", function() {
+ return this.layerY;
+ });
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Number.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Number.js
new file mode 100644
index 0000000000..dc6984ba36
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Number.js
@@ -0,0 +1,48 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.Number");
+
+qx.lang.Number.isInRange = function(nr, vmin, vmax) {
+ return nr >= vmin && nr <= vmax;
+}
+
+qx.lang.Number.isBetweenRange = function(nr, vmin, vmax) {
+ return nr > vmin && nr < vmax;
+}
+
+qx.lang.Number.limit = function(nr, vmin, vmax)
+{
+ if (typeof vmax === "number" && nr > vmax)
+ {
+ return vmax;
+ }
+ else if (typeof vmin === "number" && nr < vmin)
+ {
+ return vmin;
+ }
+ else
+ {
+ return nr;
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Object.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Object.js
new file mode 100644
index 0000000000..31e316ef50
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Object.js
@@ -0,0 +1,121 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.Object");
+
+/*!
+ Function to check if a hash has any keys
+*/
+qx.Class.isEmpty = function(h)
+{
+ for (var s in h) {
+ return false;
+ }
+
+ return true;
+}
+
+qx.Class.hasMinLength = function(h, j)
+{
+ var i=0;
+
+ for (var s in h)
+ {
+ if ((++i)>=j) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+qx.Class.getLength = function(h)
+{
+ var i=0;
+
+ for (var s in h) {
+ i++;
+ }
+
+ return i;
+}
+
+qx.Class.getKeys = function(h)
+{
+ var r = [];
+ for (var s in h) {
+ r.push(s);
+ }
+
+ return r;
+}
+
+qx.Class.getKeysAsString = function(h) {
+ return qx.lang.Object.getKeys(h).join(", ");
+}
+
+qx.Class.getValues = function(h)
+{
+ var r = [];
+ for (var s in h) {
+ r.push(h[s]);
+ }
+
+ return r;
+}
+
+qx.Class.mergeWith = function(vObjectA, vObjectB)
+{
+ for (var vKey in vObjectB) {
+ vObjectA[vKey] = vObjectB[vKey];
+ }
+
+ return vObjectA;
+}
+
+qx.Class.carefullyMergeWith = function(vObjectA, vObjectB) {
+ for (vKey in vObjectB)
+ {
+ if (typeof vObjectA[vKey] === "undefined") {
+ vObjectA[vKey] = vObjectB[vKey];
+ }
+ }
+
+ return vObjectA;
+}
+
+qx.Class.merge = function(vObjectA)
+{
+ var vLength = arguments.length;
+
+ for (var i=1; i<vLength; i++) {
+ qx.lang.Object.mergeWith(vObjectA, arguments[i]);
+ }
+
+ return vObjectA;
+}
+
+qx.Class.copy = function(vObject) {
+ return qx.lang.Object.mergeWith({}, vObject);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Prototypes.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Prototypes.js
new file mode 100644
index 0000000000..fa678c5403
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/Prototypes.js
@@ -0,0 +1,69 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.Prototypes");
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("enable", false);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROTOTYPES MAPPER
+---------------------------------------------------------------------------
+*/
+
+qx.lang.Prototypes.init = function()
+{
+ var key, obj;
+ var objs = [ "String", "Number", "Array" ];
+
+ for (var i=0, len=objs.length; i<len; i++)
+ {
+ obj = objs[i];
+
+ for (key in qx.lang[obj])
+ {
+ window[obj].prototype[key] = (function(key, obj)
+ {
+ return function() {
+ return qx.lang[obj][key].apply(null, Array.prototype.concat.call([this], Array.prototype.slice.call(arguments, 0)));
+ }
+ })(key, obj);
+ }
+ }
+}
+
+if (qx.Settings.getValueOfClass("qx.lang.Generics", "enable")) {
+ qx.lang.Prototypes.init();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/String.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/String.js
new file mode 100644
index 0000000000..9f20f819fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/String.js
@@ -0,0 +1,158 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.String");
+
+qx.Class.toCamelCase = function(str)
+{
+ var vArr = str.split("-"), vLength = vArr.length;
+
+ if(vLength == 1) {
+ return vArr[0];
+ }
+
+ var vNew = str.indexOf("-") == 0 ? vArr[0].charAt(0).toUpperCase() + vArr[0].substring(1) : vArr[0];
+
+ for (var vPart, i=1; i<vLength; i++)
+ {
+ vPart = vArr[i];
+ vNew += vPart.charAt(0).toUpperCase() + vPart.substring(1);
+ }
+
+ return vNew;
+}
+
+qx.Class.trimLeft = function(str) {
+ return str.replace(/^\s+/, "");
+}
+
+qx.Class.trimRight = function(str) {
+ return str.replace(/\s+$/, "");
+}
+
+qx.Class.trim = function(str) {
+ return str.replace(/^\s+|\s+$/g, "");
+}
+
+qx.Class.stripTags = function(str) {
+ return str.replace(/<\/?[^>]+>/gi, "");
+}
+
+qx.Class.startsWith = function(fullstr, substr) {
+ return !fullstr.indexOf(substr);
+}
+
+qx.Class.endsWith = function(fullstr, substr) {
+ return fullstr.lastIndexOf(substr) === fullstr.length-substr.length;
+}
+
+qx.Class.pad = function(str, length, ch)
+{
+ if (typeof ch === "undefined") {
+ ch = "0";
+ }
+
+ var temp = "";
+
+ for (var i=length, l=str.length; l<i; l++) {
+ temp += ch;
+ }
+
+ return temp + str;
+}
+
+qx.Class.toFirstUp = function(str) {
+ return str.charAt(0).toUpperCase() + str.substr(1);
+}
+
+qx.Class.add = function(str, v, sep)
+{
+ if (str == v)
+ {
+ return str;
+ }
+ else if (str == "")
+ {
+ return v;
+ }
+ else
+ {
+ if (qx.util.Validation.isInvalid(sep)) {
+ sep = ",";
+ }
+
+ var a = str.split(sep);
+
+ if (a.indexOf(v) == -1)
+ {
+ a.push(v);
+ return a.join(sep);
+ }
+ else
+ {
+ return str;
+ }
+ }
+}
+
+qx.Class.remove = function(str, v, sep)
+{
+ if (str == v || str == "")
+ {
+ return "";
+ }
+ else
+ {
+ if (qx.util.Validation.isInvalid(sep)) {
+ sep = ",";
+ }
+
+ var a = str.split(sep);
+ var p = a.indexOf(v);
+
+ if (p === -1) {
+ return str;
+ }
+
+ do { a.splice(p, 1); }
+ while((p = a.indexOf(v)) != -1);
+
+ return a.join(sep);
+ }
+}
+
+qx.Class.contains = function(str, s) {
+ return str.indexOf(s) != -1;
+}
+
+
+/**
+ * Escapes all chars that have a special meaning in regular expressions
+ *
+ * @param str {string} the string where to escape the chars.
+ * @return {string} the string with the escaped chars.
+ */
+qx.Class.escapeRegexpChars = function(str) {
+ return str.replace(/([\\\.\(\)\[\]\{\}\^\$\?\+\*])/g, "\\$1");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/XmlEmu.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/XmlEmu.js
new file mode 100644
index 0000000000..326effde5d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/lang/XmlEmu.js
@@ -0,0 +1,188 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.lang.XmlEmu");
+
+/*
+ Based on:
+ IE7, version 0.9 (alpha) (2005-08-19)
+ Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name)
+ License: http://creativecommons.org/licenses/LGPL/2.1/
+ Modelled after: http://www.mozilla.org/xmlextras
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ var DOMParser = function() {
+ /* empty constructor */
+ }
+
+ DOMParser.prototype =
+ {
+ toString: function() {
+ return "[object DOMParser]";
+ },
+
+ parseFromString: function(str, contentType)
+ {
+ /*
+ According to information on the Microsoft XML Team's WebLog
+ it is recommended to check for availability of MSXML versions 6.0 and 3.0.
+ Other versions are included for completeness, 5.0 is excluded as it is
+ "off-by-default" in IE7 (which could trigger a goldbar).
+
+ http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/aabe29a2-bad2-4cea-8387-314174252a74.asp
+
+ See similar code in qx.xml.Core, qx.io.remote.XmlHttpTransport
+ */
+ var vServers =
+ [
+ "MSXML2.DOMDocument.6.0",
+ "MSXML2.DOMDocument.3.0",
+ "MSXML2.DOMDocument.4.0",
+ "MSXML2.DOMDocument", // v3.0
+ "MSXML.DOMDocument", // v2.x
+ "Microsoft.XMLDOM" // v2.x
+ ];
+
+ var xmlDocument;
+
+ for (var i=0, l=vServers.length; i<l; i++)
+ {
+
+ try
+ {
+ xmlDocument = new ActiveXObject(vServers[i]);
+ break;
+ }
+ catch(ex)
+ {
+ xmlDocument = null;
+ }
+ }
+
+ if(xmlDocument) {
+ xmlDocument.loadXML(str);
+ }
+
+ return xmlDocument;
+ },
+
+ // not supported
+ parseFromStream: new Function,
+ baseURI: ""
+ }
+
+ var XMLSerializer = function() {
+ /* empty constructor */
+ }
+
+ XMLSerializer.prototype =
+ {
+ toString: function() {
+ return "[object XMLSerializer]";
+ },
+
+ serializeToString: function(root) {
+ return root.xml || root.outerHTML;
+ },
+
+ // not supported
+ serializeToStream: new Function
+ }
+}
+
+// Implementation of selectNodes() and selectSingleNode()
+// for Gecko/Mozilla browsers
+
+if (window.XPathEvaluator && Element.prototype.__defineGetter__)
+{
+ qx.lang.XmlEmu._xpe = new XPathEvaluator();
+
+ if (!Element.prototype.selectSingleNode)
+ {
+ Element.prototype.selectSingleNode = function (xpath) {
+ return qx.lang.XmlEmu._xpe.evaluate(xpath, this, qx.lang.XmlEmu._xpe.createNSResolver(this), XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+ }
+ }
+
+ if (!Element.prototype.selectNodes)
+ {
+ Element.prototype.selectNodes = function (xpath) {
+ var result = qx.lang.XmlEmu._xpe.evaluate(xpath, this, qx.lang.XmlEmu._xpe.createNSResolver(this), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ var nodes = [];
+
+ for (var i=0; i<result.snapshotLength; i++) {
+ nodes[i] = result.snapshotItem(i);
+ }
+
+ return nodes;
+ }
+ }
+
+ if (!Document.prototype.selectSingleNode)
+ {
+ Document.prototype.selectSingleNode = function (xpath) {
+ return qx.lang.XmlEmu._xpe.evaluate(xpath, this, qx.lang.XmlEmu._xpe.createNSResolver(this), XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+ }
+ }
+
+ if (!Document.prototype.selectNodes)
+ {
+ Document.prototype.selectNodes = function (xpath) {
+ var result = qx.lang.XmlEmu._xpe.evaluate(xpath, this, qx.lang.XmlEmu._xpe.createNSResolver(this), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ var nodes = [];
+
+ for (var i=0; i<result.snapshotLength; i++) {
+ nodes[i] = result.snapshotItem(i);
+ }
+
+ return nodes;
+ }
+ }
+
+ Element.prototype.__defineGetter__('text',
+ function() {
+ var text = "";
+ for (var i=0; i<this.childNodes.length; i++) {
+ text += this.childNodes[i].text != null ? this.childNodes[i].text : "";
+ }
+ return text;
+ }
+ );
+
+ Element.prototype.__lookupGetter__('text');
+
+ if (!window.Attr) {
+ Attr = new Function();
+ }
+ Attr.prototype.__defineGetter__('text', function(){ return this.nodeValue; });
+ Attr.prototype.__lookupGetter__('text');
+
+ if (!window.Text) {
+ Text = new Function();
+ }
+ Text.prototype.__defineGetter__('text', function(){ return this.nodeValue; });
+ Text.prototype.__lookupGetter__('text');
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AliasManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AliasManager.js
new file mode 100644
index 0000000000..5ba86b7a32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AliasManager.js
@@ -0,0 +1,172 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/**
+ * This singleton manage global resource aliases
+ *
+ * @event change {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.manager.object.AliasManager", qx.core.Target,
+function()
+{
+ qx.core.Target.call(this);
+
+ // Contains defined aliases (like icons/, widgets/, application/, ...)
+ this._aliases = {};
+
+ // Containes computed paths
+ this._uris = {};
+
+ // Define static alias from setting
+ this.add("static", this.getSetting("staticUri"));
+});
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("resourceUri", "../../resource");
+qx.Settings.setDefault("staticUri", qx.Settings.getValue("resourceUri") + "/static");
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ALIAS MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(vPrefix, vPath)
+{
+ this._aliases[vPrefix] = vPath;
+ this.createDispatchEvent("change");
+}
+
+qx.Proto.remove = function(vPrefix)
+{
+ delete this._aliases[vPrefix];
+ this.createDispatchEvent("change");
+}
+
+qx.Proto.resolve = function(vPrefix) {
+ return this._aliases[vPrefix];
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ URI HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.resolvePath = function(vPath, vForceUpdate)
+{
+ var vUri = this._uris[vPath];
+
+ if (vForceUpdate || typeof vUri === "undefined")
+ {
+ vUri = this._uris[vPath] = this._computePath(vPath);
+ // this.debug("URI: " + vPath + " => " + vUri);
+ }
+
+ return vUri;
+}
+
+qx.Proto._computePath = function(vPath, vForce)
+{
+ switch(vPath.charAt(0))
+ {
+ case "/":
+ case ".":
+ return vPath;
+
+ default:
+ if (qx.lang.String.startsWith(vPath, qx.net.Protocol.URI_HTTP) || qx.lang.String.startsWith(vPath, qx.net.Protocol.URI_HTTPS) || qx.lang.String.startsWith(vPath, qx.net.Protocol.URI_FILE)) {
+ return vPath;
+ }
+
+ var vAlias = vPath.substring(0, vPath.indexOf("/"));
+ var vResolved = this._aliases[vAlias];
+
+ if (qx.util.Validation.isValidString(vResolved)) {
+ return vResolved + vPath.substring(vAlias.length);
+ }
+
+ return vPath;
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._aliases = null;
+ this._uris = null;
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AppearanceManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AppearanceManager.js
new file mode 100644
index 0000000000..680bd09073
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/AppearanceManager.js
@@ -0,0 +1,139 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.manager.object.AppearanceManager", qx.manager.object.ObjectManager,
+function() {
+ qx.manager.object.ObjectManager.call(this);
+
+ // Themes
+ this._appearanceThemes = {};
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("appearanceTheme", "qx.theme.appearance.Classic");
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "appearanceTheme", type : "object", allowNull : false, instance : "qx.renderer.theme.AppearanceTheme" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTRATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.registerAppearanceTheme = function(vThemeClass)
+{
+ this._appearanceThemes[vThemeClass.classname] = vThemeClass;
+
+ if (vThemeClass.classname == this.getSetting("appearanceTheme")) {
+ this.setAppearanceTheme(vThemeClass.getInstance());
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyAppearanceTheme = function(propValue, propOldValue, propData)
+{
+ var vComp = qx.core.Init.getInstance().getComponent();
+
+ if (vComp && vComp.isUiReady()) {
+ qx.ui.core.ClientDocument.getInstance()._recursiveAppearanceThemeUpdate(propValue, propOldValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Themes
+ this._appearanceThemes = null;
+
+ return qx.manager.object.ObjectManager.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ColorManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ColorManager.js
new file mode 100644
index 0000000000..6eb4038bd8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ColorManager.js
@@ -0,0 +1,227 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#optional(qx.ui.form.Button)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.manager.object.ColorManager", qx.manager.object.ObjectManager,
+function()
+{
+ qx.manager.object.ObjectManager.call(this);
+
+ // Themes
+ this._colorThemes = {};
+
+ // Contains the qx.renderer.color.ColorObjects which
+ // represent a themed color.
+ this._dependentObjects = {};
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("colorTheme", "qx.theme.color.WindowsRoyale");
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "colorTheme", type : "object", allowNull : false, instance : "qx.renderer.theme.ColorTheme" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTRATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.registerColorTheme = function(vThemeClass)
+{
+ this._colorThemes[vThemeClass.classname] = vThemeClass;
+
+ if (vThemeClass.classname == this.getSetting("colorTheme")) {
+ this.setColorTheme(vThemeClass.getInstance());
+ }
+}
+
+qx.Proto.setColorThemeById = function(vId) {
+ this.setColorTheme(this._colorThemes[vId].getInstance());
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PUBLIC METHODS FOR qx.renderer.color.ColorOBJECTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(oObject)
+{
+ var vValue = oObject.getValue();
+
+ this._objects[vValue] = oObject;
+
+ if (oObject.isThemedColor()) {
+ this._dependentObjects[vValue] = oObject;
+ }
+}
+
+qx.Proto.remove = function(oObject)
+{
+ var vValue = oObject.getValue();
+
+ delete this._objects[vValue];
+ delete this._dependentObjects[vValue];
+}
+
+qx.Proto.has = function(vValue) {
+ return this._objects[vValue] != null;
+}
+
+qx.Proto.get = function(vValue) {
+ return this._objects[vValue];
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyColorTheme = function(propValue, propOldValue, propData)
+{
+ propValue.compile();
+
+ for (var i in this._dependentObjects) {
+ this._dependentObjects[i]._updateTheme(propValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.createThemeList = function(vParent, xCor, yCor)
+{
+ var vButton;
+ var vThemes = this._colorThemes;
+ var vIcon = "icon/16/colors.png";
+ var vPrefix = "Color Theme: ";
+ var vEvent = "execute";
+
+ for (var vId in vThemes)
+ {
+ var vObj = vThemes[vId].getInstance();
+ var vButton = new qx.ui.form.Button(vPrefix + vObj.getTitle(), vIcon);
+
+ vButton.setLocation(xCor, yCor);
+ vButton.addEventListener(vEvent, new Function("qx.manager.object.ColorManager.getInstance().setColorThemeById('" + vId + "')"));
+
+ vParent.add(vButton);
+
+ yCor += 30;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Themes
+ this._colorThemes = null;
+
+ // Cleanup dependent objects
+ for (var i in this._dependentObjects) {
+ delete this._dependentObjects[i];
+ }
+
+ delete this._dependentObjects;
+
+ return qx.manager.object.ObjectManager.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/IframeManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/IframeManager.js
new file mode 100644
index 0000000000..79695169b2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/IframeManager.js
@@ -0,0 +1,75 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/**
+ * This singleton manages multiple instances of qx.ui.embed.Iframe.
+ * <p>
+ * The problem: When dragging over an iframe then all mouse events will be
+ * passed to the document of the iframe, not the main document.
+ * <p>
+ * The solution: In order to be able to track mouse events over iframes, this
+ * manager will block all iframes during a drag with a glasspane.
+ */
+qx.OO.defineClass("qx.manager.object.IframeManager", qx.manager.object.ObjectManager,
+function(){
+ qx.manager.object.ObjectManager.call(this);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.handleMouseDown = function(evt) {
+ var iframeMap = this.getAll();
+
+ for (var key in iframeMap) {
+ var iframe = iframeMap[key];
+ iframe.block();
+ }
+}
+
+qx.Proto.handleMouseUp = function(evt) {
+ var iframeMap = this.getAll();
+
+ for (var key in iframeMap) {
+ var iframe = iframeMap[key];
+ iframe.release();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImageManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImageManager.js
new file mode 100644
index 0000000000..f1fbfe6fb9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImageManager.js
@@ -0,0 +1,305 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#optional(qx.ui.form.Button)
+
+************************************************************************ */
+
+/*!
+ This singleton manage the global image path (prefix) and allowes themed icons.
+*/
+qx.OO.defineClass("qx.manager.object.ImageManager", qx.manager.object.ObjectManager,
+function()
+{
+ qx.manager.object.ObjectManager.call(this);
+
+ // Themes
+ this._iconThemes = {};
+ this._widgetThemes = {};
+
+ // Contains known image sources (all of them, if loaded or not)
+ // The value is a number which represents the number of image
+ // instances which use this source
+ this._sources = {};
+
+ // Change event connection to AliasManager
+ qx.manager.object.AliasManager.getInstance().addEventListener("change", this._onaliaschange, this);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("iconTheme", "qx.theme.icon.CrystalSvg");
+qx.Settings.setDefault("widgetTheme", "qx.theme.widget.Windows");
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "iconTheme", type : "object", instance : "qx.renderer.theme.IconTheme" });
+qx.OO.addProperty({ name : "widgetTheme", type : "object", instance : "qx.renderer.theme.WidgetTheme" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTRATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.registerIconTheme = function(vThemeClass)
+{
+ this._iconThemes[vThemeClass.classname] = vThemeClass;
+
+ if (vThemeClass.classname == this.getSetting("iconTheme")) {
+ this.setIconTheme(vThemeClass.getInstance());
+ }
+}
+
+qx.Proto.registerWidgetTheme = function(vThemeClass)
+{
+ this._widgetThemes[vThemeClass.classname] = vThemeClass;
+
+ if (vThemeClass.classname == this.getSetting("widgetTheme")) {
+ this.setWidgetTheme(vThemeClass.getInstance());
+ }
+}
+
+qx.Proto.setIconThemeById = function(vId) {
+ this.setIconTheme(this._iconThemes[vId].getInstance());
+}
+
+qx.Proto.setWidgetThemeById = function(vId) {
+ this.setWidgetTheme(this._widgetThemes[vId].getInstance());
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onaliaschange = function() {
+ this._updateImages();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyIconTheme = function(propValue, propOldValue, propData)
+{
+ propValue ? qx.manager.object.AliasManager.getInstance().add("icon", propValue.getSetting("imageUri")) : qx.manager.object.AliasManager.getInstance().remove("icon");
+ return true;
+}
+
+qx.Proto._modifyWidgetTheme = function(propValue, propOldValue, propData)
+{
+ propValue ? qx.manager.object.AliasManager.getInstance().add("widget", propValue.getSetting("imageUri")) : qx.manager.object.AliasManager.getInstance().remove("widget");
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PRELOAD API
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getPreloadImageList = function()
+{
+ var vPreload = {};
+
+ for (var vSource in this._sources)
+ {
+ if (this._sources[vSource]) {
+ vPreload[vSource] = true;
+ }
+ }
+
+ return vPreload;
+}
+
+qx.Proto.getPostPreloadImageList = function()
+{
+ var vPreload = {};
+
+ for (var vSource in this._sources)
+ {
+ if (!this._sources[vSource]) {
+ vPreload[vSource] = true;
+ }
+ }
+
+ return vPreload;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTERNAL HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._updateImages = function()
+{
+ var vAll = this.getAll();
+ var vPreMgr = qx.manager.object.ImagePreloaderManager.getInstance();
+ var vAliasMgr = qx.manager.object.AliasManager.getInstance();
+ var vObject;
+
+ // Recreate preloader of affected images
+ for (var vHashCode in vAll)
+ {
+ vObject = vAll[vHashCode];
+ vObject.setPreloader(vPreMgr.create(vAliasMgr.resolvePath(vObject.getSource(), true)));
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+// TODO: rename to createIconThemeList
+qx.Proto.createThemeList = function(vParent, xCor, yCor)
+{
+ var vButton;
+ var vThemes = this._iconThemes;
+ var vIcon = "icon/16/icons.png";
+ var vPrefix = "Icon Theme: ";
+ var vEvent = "execute";
+
+ for (var vId in vThemes)
+ {
+ var vObj = vThemes[vId].getInstance();
+ var vButton = new qx.ui.form.Button(vPrefix + vObj.getTitle(), vIcon);
+
+ vButton.setLocation(xCor, yCor);
+ vButton.addEventListener(vEvent, new Function("qx.manager.object.ImageManager.getInstance().setIconThemeById('" + vId + "')"));
+
+ vParent.add(vButton);
+
+ yCor += 30;
+ }
+}
+
+qx.Proto.preload = function(vPath) {
+ qx.manager.object.ImagePreloaderManager.getInstance().create(qx.manager.object.AliasManager.getInstance().resolvePath(vPath));
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Change event connection to AliasManager
+ qx.manager.object.AliasManager.getInstance().removeEventListener("change", this._onaliaschange, this);
+
+ // Delete counter field
+ this._sources = null;
+
+ // Themes
+ this._iconThemes = null;
+ this._widgetThemes = null;
+
+ return qx.manager.object.ObjectManager.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImagePreloaderManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImagePreloaderManager.js
new file mode 100644
index 0000000000..8c0d68eb6b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ImagePreloaderManager.js
@@ -0,0 +1,82 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/*!
+ This singleton manage all qx.io.image.Preloader instances.
+*/
+qx.OO.defineClass("qx.manager.object.ImagePreloaderManager", qx.manager.object.ObjectManager,
+function() {
+ qx.manager.object.ObjectManager.call(this);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(vObject) {
+ this._objects[vObject.getUri()] = vObject;
+}
+
+qx.Proto.remove = function(vObject) {
+ delete this._objects[vObject.getUri()];
+}
+
+qx.Proto.has = function(vSource) {
+ return this._objects[vSource] != null;
+}
+
+qx.Proto.get = function(vSource) {
+ return this._objects[vSource];
+}
+
+qx.Proto.create = function(vSource)
+{
+ if (this._objects[vSource]) {
+ return this._objects[vSource];
+ }
+
+ return new qx.io.image.Preloader(vSource);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/MenuManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/MenuManager.js
new file mode 100644
index 0000000000..b7914b4bcf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/MenuManager.js
@@ -0,0 +1,92 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+/*!
+ This singleton manages multiple instances of qx.ui.menu.Menu and their state.
+*/
+qx.OO.defineClass("qx.manager.object.MenuManager", qx.manager.object.ObjectManager,
+function(){
+ qx.manager.object.ObjectManager.call(this);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.update = function(vTarget, vEventName)
+{
+ var vMenu, vHashCode;
+ var vAll = this.getAll();
+
+ for (vHashCode in vAll)
+ {
+ vMenu = vAll[vHashCode];
+
+ if(!vMenu.getAutoHide()) {
+ continue;
+ }
+
+ if (vTarget && vTarget.getMenu && vTarget.getMenu()) {
+ continue;
+ }
+
+ // Hide on global events (mouseup, window focus, window blur, ...)
+ if (!vTarget)
+ {
+ vMenu.hide();
+ continue;
+ }
+
+ // Hide only if the target is not a button inside this
+ // or any sub menu and is not the opener
+ if (vMenu.getOpener() !== vTarget && ((vTarget && !vMenu.isSubButton(vTarget)) || vEventName !== "mousedown"))
+ {
+ vMenu.hide();
+ continue;
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ObjectManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ObjectManager.js
new file mode 100644
index 0000000000..c1160ab64b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ObjectManager.js
@@ -0,0 +1,117 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/*!
+ This class allows basic managment of assigned objects.
+*/
+qx.OO.defineClass("qx.manager.object.ObjectManager", qx.core.Target,
+function()
+{
+ qx.core.Target.call(this);
+
+ this._objects = {};
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER API
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(vObject)
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._objects[vObject.toHashCode()] = vObject;
+ return true;
+}
+
+qx.Proto.remove = function(vObject)
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ delete this._objects[vObject.toHashCode()];
+ return true;
+}
+
+qx.Proto.has = function(vObject) {
+ return this._objects[vObject.toHashCode()] != null;
+}
+
+qx.Proto.get = function(vObject) {
+ return this._objects[vObject.toHashCode()];
+}
+
+qx.Proto.getAll = function() {
+ return this._objects;
+}
+
+qx.Proto.enableAll = function()
+{
+ for (var vHashCode in this._objects) {
+ this._objects[vHashCode].setEnabled(true);
+ };
+};
+
+qx.Proto.disableAll = function()
+{
+ for (var vHashCode in this._objects) {
+ this._objects[vHashCode].setEnabled(false);
+ };
+};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ if (this._objects)
+ {
+ for (var i in this._objects) {
+ delete this._objects[i];
+ }
+
+ delete this._objects;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/PopupManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/PopupManager.js
new file mode 100644
index 0000000000..218c988c83
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/PopupManager.js
@@ -0,0 +1,77 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_popup)
+
+************************************************************************ */
+
+/*!
+ This singleton is used to manager multiple instances of popups and their state.
+*/
+qx.OO.defineClass("qx.manager.object.PopupManager", qx.manager.object.ObjectManager,
+function() {
+ qx.manager.object.ObjectManager.call(this);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.update = function(vTarget)
+{
+ // be sure that target is correctly set (needed for contains() later)
+ if (!(vTarget instanceof qx.ui.core.Widget)) {
+ vTarget = null;
+ }
+
+ var vPopup, vHashCode;
+ var vAll = this.getAll();
+
+ for (vHashCode in vAll)
+ {
+ vPopup = vAll[vHashCode];
+
+ if(!vPopup.getAutoHide() || vTarget == vPopup || vPopup.contains(vTarget)) {
+ continue;
+ }
+
+ vPopup.hide();
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ToolTipManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ToolTipManager.js
new file mode 100644
index 0000000000..f29be08eda
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/ToolTipManager.js
@@ -0,0 +1,191 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_popup)
+
+************************************************************************ */
+
+/*!
+ This manages ToolTip instances
+*/
+qx.OO.defineClass("qx.manager.object.ToolTipManager", qx.manager.object.ObjectManager,
+function() {
+ qx.manager.object.ObjectManager.call(this);
+});
+
+qx.OO.addProperty({ name : "currentToolTip", type : "object", instance : "qx.ui.popup.ToolTip" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyCurrentToolTip = function(propValue, propOldValue, propData)
+{
+ // Return if the new tooltip is a child of the old one
+ if(propOldValue && propOldValue.contains(propValue)) {
+ return;
+ }
+
+ // If old tooltip existing, hide it and clear widget binding
+ if(propOldValue)
+ {
+ propOldValue.hide();
+
+ propOldValue._stopShowTimer();
+ propOldValue._stopHideTimer();
+ }
+
+ // If new tooltip is not null, set it up and start the timer
+ if(propValue) {
+ propValue._startShowTimer();
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT INTERFACE: MOUSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.handleMouseOver = function(e)
+{
+ var vTarget = e.getTarget();
+ var vToolTip;
+
+ // Allows us to use DOM Nodes as tooltip target :)
+ if (!(vTarget instanceof qx.ui.core.Widget) && vTarget.nodeType == 1) {
+ vTarget = qx.event.handler.EventHandler.getTargetObject(vTarget);
+ }
+
+ //Search first parent which has a tooltip
+ while(vTarget != null && !(vToolTip = vTarget.getToolTip())) {
+ vTarget = vTarget.getParent();
+ }
+
+ // Bind tooltip to widget
+ if (vToolTip != null) {
+ vToolTip.setBoundToWidget(vTarget);
+ }
+
+ // Set Property
+ this.setCurrentToolTip(vToolTip);
+}
+
+qx.Proto.handleMouseOut = function(e)
+{
+ var vTarget = e.getTarget();
+ var vRelatedTarget = e.getRelatedTarget();
+
+ var vToolTip = this.getCurrentToolTip();
+
+ // If there was a tooltip and
+ // - the destination target is the current tooltip
+ // or
+ // - the current tooltip contains the destination target
+ if(vToolTip && (vRelatedTarget == vToolTip || vToolTip.contains(vRelatedTarget))) {
+ return;
+ }
+
+ // If the destination target exists and the target contains it
+ if(vRelatedTarget && vTarget && vTarget.contains(vRelatedTarget)) {
+ return;
+ }
+
+ // If there was a tooltip and there is no new one
+ if(vToolTip && !vRelatedTarget) {
+ this.setCurrentToolTip(null);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT INTERFACE: FOCUS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.handleFocus = function(e)
+{
+ var vTarget = e.getTarget();
+ var vToolTip = vTarget.getToolTip();
+
+ // Only set new tooltip if focus widget
+ // has one
+ if(vToolTip != null)
+ {
+ // Bind tooltip to widget
+ vToolTip.setBoundToWidget(vTarget);
+
+ // Set Property
+ this.setCurrentToolTip(vToolTip);
+ }
+}
+
+qx.Proto.handleBlur = function(e)
+{
+ var vTarget = e.getTarget();
+
+ if(!vTarget) {
+ return;
+ }
+
+ var vToolTip = this.getCurrentToolTip();
+
+ // Only set to null if blured widget is the
+ // one which has created the current tooltip
+ if(vToolTip && vToolTip == vTarget.getToolTip()) {
+ this.setCurrentToolTip(null);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js
new file mode 100644
index 0000000000..96e13acd4d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js
@@ -0,0 +1,158 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_window)
+
+************************************************************************ */
+
+/*!
+ This singleton manages qx.ui.window.Windows
+*/
+qx.OO.defineClass("qx.manager.object.WindowManager", qx.manager.object.ObjectManager,
+function() {
+ qx.manager.object.ObjectManager.call(this);
+});
+
+qx.OO.addProperty({ name : "activeWindow", type : "object" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyActiveWindow = function(propValue, propOldValue, propData)
+{
+ qx.manager.object.PopupManager.getInstance().update();
+
+ if (propOldValue) {
+ propOldValue.setActive(false);
+ }
+
+ if (propValue) {
+ propValue.setActive(true);
+ }
+
+ if (propOldValue && propOldValue.getModal()) {
+ propOldValue.getTopLevelWidget().release(propOldValue);
+ }
+
+ if (propValue && propValue.getModal()) {
+ propValue.getTopLevelWidget().block(propValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.update = function(oTarget)
+{
+ var vWindow, vHashCode;
+ var vAll = this.getAll();
+
+ for (var vHashCode in vAll)
+ {
+ vWindow = vAll[vHashCode];
+
+ if(!vWindow.getAutoHide()) {
+ continue;
+ }
+
+ vWindow.hide();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER INTERFACE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.compareWindows = function(w1, w2)
+{
+ switch(w1.getWindowManager().getActiveWindow())
+ {
+ case w1:
+ return 1;
+
+ case w2:
+ return -1;
+ }
+
+ return w1.getZIndex() - w2.getZIndex();
+}
+
+qx.Proto.add = function(vWindow)
+{
+ qx.manager.object.ObjectManager.prototype.add.call(this, vWindow);
+
+ // this.debug("Add: " + vWindow);
+ this.setActiveWindow(vWindow);
+}
+
+qx.Proto.remove = function(vWindow)
+{
+ qx.manager.object.ObjectManager.prototype.remove.call(this, vWindow);
+
+ // this.debug("Remove: " + vWindow);
+
+ if (this.getActiveWindow() == vWindow)
+ {
+ var a = [];
+ for (var i in this._objects) {
+ a.push(this._objects[i]);
+ }
+
+ var l = a.length;
+
+ if (l==0)
+ {
+ this.setActiveWindow(null);
+ }
+ else if (l==1)
+ {
+ this.setActiveWindow(a[0]);
+ }
+ else if (l>1)
+ {
+ a.sort(this.compareWindows);
+ this.setActiveWindow(a[l-1]);
+ }
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/DomSelectionManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/DomSelectionManager.js
new file mode 100644
index 0000000000..3205dc40ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/DomSelectionManager.js
@@ -0,0 +1,242 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.manager.selection.DomSelectionManager", qx.manager.selection.SelectionManager,
+function(vBoundedWidget)
+{
+ qx.manager.selection.SelectionManager.call(this, vBoundedWidget);
+
+ // the children does not fire onmouseover events so we could
+ // not enable this and make it functional
+ this.setDragSelection(false);
+
+ this._selectedItems.getItemHashCode = this.getItemHashCode;
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO BOUNDED WIDGET (DOM NODES)
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemEnabled = function(oItem) {
+ return true;
+}
+
+qx.Proto.getItemClassName = function(vItem) {
+ return vItem.className || "";
+}
+
+qx.Proto.setItemClassName = function(vItem, vClassName) {
+ return vItem.className = vClassName;
+}
+
+qx.Proto.getItemBaseClassName = function(vItem)
+{
+ var p = vItem.className.split(" ")[0];
+ return p ? p : "Status";
+}
+
+qx.Proto.getNextSibling = function(vItem) {
+ return vItem.nextSibling;
+}
+
+qx.Proto.getPreviousSibling = function(vItem) {
+ return vItem.previousSibling;
+}
+
+qx.Proto.getFirst = function() {
+ return this.getItems()[0];
+}
+
+qx.Proto.getLast = function()
+{
+ var vItems = this.getItems();
+ return vItems[vItems.length-1];
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemLeft = function(vItem) {
+ return vItem.offsetLeft;
+}
+
+qx.Proto.getItemTop = function(vItem) {
+ return vItem.offsetTop;
+}
+
+qx.Proto.getItemWidth = function(vItem) {
+ return vItem.offsetWidth;
+}
+
+qx.Proto.getItemHeight = function(vItem) {
+ return vItem.offsetHeight;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemHashCode = function(oItem)
+{
+ if (oItem._hash) {
+ return oItem._hash;
+ }
+
+ return oItem._hash = qx.core.Object.toHashCode(oItem);
+}
+
+qx.Proto.isBefore = function(vItem1, vItem2)
+{
+ var pa = vItem1.parentNode;
+
+ for (var i=0, l=pa.childNodes.length; i<l; i++)
+ {
+ switch(pa.childNodes[i])
+ {
+ case vItem2:
+ return false;
+
+ case vItem1:
+ return true;
+ }
+ }
+}
+
+qx.Proto.scrollItemIntoView = function(vItem) {
+ this.getBoundedWidget().scrollItemIntoView(vItem);
+}
+
+qx.Proto.getItems = function() {
+ return this.getBoundedWidget().getItems();
+}
+
+qx.Proto.getAbove = function(vItem)
+{
+ var vParent = vItem.parentNode;
+ var vFound = false;
+ var vLeft = vItem.offsetLeft;
+ var vChild;
+
+ for (var i=vParent.childNodes.length-1; i>0; i--)
+ {
+ vChild = vParent.childNodes[i];
+
+ if (vFound == false)
+ {
+ if (vChild == vItem) {
+ vFound = true;
+ }
+ }
+ else
+ {
+ if (vChild.offsetLeft == vLeft)
+ {
+ return vChild;
+ }
+ }
+ }
+}
+
+qx.Proto.getUnder = function(vItem)
+{
+ var vParent = vItem.parentNode;
+ var vFound = false;
+ var vLeft = vItem.offsetLeft;
+ var vChild;
+
+ for (var i=0, l=vParent.childNodes.length; i<l; i++)
+ {
+ vChild = vParent.childNodes[i];
+
+ if (vFound == false)
+ {
+ if (vChild == vItem) {
+ vFound = true;
+ }
+ }
+ else
+ {
+ if (vChild.offsetLeft == vLeft)
+ {
+ return vChild;
+ }
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ITEM CSS STATE MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._updateState = function(vItem, vState, vIsState)
+{
+ var c = this.getItemClassName(vItem);
+ var n = this.getItemBaseClassName(vItem) + "-" + vState;
+
+ this.setItemClassName(vItem, vIsState ? qx.lang.String.add(c, n, " ") : qx.lang.String.remove(c, n, " "));
+}
+
+qx.Proto.renderItemSelectionState = function(vItem, vIsSelected) {
+ this._updateState(vItem, "Selected", vIsSelected);
+}
+
+qx.Proto.renderItemAnchorState = function(vItem, vIsAnchor) {
+ this._updateState(vItem, "Anchor", vIsAnchor);
+}
+
+qx.Proto.renderItemLeadState = function(vItem, vIsLead) {
+ this._updateState(vItem, "Lead", vIsLead);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/RadioManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/RadioManager.js
new file mode 100644
index 0000000000..bac72a4144
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/RadioManager.js
@@ -0,0 +1,292 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+/*!
+ Each instance manage vItems set of radio options: qx.ui.form.RadioButton, qx.ui.toolbar.RadioButton, ...
+*/
+qx.OO.defineClass("qx.manager.selection.RadioManager", qx.core.Target,
+function(vName, vMembers)
+{
+ // we don't need the manager data structures
+ qx.core.Target.call(this);
+
+ // create item array
+ this._items = [];
+
+ // apply name property
+ this.setName(qx.util.Validation.isValidString(vName) ? vName : qx.manager.selection.RadioManager.AUTO_NAME_PREFIX + this._hashCode);
+
+ if (qx.util.Validation.isValidArray(vMembers)) {
+ // add() iterates over arguments, but vMembers is an array
+ this.add.apply(this, vMembers);
+ }
+});
+
+qx.manager.selection.RadioManager.AUTO_NAME_PREFIX = "qx-radio-";
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "selected" });
+qx.OO.addProperty({ name : "name", type : "string" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItems = function() {
+ return this._items;
+}
+
+qx.Proto.handleItemChecked = function(vItem, vChecked)
+{
+ if (vChecked)
+ {
+ this.setSelected(vItem);
+ }
+ else if (this.getSelected() == vItem)
+ {
+ this.setSelected(null);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTRY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(varargs)
+{
+ var vItems = arguments;
+ var vLength = vItems.length;
+
+ var vLast = vItems[vLength-1];
+
+ if (!(vLast instanceof qx.ui.core.Parent) && !(vLast instanceof qx.ui.basic.Terminator)) {
+ vLength--;
+ }
+
+ var vItem;
+ for (var i=0; i<vLength; i++)
+ {
+ vItem = vItems[i];
+
+ if(qx.lang.Array.contains(this._items, vItem)) {
+ return;
+ }
+
+ // Push RadioButton to array
+ this._items.push(vItem);
+
+ // Inform radio button about new manager
+ vItem.setManager(this);
+
+ // Need to update internal value?
+ if(vItem.getChecked()) {
+ this.setSelected(vItem);
+ }
+
+ // Make enabled the same status as the the manager has
+ vItem.setEnabled(this.getEnabled());
+
+ // Apply Make name the same
+ vItem.setName(this.getName());
+ }
+}
+
+qx.Proto.remove = function(vItem)
+{
+ // Remove RadioButton from array
+ qx.lang.Array.remove(this._items, vItem);
+
+ // Inform radio button about new manager
+ vItem.setManager(null);
+
+ // if the radio was checked, set internal selection to null
+ if(vItem.getChecked()) {
+ this.setSelected(null);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifySelected = function(propValue, propOldValue, propData)
+{
+ if (propOldValue && propOldValue.getChecked()) {
+ propOldValue.setChecked(false);
+ }
+
+ if (propValue && !propValue.getChecked()) {
+ propValue.setChecked(true);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ for (var i=0, vItems=this._items, vLength=vItems.length; i<vLength; i++) {
+ vItems[i].setEnabled(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyName = function(propValue, propOldValue, propData)
+{
+ for (var i=0, vItems=this._items, vLength=vItems.length; i<vLength; i++) {
+ vItems[i].setName(propValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SELECTION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.selectNext = function(vItem)
+{
+ var vIndex = this._items.indexOf(vItem);
+
+ if(vIndex == -1) {
+ return;
+ }
+
+ var i = 0;
+ var vLength = this._items.length;
+
+ // Find next enabled item
+ vIndex = (vIndex + 1) % vLength;
+ while(i < vLength && !this._items[vIndex].getEnabled())
+ {
+ vIndex = (vIndex + 1) % vLength;
+ i++;
+ }
+
+ this._selectByIndex(vIndex);
+}
+
+qx.Proto.selectPrevious = function(vItem)
+{
+ var vIndex = this._items.indexOf(vItem);
+
+ if(vIndex == -1) {
+ return;
+ }
+
+ var i = 0;
+ var vLength = this._items.length;
+
+ // Find previous enabled item
+ vIndex = (vIndex - 1 + vLength) % vLength;
+ while(i < vLength && !this._items[vIndex].getEnabled())
+ {
+ vIndex = (vIndex - 1 + vLength) % vLength;
+ i++;
+ }
+
+ this._selectByIndex(vIndex);
+}
+
+qx.Proto._selectByIndex = function(vIndex)
+{
+ if(this._items[vIndex].getEnabled())
+ {
+ this.setSelected(this._items[vIndex]);
+ this._items[vIndex].setFocused(true);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.forceSelected(null);
+
+ if (this._items)
+ {
+ for (var i, vItems=this._items, vLength=vItems.length; i<vLength; i++)
+ {
+ vItems[i].dispose();
+ delete vItems[i];
+ }
+
+ vItems=null;
+ delete this._items;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/SelectionManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/SelectionManager.js
new file mode 100644
index 0000000000..a37c2459b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/SelectionManager.js
@@ -0,0 +1,1433 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+/**
+ * This class represents a selection and manage incoming events for widgets
+ * which need selection support.
+ *
+ * @event changeSelection {qx.event.type.DataEvent} sets the data property of the event object to an arryas of selected items.
+ */
+qx.OO.defineClass("qx.manager.selection.SelectionManager", qx.core.Target,
+function(vBoundedWidget)
+{
+ qx.core.Target.call(this);
+
+ this._selectedItems = new qx.type.Selection(this);
+
+ if (qx.util.Validation.isValid(vBoundedWidget)) {
+ this.setBoundedWidget(vBoundedWidget);
+ }
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+This contains the currently assigned widget (qx.ui.form.List, ...)
+*/
+qx.OO.addProperty({ name : "boundedWidget", type : "object" });
+
+/*!
+Should multiple selection be allowed?
+*/
+qx.OO.addProperty({ name : "multiSelection", type : "boolean", defaultValue : true });
+
+/*!
+Enable drag selection?
+*/
+qx.OO.addProperty({ name : "dragSelection", type : "boolean", defaultValue : true });
+
+/*!
+Should the user be able to select
+*/
+qx.OO.addProperty({ name : "canDeselect", type : "boolean", defaultValue : true });
+
+/*!
+Should a change event be fired?
+*/
+qx.OO.addProperty({ name : "fireChange", type : "boolean", defaultValue : true });
+
+/*!
+The current anchor in range selections.
+*/
+qx.OO.addProperty({ name : "anchorItem", type : "object" });
+
+/*!
+The last selected item
+*/
+qx.OO.addProperty({ name : "leadItem", type : "object" });
+
+/*!
+Grid selection
+*/
+qx.OO.addProperty({ name : "multiColumnSupport", type : "boolean", defaultValue : false });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyAnchorItem = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ this.renderItemAnchorState(propOldValue, false);
+ }
+
+ if (propValue) {
+ this.renderItemAnchorState(propValue, true);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyLeadItem = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ this.renderItemLeadState(propOldValue, false);
+ }
+
+ if (propValue) {
+ this.renderItemLeadState(propValue, true);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO BOUNDED WIDGET
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._getFirst = function() {
+ return this.getBoundedWidget().getFirstVisibleChild();
+}
+
+qx.Proto._getLast = function() {
+ return this.getBoundedWidget().getLastVisibleChild();
+}
+
+qx.Proto.getFirst = function()
+{
+ var vItem = this._getFirst();
+ if (vItem) {
+ return vItem.isEnabled() ? vItem : this.getNext(vItem);
+ }
+}
+
+qx.Proto.getLast = function()
+{
+ var vItem = this._getLast();
+ if (vItem) {
+ return vItem.isEnabled() ? vItem : this.getPrevious(vItem);
+ }
+}
+
+qx.Proto.getItems = function() {
+ return this.getBoundedWidget().getChildren();
+}
+
+qx.Proto.getNextSibling = function(vItem) {
+ return vItem.getNextSibling();
+}
+
+qx.Proto.getPreviousSibling = function(vItem) {
+ return vItem.getPreviousSibling();
+}
+
+qx.Proto.getNext = function(vItem)
+{
+ while(vItem)
+ {
+ vItem = this.getNextSibling(vItem);
+
+ if (!vItem) {
+ break;
+ }
+
+ if (this.getItemEnabled(vItem)) {
+ return vItem;
+ }
+ }
+
+ return null;
+}
+
+qx.Proto.getPrevious = function(vItem)
+{
+ while(vItem)
+ {
+ vItem = this.getPreviousSibling(vItem);
+
+ if (!vItem) {
+ break;
+ }
+
+ if (this.getItemEnabled(vItem)) {
+ return vItem;
+ }
+ }
+
+ return null;
+}
+
+qx.Proto.isBefore = function(vItem1, vItem2)
+{
+ var cs = this.getItems();
+ return cs.indexOf(vItem1) < cs.indexOf(vItem2);
+}
+
+qx.Proto.isEqual = function(vItem1, vItem2) {
+ return vItem1 == vItem2;
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemHashCode = function(vItem) {
+ return vItem.toHashCode();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.scrollItemIntoView = function(vItem, vTopLeft) {
+ vItem.scrollIntoView(vTopLeft);
+}
+
+qx.Proto.getItemLeft = function(vItem) {
+ return vItem.getOffsetLeft();
+}
+
+qx.Proto.getItemTop = function(vItem) {
+ return vItem.getOffsetTop();
+}
+
+qx.Proto.getItemWidth = function(vItem) {
+ return vItem.getOffsetWidth();
+}
+
+qx.Proto.getItemHeight = function(vItem) {
+ return vItem.getOffsetHeight();
+}
+
+qx.Proto.getItemEnabled = function(vItem) {
+ return vItem.getEnabled();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ITEM STATE MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.renderItemSelectionState = function(vItem, vIsSelected)
+{
+ vIsSelected ? vItem.addState("selected") : vItem.removeState("selected");
+
+ if (vItem.handleStateChange) {
+ vItem.handleStateChange();
+ }
+}
+
+qx.Proto.renderItemAnchorState = function(vItem, vIsAnchor)
+{
+ vIsAnchor ? vItem.addState("anchor") : vItem.removeState("anchor");
+
+ if (vItem.handleStateChange != null) {
+ vItem.handleStateChange();
+ }
+}
+
+qx.Proto.renderItemLeadState = function(vItem, vIsLead)
+{
+ vIsLead ? vItem.addState("lead") : vItem.removeState("lead");
+
+ if (vItem.handleStateChange != null) {
+ vItem.handleStateChange();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SELECTION HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemSelected = function(vItem) {
+ return this._selectedItems.contains(vItem);
+}
+
+/*!
+Make a single item selected / not selected
+
+#param vItem[qx.ui.core.Widget]: Item which should be selected / not selected
+#param vSelected[Boolean]: Should this item be selected?
+*/
+qx.Proto.setItemSelected = function(vItem, vSelected)
+{
+ var hc = this.getItemHashCode(vItem);
+
+ switch(this.getMultiSelection())
+ {
+ // Multiple item selection is allowed
+ case true:
+ if (!this.getItemEnabled(vItem)) {
+ return;
+ }
+
+ // If selection state is not to be changed => return
+ if (this.getItemSelected(vItem) == vSelected) {
+ return;
+ }
+
+ // Otherwise render new state
+ this.renderItemSelectionState(vItem, vSelected);
+
+ // Add item to selection hash / delete it from there
+ vSelected ? this._selectedItems.add(vItem) : this._selectedItems.remove(vItem);
+
+ // Dispatch change Event
+ this._dispatchChange();
+
+ break;
+
+
+
+ // Multiple item selection is NOT allowed
+ case false:
+ var item0 = this.getSelectedItems()[0];
+
+
+
+ if (vSelected)
+ {
+ // Precheck for any changes
+ var old = item0;
+
+ if (this.isEqual(vItem, old)) {
+ return;
+ }
+
+ // Reset rendering of previous selected item
+ if (old != null) {
+ this.renderItemSelectionState(old, false);
+ }
+
+ // Render new item as selected
+ this.renderItemSelectionState(vItem, true);
+
+ // Reset current selection hash
+ this._selectedItems.removeAll();
+
+ // Add new one
+ this._selectedItems.add(vItem);
+
+ // Dispatch change Event
+ this._dispatchChange();
+ }
+ else
+ {
+ // Pre-check if item is currently selected
+ // Do not allow deselection in single selection mode
+ if (!this.isEqual(item0, vItem))
+ {
+ // Reset rendering as selected item
+ this.renderItemSelectionState(vItem, false);
+
+ // Reset current selection hash
+ this._selectedItems.removeAll();
+
+ // Dispatch change Event
+ this._dispatchChange();
+ }
+ }
+
+ break;
+
+ }
+}
+
+
+
+
+
+
+
+
+/*!
+ Get the selected items (objects)
+*/
+qx.Proto.getSelectedItems = function() {
+ return this._selectedItems.toArray();
+}
+
+qx.Proto.getSelectedItem = function() {
+ return this._selectedItems.getFirst();
+}
+
+/*!
+Select given items
+
+#param vItems[Array of Widgets]: Items to select
+*/
+qx.Proto.setSelectedItems = function(vItems)
+{
+ var oldVal = this._getChangeValue();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Deselect all currently selected items
+ this._deselectAll();
+
+ // Apply new selection
+ var vItem;
+ var vItemLength = vItems.length;
+
+ for (var i=0; i<vItemLength; i++)
+ {
+ vItem = vItems[i];
+
+ if (!this.getItemEnabled(vItem)) {
+ continue;
+ }
+
+ // Add item to selection
+ this._selectedItems.add(vItem);
+
+ // Render new state for item
+ this.renderItemSelectionState(vItem, true);
+ }
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if (oldFireChange && this._hasChanged(oldVal)) {
+ this._dispatchChange();
+ }
+}
+
+
+qx.Proto.setSelectedItem = function(vItem)
+{
+ if (!vItem) {
+ return;
+ }
+
+ if (!this.getItemEnabled(vItem)) {
+ return;
+ }
+
+ var oldVal = this._getChangeValue();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Deselect all currently selected items
+ this._deselectAll();
+
+ // Add item to selection
+ this._selectedItems.add(vItem);
+
+ // Render new state for item
+ this.renderItemSelectionState(vItem, true);
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if (oldFireChange && this._hasChanged(oldVal)) {
+ this._dispatchChange();
+ }
+}
+
+
+
+
+
+/*!
+ Select all items.
+*/
+qx.Proto.selectAll = function()
+{
+ var oldVal = this._getChangeValue();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Call sub method to select all items
+ this._selectAll();
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if (oldFireChange && this._hasChanged(oldVal)) {
+ this._dispatchChange();
+ }
+}
+
+/*!
+ Sub method for selectAll. Handles the real work
+ to select all items.
+*/
+qx.Proto._selectAll = function()
+{
+ if (!this.getMultiSelection()) {
+ return;
+ }
+
+ var vItem;
+ var vItems = this.getItems();
+ var vItemsLength = vItems.length;
+
+ // Reset current selection hash
+ this._selectedItems.removeAll();
+
+ for (var i=0; i<vItemsLength; i++)
+ {
+ vItem = vItems[i];
+
+ if (!this.getItemEnabled(vItem)) {
+ continue;
+ }
+
+ // Add item to selection
+ this._selectedItems.add(vItem);
+
+ // Render new state for item
+ this.renderItemSelectionState(vItem, true);
+ }
+
+ return true;
+}
+
+
+
+
+
+/*!
+ Deselect all items.
+*/
+qx.Proto.deselectAll = function()
+{
+ var oldVal = this._getChangeValue();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Call sub method to deselect all items
+ this._deselectAll();
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if (oldFireChange && this._hasChanged(oldVal))
+ this._dispatchChange();
+ }
+
+/*!
+ Sub method for deselectAll. Handles the real work
+ to deselect all items.
+*/
+qx.Proto._deselectAll = function()
+{
+ // Render new state for items
+ var items = this._selectedItems.toArray();
+ for (var i = 0; i < items.length; i++) {
+ this.renderItemSelectionState(items[i], false);
+ }
+
+ // Delete all entries in selectedItems hash
+ this._selectedItems.removeAll();
+
+ return true;
+}
+
+
+
+
+/*!
+Select a range of items.
+
+#param vItem1[qx.ui.core.Widget]: Start item
+#param vItem2[qx.ui.core.Widget]: Stop item
+*/
+qx.Proto.selectItemRange = function(vItem1, vItem2)
+{
+ var oldVal = this._getChangeValue();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Call sub method to select the range of items
+ this._selectItemRange(vItem1, vItem2, true);
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if (oldFireChange && this._hasChanged(oldVal)) {
+ this._dispatchChange();
+ }
+}
+
+
+
+
+/*!
+Sub method for selectItemRange. Handles the real work
+to select a range of items.
+
+#param vItem1[qx.ui.core.Widget]: Start item
+#param vItem2[qx.ui.core.Widget]: Stop item
+#param vDelect[Boolean]: Deselect currently selected items first?
+*/
+qx.Proto._selectItemRange = function(vItem1, vItem2, vDeselect)
+{
+ // this.debug("SELECT_RANGE: " + vItem1.toText() + "<->" + vItem2.toText());
+ // this.debug("SELECT_RANGE: " + vItem1.pos + "<->" + vItem2.pos);
+
+ // Pre-Check a revert call if vItem2 is before vItem1
+ if (this.isBefore(vItem2, vItem1)) {
+ return this._selectItemRange(vItem2, vItem1, vDeselect);
+ }
+
+ // Deselect all
+ if (vDeselect) {
+ this._deselectAll();
+ }
+
+ var vCurrentItem = vItem1;
+
+ while (vCurrentItem != null)
+ {
+ if (this.getItemEnabled(vCurrentItem))
+ {
+ // Add item to selection
+ this._selectedItems.add(vCurrentItem);
+
+ // Render new state for item
+ this.renderItemSelectionState(vCurrentItem, true);
+ }
+
+ // Stop here if we reached target item
+ if (this.isEqual(vCurrentItem, vItem2)) {
+ break;
+ }
+
+ // Get next item
+ vCurrentItem = this.getNext(vCurrentItem);
+ }
+
+ return true;
+}
+
+/*!
+Internal method for deselection of ranges.
+
+#param vItem1[qx.ui.core.Widget]: Start item
+#param vItem2[qx.ui.core.Widget]: Stop item
+*/
+qx.Proto._deselectItemRange = function(vItem1, vItem2)
+{
+ // Pre-Check a revert call if vItem2 is before vItem1
+ if (this.isBefore(vItem2, vItem1)) {
+ return this._deselectItemRange(vItem2, vItem1);
+ }
+
+ var vCurrentItem = vItem1;
+
+ while (vCurrentItem != null)
+ {
+ // Add item to selection
+ this._selectedItems.remove(vCurrentItem);
+
+ // Render new state for item
+ this.renderItemSelectionState(vCurrentItem, false);
+
+ // Stop here if we reached target item
+ if (this.isEqual(vCurrentItem, vItem2)) {
+ break;
+ }
+
+ // Get next item
+ vCurrentItem = this.getNext(vCurrentItem);
+ }
+}
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._activeDragSession = false;
+
+qx.Proto.handleMouseDown = function(vItem, e)
+{
+ // Only allow left and right button
+ if (!e.isLeftButtonPressed() && !e.isRightButtonPressed()) {
+ return;
+ }
+
+ // Keep selection on right click on already selected item
+ if (e.isRightButtonPressed() && this.getItemSelected(vItem)) {
+ return;
+ }
+
+ // Shift Key
+ // or
+ // Click on an unseleted item (without Strg)
+ if (e.getShiftKey() || this.getDragSelection() || (!this.getItemSelected(vItem) && !e.getCtrlKey()))
+ {
+ // Handle event
+ this._onmouseevent(vItem, e);
+ }
+ else
+ {
+ // Update lead item
+ this.setLeadItem(vItem);
+ }
+
+
+ // Handle dragging
+ this._activeDragSession = this.getDragSelection();
+
+ if (this._activeDragSession)
+ {
+ // Add mouseup listener and register as capture widget
+ this.getBoundedWidget().addEventListener("mouseup", this._ondragup, this);
+ this.getBoundedWidget().setCapture(true);
+ }
+}
+
+qx.Proto._ondragup = function(e)
+{
+ this.getBoundedWidget().removeEventListener("mouseup", this._ondragup, this);
+ this.getBoundedWidget().setCapture(false);
+ this._activeDragSession = false;
+}
+
+qx.Proto.handleMouseUp = function(vItem, e)
+{
+ if (!e.isLeftButtonPressed()) {
+ return;
+ }
+
+ if (e.getCtrlKey() || this.getItemSelected(vItem) && !this._activeDragSession) {
+ this._onmouseevent(vItem, e);
+ }
+
+ if (this._activeDragSession)
+ {
+ this._activeDragSession = false;
+ this.getBoundedWidget().setCapture(false);
+ }
+}
+
+qx.Proto.handleMouseOver = function(oItem, e)
+{
+ if (! this.getDragSelection() || !this._activeDragSession) {
+ return;
+ }
+
+ this._onmouseevent(oItem, e, true);
+}
+
+// currently unused placeholder
+qx.Proto.handleClick = function(vItem, e) {}
+
+// currently unused placeholder
+qx.Proto.handleDblClick = function(vItem, e) {}
+
+
+/*!
+Internal handler for all mouse events bound to this manager.
+*/
+qx.Proto._onmouseevent = function(oItem, e, bOver)
+{
+ if (!this.getItemEnabled(oItem)) {
+ return;
+ }
+
+ // ********************************************************************
+ // Init
+ // ********************************************************************
+
+ // Cache current (old) values
+ var oldVal = this._getChangeValue();
+ var oldLead = this.getLeadItem();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Cache selection and count
+ var selectedItems = this.getSelectedItems();
+ var selectedCount = selectedItems.length;
+
+ // Update lead item
+ this.setLeadItem(oItem);
+
+ // Cache current anchor item
+ var currentAnchorItem = this.getAnchorItem();
+
+ // Cache keys pressed
+ var vCtrlKey = e.getCtrlKey();
+ var vShiftKey = e.getShiftKey();
+
+
+ // ********************************************************************
+ // Do we need to update the anchor?
+ // ********************************************************************
+
+ if (!currentAnchorItem || selectedCount == 0 || (vCtrlKey && !vShiftKey && this.getMultiSelection() && !this.getDragSelection()))
+ {
+ this.setAnchorItem(oItem);
+ currentAnchorItem = oItem;
+ }
+
+
+
+ // ********************************************************************
+ // Mode #1: Replace current selection with new one
+ // ********************************************************************
+ if ((!vCtrlKey && !vShiftKey && !this._activeDragSession || !this.getMultiSelection()))
+ {
+ if (!this.getItemEnabled(oItem)) {
+ return;
+ }
+
+ // Remove current selection
+ this._deselectAll();
+
+ // Update anchor item
+ this.setAnchorItem(oItem);
+
+ if (this._activeDragSession)
+ {
+ // a little bit hacky, but seems to be a fast way to detect if we slide to top or to bottom
+ this.scrollItemIntoView((this.getBoundedWidget().getScrollTop() > (this.getItemTop(oItem)-1) ? this.getPrevious(oItem) : this.getNext(oItem)) || oItem);
+ }
+
+ if (!this.getItemSelected(oItem)) {
+ this.renderItemSelectionState(oItem, true);
+ }
+
+ // Clear up and add new one
+ //this._selectedItems.removeAll();
+ this._selectedItems.add(oItem);
+
+ this._addToCurrentSelection = true;
+ }
+
+
+ // ********************************************************************
+ // Mode #2: (De-)Select item range in mouse drag session
+ // ********************************************************************
+ else if (this._activeDragSession && bOver)
+ {
+ if (oldLead) {
+ this._deselectItemRange(currentAnchorItem, oldLead);
+ }
+
+ // Drag down
+ if (this.isBefore(currentAnchorItem, oItem))
+ {
+ if (this._addToCurrentSelection)
+ {
+ this._selectItemRange(currentAnchorItem, oItem, false);
+ }
+ else
+ {
+ this._deselectItemRange(currentAnchorItem, oItem);
+ }
+ }
+
+ // Drag up
+ else
+ {
+ if (this._addToCurrentSelection)
+ {
+ this._selectItemRange(oItem, currentAnchorItem, false);
+ }
+ else
+ {
+ this._deselectItemRange(oItem, currentAnchorItem);
+ }
+ }
+
+ // a little bit hacky, but seems to be a fast way to detect if we slide to top or to bottom
+ this.scrollItemIntoView((this.getBoundedWidget().getScrollTop() > (this.getItemTop(oItem)-1) ? this.getPrevious(oItem) : this.getNext(oItem)) || oItem);
+ }
+
+
+ // ********************************************************************
+ // Mode #3: Add new item to current selection (ctrl pressed)
+ // ********************************************************************
+ else if (this.getMultiSelection() && vCtrlKey && !vShiftKey)
+ {
+ if (!this._activeDragSession) {
+ this._addToCurrentSelection = !(this.getCanDeselect() && this.getItemSelected(oItem));
+ }
+
+ this.setItemSelected(oItem, this._addToCurrentSelection);
+ this.setAnchorItem(oItem);
+ }
+
+
+ // ********************************************************************
+ // Mode #4: Add new (or continued) range to selection
+ // ********************************************************************
+ else if (this.getMultiSelection() && vCtrlKey && vShiftKey)
+ {
+ if (!this._activeDragSession) {
+ this._addToCurrentSelection = !(this.getCanDeselect() && this.getItemSelected(oItem));
+ }
+
+ if (this._addToCurrentSelection)
+ {
+ this._selectItemRange(currentAnchorItem, oItem, false);
+ }
+ else
+ {
+ this._deselectItemRange(currentAnchorItem, oItem);
+ }
+ }
+
+ // ********************************************************************
+ // Mode #5: Replace selection with new range selection
+ // ********************************************************************
+ else if (this.getMultiSelection() && !vCtrlKey && vShiftKey)
+ {
+ if (this.getCanDeselect())
+ {
+ this._selectItemRange(currentAnchorItem, oItem, true);
+ }
+
+ else
+ {
+ if (oldLead) {
+ this._deselectItemRange(currentAnchorItem, oldLead);
+ }
+
+ this._selectItemRange(currentAnchorItem, oItem, false);
+ }
+ }
+
+
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if(oldFireChange && this._hasChanged(oldVal)) {
+ this._dispatchChange();
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.handleKeyDown = function(vDomEvent) {
+ this.warn(
+ "qx.manager.selection.SelectionManager.handleKeyDown is deprecated! " +
+ "Use keypress insted and bind it to the onkeypress event."
+ );
+ this.handleKeyPress(vDomEvent);
+}
+
+
+/**
+ * Handles key event to perform selection and navigation
+ *
+ * @param vDomEvent (Element) DOM event object
+ */
+qx.Proto.handleKeyPress = function(vDomEvent)
+{
+ var oldVal = this._getChangeValue();
+
+ // Temporary disabling of event fire
+ var oldFireChange = this.getFireChange();
+ this.setFireChange(false);
+
+ // Ctrl+A: Select all
+ if (vDomEvent.getKeyIdentifier() == "A" && vDomEvent.getCtrlKey())
+ {
+ if (this.getMultiSelection())
+ {
+ this._selectAll();
+
+ // Update lead item to this new last
+ // (or better here: first) selected item
+ this.setLeadItem(this.getFirst());
+ }
+ }
+
+ // Default operation
+ else
+ {
+ var aIndex = this.getAnchorItem();
+ var itemToSelect = this.getItemToSelect(vDomEvent);
+
+ // this.debug("Anchor: " + (aIndex ? aIndex.getLabel() : "null"));
+ // this.debug("ToSelect: " + (itemToSelect ? itemToSelect.getLabel() : "null"));
+
+ if (itemToSelect && this.getItemEnabled(itemToSelect))
+ {
+ // Update lead item to this new last selected item
+ this.setLeadItem(itemToSelect);
+
+ // Scroll new item into view
+ this.scrollItemIntoView(itemToSelect);
+
+ // Stop event handling
+ vDomEvent.preventDefault();
+
+ // Select a range
+ if (vDomEvent.getShiftKey() && this.getMultiSelection())
+ {
+ // Make it a little bit more failsafe:
+ // Set anchor if not given already. Allows us to select
+ // a range without any previous selection.
+ if (aIndex == null) {
+ this.setAnchorItem(itemToSelect);
+ }
+
+ // Select new range (and clear up current selection first)
+ this._selectItemRange(this.getAnchorItem(), itemToSelect, true);
+ }
+ else if (!vDomEvent.getCtrlKey())
+ {
+ // Clear current selection
+ this._deselectAll();
+
+ // Update new item to be selected
+ this.renderItemSelectionState(itemToSelect, true);
+
+ // Add item to new selection
+ this._selectedItems.add(itemToSelect);
+
+ // Update anchor to this new item
+ // (allows following shift range selection)
+ this.setAnchorItem(itemToSelect);
+ }
+ else if (vDomEvent.getKeyIdentifier() == "Space")
+ {
+ if (this._selectedItems.contains(itemToSelect))
+ {
+ // Update new item to be selected
+ this.renderItemSelectionState(itemToSelect, false);
+
+ // Add item to new selection
+ this._selectedItems.remove(itemToSelect);
+
+ // Fix anchor item
+ this.setAnchorItem(this._selectedItems.getFirst());
+ }
+ else
+ {
+ // Clear current selection
+ if (!vDomEvent.getCtrlKey() || !this.getMultiSelection()) {
+ this._deselectAll();
+ }
+
+ // Update new item to be selected
+ this.renderItemSelectionState(itemToSelect, true);
+
+ // Add item to new selection
+ this._selectedItems.add(itemToSelect);
+
+ // Update anchor to this new item
+ // (allows following shift range selection)
+ this.setAnchorItem(itemToSelect);
+ }
+ }
+ }
+ }
+
+ // Recover change event status
+ this.setFireChange(oldFireChange);
+
+ // Dispatch change Event
+ if (oldFireChange && this._hasChanged(oldVal)) {
+ this._dispatchChange();
+ }
+}
+
+qx.Proto.getItemToSelect = function(vKeyboardEvent)
+{
+ // Don't handle ALT here
+ if (vKeyboardEvent.getAltKey()) {
+ return null;
+ }
+
+ // Handle event by keycode
+ switch (vKeyboardEvent.getKeyIdentifier())
+ {
+ case "Home":
+ return this.getHome(this.getLeadItem());
+
+ case "End":
+ return this.getEnd(this.getLeadItem());
+
+
+ case "Down":
+ return this.getDown(this.getLeadItem());
+
+ case "Up":
+ return this.getUp(this.getLeadItem());
+
+
+ case "Left":
+ return this.getLeft(this.getLeadItem());
+
+ case "Right":
+ return this.getRight(this.getLeadItem());
+
+
+ case "PageUp":
+ return this.getPageUp(this.getLeadItem()) || this.getHome(this.getLeadItem());
+
+ case "PageDown":
+ return this.getPageDown(this.getLeadItem()) || this.getEnd(this.getLeadItem());
+
+
+ case "Space":
+ if (vKeyboardEvent.getCtrlKey()) {
+ return this.getLeadItem();
+ }
+ }
+
+ return null;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHANGE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._dispatchChange = function()
+{
+ if (!this.getFireChange()) {
+ return;
+ }
+
+ if (this.hasEventListeners("changeSelection")) {
+ this.dispatchEvent(new qx.event.type.DataEvent("changeSelection", this.getSelectedItems()), true);
+ }
+}
+
+qx.Proto._hasChanged = function(sOldValue) {
+ return sOldValue != this._getChangeValue();
+}
+
+qx.Proto._getChangeValue = function() {
+ return this._selectedItems.getChangeValue();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ POSITION HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getHome = function() {
+ return this.getFirst();
+}
+
+qx.Proto.getEnd = function() {
+ return this.getLast();
+}
+
+qx.Proto.getDown = function(vItem)
+{
+ if (!vItem) {
+ return this.getFirst();
+ }
+
+ return this.getMultiColumnSupport() ? (this.getUnder(vItem) || this.getLast()) : this.getNext(vItem);
+}
+
+qx.Proto.getUp = function(vItem)
+{
+ if (!vItem) {
+ return this.getLast();
+ }
+
+ return this.getMultiColumnSupport() ? (this.getAbove(vItem) || this.getFirst()) : this.getPrevious(vItem);
+}
+
+qx.Proto.getLeft = function(vItem)
+{
+ if (!this.getMultiColumnSupport()) {
+ return null;
+ }
+
+ return !vItem ? this.getLast() : this.getPrevious(vItem);
+}
+
+qx.Proto.getRight = function(vItem)
+{
+ if (!this.getMultiColumnSupport()) {
+ return null;
+ }
+
+ return !vItem ? this.getFirst() : this.getNext(vItem);
+}
+
+qx.Proto.getAbove = function(vItem)
+{
+ throw new Error("getAbove(): Not implemented yet");
+}
+
+qx.Proto.getUnder = function(vItem)
+{
+ throw new Error("getUnder(): Not implemented yet");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PAGE HANDLING
+---------------------------------------------------------------------------
+*/
+
+/*!
+Jump a "page" up.
+
+#param vItem[qx.ui.core.Widget]: Relative to this widget
+*/
+qx.Proto.getPageUp = function(vItem)
+{
+ var vBoundedWidget = this.getBoundedWidget();
+ var vParentScrollTop = vBoundedWidget.getScrollTop();
+ var vParentClientHeight = vBoundedWidget.getClientHeight();
+
+ // Find next item
+ var newItem;
+ var nextItem = this.getLeadItem();
+ if (!nextItem) {
+ nextItem = this.getFirst();
+ }
+
+ // Normally we should reach the status "lead" for the
+ // nextItem after two iterations.
+ var tryLoops = 0;
+ while (tryLoops < 2)
+ {
+ while (nextItem && (this.getItemTop(nextItem) - this.getItemHeight(nextItem) >= vParentScrollTop)) {
+ nextItem = this.getUp(nextItem);
+ }
+
+ // This should never occour after the fix above
+ if (nextItem == null) {
+ break;
+ }
+
+ // If the nextItem is not anymore the leadItem
+ // Means: There has occured a change.
+ // We break here. This is normally the second step.
+ if (nextItem != this.getLeadItem())
+ {
+ // be sure that the top is reached
+ this.scrollItemIntoView(nextItem, true);
+ break;
+ }
+
+ // Update scrolling (this is normally the first step)
+ // this.debug("Scroll-Up: " + (vParentScrollTop + vParentClientHeight - 2 * this.getItemHeight(nextItem)));
+ vBoundedWidget.setScrollTop(vParentScrollTop - vParentClientHeight - this.getItemHeight(nextItem));
+
+ // Use the real applied value instead of the calulated above
+ vParentScrollTop = vBoundedWidget.getScrollTop();
+
+ // Increment counter
+ tryLoops++;
+ }
+
+ return nextItem;
+}
+
+/*!
+Jump a "page" down.
+
+#param vItem[qx.ui.core.Widget]: Relative to this widget
+*/
+qx.Proto.getPageDown = function(vItem)
+{
+ var vBoundedWidget = this.getBoundedWidget();
+ var vParentScrollTop = vBoundedWidget.getScrollTop();
+ var vParentClientHeight = vBoundedWidget.getClientHeight();
+
+ // this.debug("Bound: " + (vBoundedWidget._getTargetNode() != vBoundedWidget.getElement()));
+
+ // this.debug("ClientHeight-1: " + vBoundedWidget._getTargetNode().clientHeight);
+ // this.debug("ClientHeight-2: " + vBoundedWidget.getElement().clientHeight);
+
+ // Find next item
+ var newItem;
+ var nextItem = this.getLeadItem();
+ if (!nextItem) {
+ nextItem = this.getFirst();
+ }
+
+ // Normally we should reach the status "lead" for the
+ // nextItem after two iterations.
+ var tryLoops = 0;
+ while (tryLoops < 2)
+ {
+ // this.debug("Loop: " + tryLoops);
+ // this.debug("Info: " + nextItem + " :: " + (this.getItemTop(nextItem) + (2 * this.getItemHeight(nextItem))) + " <> " + (vParentScrollTop + vParentClientHeight));
+ // this.debug("Detail: " + vParentScrollTop + ", " + vParentClientHeight);
+
+ // Find next
+ while (nextItem && ((this.getItemTop(nextItem) + (2 * this.getItemHeight(nextItem))) <= (vParentScrollTop + vParentClientHeight))) {
+ nextItem = this.getDown(nextItem);
+ }
+
+ // This should never occour after the fix above
+ if (nextItem == null) {
+ break;
+ }
+
+ // If the nextItem is not anymore the leadItem
+ // Means: There has occured a change.
+ // We break here. This is normally the second step.
+ if (nextItem != this.getLeadItem()) {
+ break;
+ }
+
+ // Update scrolling (this is normally the first step)
+ // this.debug("Scroll-Down: " + (vParentScrollTop + vParentClientHeight - 2 * this.getItemHeight(nextItem)));
+ vBoundedWidget.setScrollTop(vParentScrollTop + vParentClientHeight - 2 * this.getItemHeight(nextItem));
+
+ // Use the real applied value instead of the calulated above
+ vParentScrollTop = vBoundedWidget.getScrollTop();
+
+ // Increment counter
+ tryLoops++;
+ }
+
+ //this.debug("Select: " + nextItem._labelObject.getHtml());
+
+ return nextItem;
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._selectedItems)
+ {
+ this._selectedItems.dispose();
+ this._selectedItems = null;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeFullControlSelectionManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeFullControlSelectionManager.js
new file mode 100644
index 0000000000..625296430a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeFullControlSelectionManager.js
@@ -0,0 +1,206 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_treefullcontrol)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.manager.selection.TreeFullControlSelectionManager", qx.manager.selection.SelectionManager,
+function(vBoundedWidget) {
+ qx.manager.selection.SelectionManager.call(this, vBoundedWidget);
+});
+
+/*!
+Should multiple selection be allowed?
+*/
+qx.OO.changeProperty({ name : "multiSelection", type : "boolean", defaultValue : false });
+
+/*!
+Enable drag selection?
+*/
+qx.OO.changeProperty({ name : "dragSelection", type : "boolean", defaultValue : false });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO BOUNDED WIDGET
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._getFirst = function() {
+ return qx.lang.Array.getFirst(this.getItems());
+}
+
+qx.Proto._getLast = function() {
+ return qx.lang.Array.getLast(this.getItems());
+}
+
+qx.Proto.getItems = function() {
+ return this.getBoundedWidget().getItems();
+}
+
+qx.Proto.getNext = function(vItem)
+{
+ if (vItem)
+ {
+ if (qx.ui.treefullcontrol.Tree.isOpenTreeFolder(vItem))
+ {
+ return vItem.getFirstVisibleChildOfFolder();
+ }
+ else if (vItem.isLastVisibleChild())
+ {
+ var vCurrent = vItem;
+
+ while(vCurrent && vCurrent.isLastVisibleChild()) {
+ vCurrent = vCurrent.getParentFolder();
+ }
+
+ if (vCurrent &&
+ vCurrent instanceof qx.ui.treefullcontrol.AbstractTreeElement &&
+ vCurrent.getNextVisibleSibling() &&
+ vCurrent.getNextVisibleSibling() instanceof qx.ui.treefullcontrol.AbstractTreeElement) {
+ return vCurrent.getNextVisibleSibling();
+ }
+ }
+ else
+ {
+ return vItem.getNextVisibleSibling();
+ }
+ }
+ else
+ {
+ return this.getBoundedWidget().getFirstTreeChild();
+ }
+}
+
+qx.Proto.getPrevious = function(vItem)
+{
+ if (vItem)
+ {
+ if (vItem == this.getBoundedWidget())
+ {
+ return;
+ }
+ else if (vItem.isFirstVisibleChild())
+ {
+ if (vItem.getParentFolder() instanceof qx.ui.treefullcontrol.TreeFolder) {
+ return vItem.getParentFolder();
+ }
+ }
+ else
+ {
+ var vPrev = vItem.getPreviousVisibleSibling();
+
+ if (vPrev instanceof qx.ui.treefullcontrol.AbstractTreeElement)
+ {
+ while (vPrev instanceof qx.ui.treefullcontrol.AbstractTreeElement)
+ {
+ if (qx.ui.treefullcontrol.Tree.isOpenTreeFolder(vPrev))
+ {
+ vPrev = vPrev.getLastVisibleChildOfFolder();
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ return vPrev;
+ }
+ }
+ else
+ {
+ return this.getBoundedWidget().getLastTreeChild();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemTop = function(vItem)
+{
+ // Alternate method:
+ // return qx.dom.Location.getPageBoxTop(vItem.getElement()) - qx.dom.Location.getPageInnerTop(this.getBoundedWidget().getElement());
+
+ var vBoundedWidget = this.getBoundedWidget();
+ var vElement = vItem.getElement();
+ var vOffset = 0;
+
+ while (vElement && vElement.qx_Widget != vBoundedWidget)
+ {
+ vOffset += vElement.offsetTop;
+ vElement = vElement.parentNode;
+ }
+
+ return vOffset;
+}
+
+qx.Proto.getItemHeight = function(vItem)
+{
+ if (vItem instanceof qx.ui.treefullcontrol.TreeFolder &&
+ vItem._horizontalLayout)
+ {
+ return vItem._horizontalLayout.getOffsetHeight();
+ }
+ else
+ {
+ return vItem.getOffsetHeight();
+ }
+}
+
+qx.Proto.scrollItemIntoView = function(vItem)
+{
+ if (vItem instanceof qx.ui.treefullcontrol.TreeFolder &&
+ vItem._horizontalLayout)
+ {
+ return vItem._horizontalLayout.scrollIntoView();
+ }
+ else
+ {
+ return vItem.scrollIntoView();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ITEM STATE MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.renderItemSelectionState = function(vItem, vIsSelected) {
+ vItem.setSelected(vIsSelected);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeSelectionManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeSelectionManager.js
new file mode 100644
index 0000000000..d4dfe91041
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/TreeSelectionManager.js
@@ -0,0 +1,198 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tree)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.manager.selection.TreeSelectionManager", qx.manager.selection.SelectionManager,
+function(vBoundedWidget) {
+ qx.manager.selection.SelectionManager.call(this, vBoundedWidget);
+});
+
+/*!
+Should multiple selection be allowed?
+*/
+qx.OO.changeProperty({ name : "multiSelection", type : "boolean", defaultValue : false });
+
+/*!
+Enable drag selection?
+*/
+qx.OO.changeProperty({ name : "dragSelection", type : "boolean", defaultValue : false });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO BOUNDED WIDGET
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._getFirst = function() {
+ return qx.lang.Array.getFirst(this.getItems());
+}
+
+qx.Proto._getLast = function() {
+ return qx.lang.Array.getLast(this.getItems());
+}
+
+qx.Proto.getItems = function() {
+ return this.getBoundedWidget().getItems();
+}
+
+qx.Proto.getNext = function(vItem)
+{
+ if (vItem)
+ {
+ if (qx.ui.tree.Tree.isOpenTreeFolder(vItem))
+ {
+ return vItem.getFirstVisibleChildOfFolder();
+ }
+ else if (vItem.isLastVisibleChild())
+ {
+ var vCurrent = vItem;
+
+ while(vCurrent && vCurrent.isLastVisibleChild()) {
+ vCurrent = vCurrent.getParentFolder();
+ }
+
+ if (vCurrent && vCurrent instanceof qx.ui.tree.AbstractTreeElement && vCurrent.getNextVisibleSibling() && vCurrent.getNextVisibleSibling() instanceof qx.ui.tree.AbstractTreeElement) {
+ return vCurrent.getNextVisibleSibling();
+ }
+ }
+ else
+ {
+ return vItem.getNextVisibleSibling();
+ }
+ }
+ else
+ {
+ return this.getBoundedWidget().getFirstTreeChild();
+ }
+}
+
+qx.Proto.getPrevious = function(vItem)
+{
+ if (vItem)
+ {
+ if (vItem == this.getBoundedWidget())
+ {
+ return;
+ }
+ else if (vItem.isFirstVisibleChild())
+ {
+ if (vItem.getParentFolder() instanceof qx.ui.tree.TreeFolder) {
+ return vItem.getParentFolder();
+ }
+ }
+ else
+ {
+ var vPrev = vItem.getPreviousVisibleSibling();
+
+ while (vPrev instanceof qx.ui.tree.AbstractTreeElement)
+ {
+ if (qx.ui.tree.Tree.isOpenTreeFolder(vPrev))
+ {
+ vPrev = vPrev.getLastVisibleChildOfFolder();
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ return vPrev;
+ }
+ }
+ else
+ {
+ return this.getBoundedWidget().getLastTreeChild();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemTop = function(vItem)
+{
+ // Alternate method:
+ // return qx.dom.Location.getPageBoxTop(vItem.getElement()) - qx.dom.Location.getPageInnerTop(this.getBoundedWidget().getElement());
+
+ var vBoundedWidget = this.getBoundedWidget();
+ var vElement = vItem.getElement();
+ var vOffset = 0;
+
+ while (vElement && vElement.qx_Widget != vBoundedWidget)
+ {
+ vOffset += vElement.offsetTop;
+ vElement = vElement.parentNode;
+ }
+
+ return vOffset;
+}
+
+qx.Proto.getItemHeight = function(vItem)
+{
+ if (vItem instanceof qx.ui.tree.TreeFolder && vItem._horizontalLayout)
+ {
+ return vItem._horizontalLayout.getOffsetHeight();
+ }
+ else
+ {
+ return vItem.getOffsetHeight();
+ }
+}
+
+qx.Proto.scrollItemIntoView = function(vItem)
+{
+ if (vItem instanceof qx.ui.tree.TreeFolder && vItem._horizontalLayout)
+ {
+ return vItem._horizontalLayout.scrollIntoView();
+ }
+ else
+ {
+ return vItem.scrollIntoView();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ITEM STATE MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.renderItemSelectionState = function(vItem, vIsSelected) {
+ vItem.setSelected(vIsSelected);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/VirtualSelectionManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/VirtualSelectionManager.js
new file mode 100644
index 0000000000..a3dbe19a68
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/selection/VirtualSelectionManager.js
@@ -0,0 +1,143 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+/*!
+ This class represents a selection and manage incoming events for widgets which need selection support.
+*/
+qx.OO.defineClass("qx.manager.selection.VirtualSelectionManager", qx.manager.selection.SelectionManager,
+function(vBoundedWidget) {
+ qx.manager.selection.SelectionManager.call(this, vBoundedWidget);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO BOUNDED WIDGET
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getFirst = function() {
+ return qx.lang.Array.getFirst(this.getItems());
+}
+
+qx.Proto.getLast = function() {
+ return qx.lang.Array.getLast(this.getItems());
+}
+
+qx.Proto.getItems = function() {
+ return this.getBoundedWidget().getData();
+}
+
+qx.Proto.getNextSibling = function(vItem)
+{
+ var vData = this.getItems();
+ return vData[vData.indexOf(vItem)+1];
+}
+
+qx.Proto.getPreviousSibling = function(vItem)
+{
+ var vData = this.getItems();
+ return vData[vData.indexOf(vItem)-1];
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItemHashCode = function(oItem)
+{
+ if (oItem._hash) {
+ return oItem._hash;
+ }
+
+ return oItem._hash = qx.core.Object.toHashCode(oItem);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO ITEM DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.scrollItemIntoView = function(vItem, vTopLeft) {
+ this.getBoundedWidget().scrollItemIntoView(vItem, vTopLeft);
+}
+
+qx.Proto.getItemLeft = function(vItem) {
+ return this.getBoundedWidget().getItemLeft(vItem);
+}
+
+qx.Proto.getItemTop = function(vItem) {
+ return this.getBoundedWidget().getItemTop(vItem);
+}
+
+qx.Proto.getItemWidth = function(vItem) {
+ return this.getBoundedWidget().getItemWidth(vItem);
+}
+
+qx.Proto.getItemHeight = function(vItem) {
+ return this.getBoundedWidget().getItemHeight(vItem);
+}
+
+/*!
+ In a qx.ui.listview.ListView there are no disabled entries support currently.
+*/
+qx.Proto.getItemEnabled = function(vItem) {
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ITEM STATE MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.renderItemSelectionState = function(vItem, vIsSelected) {
+ this.getBoundedWidget()._updateSelectionState(vItem, vIsSelected);
+}
+
+qx.Proto.renderItemAnchorState = function(vItem, vIsAnchor) {
+ this.getBoundedWidget()._updateAnchorState(vItem, vIsAnchor);
+}
+
+qx.Proto.renderItemLeadState = function(vItem, vIsLead) {
+ this.getBoundedWidget()._updateLeadState(vItem, vIsLead);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Http.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Http.js
new file mode 100644
index 0000000000..33a907596f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Http.js
@@ -0,0 +1,31 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.net.Http",
+{
+ METHOD_GET : "GET",
+ METHOD_POST : "POST",
+ METHOD_PUT : "PUT",
+ METHOD_HEAD : "HEAD",
+ METHOD_DELETE : "DELETE"
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Protocol.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Protocol.js
new file mode 100644
index 0000000000..f28f0770c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/net/Protocol.js
@@ -0,0 +1,35 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.net.Protocol",
+{
+ HTTP : "http",
+ HTTPS : "https",
+ FTP : "ftp",
+ FILE : "file",
+
+ URI_HTTP : "http://",
+ URI_HTTPS : "https://",
+ URI_FTP : "ftp://",
+ URI_FILE : "file://"
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/Border.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/Border.js
new file mode 100644
index 0000000000..37bee9153c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/Border.js
@@ -0,0 +1,1184 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.sys.Client)
+#load(qx.renderer.border.BorderObject)
+
+************************************************************************ */
+
+/*!
+ Border implementation for qx.ui.core.Widget instances.
+*/
+qx.OO.defineClass("qx.renderer.border.Border", qx.core.Object,
+function(vWidth, vStyle, vColor)
+{
+ qx.core.Object.call(this);
+
+ this._themedEdges = {};
+ this._initCache();
+
+ if (qx.util.Validation.isValidNumber(vWidth))
+ {
+ this.setWidth(vWidth);
+
+ if (qx.util.Validation.isValidString(vStyle)) {
+ this.setStyle(vStyle);
+ }
+
+ if (qx.util.Validation.isValid(vColor)) {
+ this.setColor(vColor);
+ }
+ }
+});
+
+
+qx.Class.enhancedCrossBrowserMode = true;
+
+qx.Proto._needsCompilationTop = true;
+qx.Proto._needsCompilationRight = true;
+qx.Proto._needsCompilationBottom = true;
+qx.Proto._needsCompilationLeft = true;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "topWidth", type : "number", defaultValue : 0, impl : "borderTopProperty" });
+qx.OO.addProperty({ name : "rightWidth", type : "number", defaultValue : 0, impl : "borderRightProperty" });
+qx.OO.addProperty({ name : "bottomWidth", type : "number", defaultValue : 0, impl : "borderBottomProperty" });
+qx.OO.addProperty({ name : "leftWidth", type : "number", defaultValue : 0, impl : "borderLeftProperty" });
+
+qx.OO.addProperty({ name : "topStyle", type : "string", defaultValue : "none", impl : "borderTopProperty" });
+qx.OO.addProperty({ name : "rightStyle", type : "string", defaultValue : "none", impl : "borderRightProperty" });
+qx.OO.addProperty({ name : "bottomStyle", type : "string", defaultValue : "none", impl : "borderBottomProperty" });
+qx.OO.addProperty({ name : "leftStyle", type : "string", defaultValue : "none", impl : "borderLeftProperty" });
+
+qx.OO.addProperty({ name : "topColor", impl : "borderTopProperty", type : "object", instance : "qx.renderer.color.Color", convert : qx.renderer.color.ColorCache });
+qx.OO.addProperty({ name : "rightColor", impl : "borderRightProperty", type : "object", instance : "qx.renderer.color.Color", convert : qx.renderer.color.ColorCache });
+qx.OO.addProperty({ name : "bottomColor", impl : "borderBottomProperty", type : "object", instance : "qx.renderer.color.Color", convert : qx.renderer.color.ColorCache });
+qx.OO.addProperty({ name : "leftColor", impl : "borderLeftProperty", type : "object", instance : "qx.renderer.color.Color", convert : qx.renderer.color.ColorCache });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.border.Border.fromString = function(vDefString)
+{
+ var vBorder = new qx.renderer.border.Border;
+ var vAllParts = vDefString.split(/\s+/);
+ var vPart, vTemp;
+
+ for (var i=0; i<vAllParts.length; i++)
+ {
+ switch(vPart = vAllParts[i])
+ {
+ case "groove":
+ case "ridge":
+ case "inset":
+ case "outset":
+ case "solid":
+ case "dotted":
+ case "dashed":
+ case "double":
+ case "none":
+ vBorder.setStyle(vPart);
+ break;
+
+ default:
+ vTemp = parseFloat(vPart);
+
+ if(vTemp == vPart || qx.lang.String.contains(vPart, "px"))
+ {
+ vBorder.setWidth(vTemp);
+ }
+ else
+ {
+ vPart = vPart.toLowerCase();
+ vBorder.setColor(new qx.renderer.color.Color(vPart));
+ }
+
+ break;
+ }
+ }
+
+ return vBorder;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMPATIBILITY TO qx.renderer.border.BorderOBJECT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addListenerWidget = qx.util.Return.returnTrue;
+qx.Proto.removeListenerWidget = qx.util.Return.returnTrue;
+
+qx.Proto._sync = qx.util.Return.returnTrue;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMBINED SETTERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setWidth = function(vWidth)
+{
+ this.setTopWidth(vWidth);
+ this.setRightWidth(vWidth);
+ this.setBottomWidth(vWidth);
+ this.setLeftWidth(vWidth);
+
+ return true;
+}
+
+qx.Proto.setStyle = function(vStyle)
+{
+ this.setTopStyle(vStyle);
+ this.setRightStyle(vStyle);
+ this.setBottomStyle(vStyle);
+ this.setLeftStyle(vStyle);
+
+ return true;
+}
+
+qx.Proto.setColor = function(vColor)
+{
+ this.setTopColor(vColor);
+ this.setRightColor(vColor);
+ this.setBottomColor(vColor);
+ this.setLeftColor(vColor);
+
+ return true;
+}
+
+
+
+
+qx.Proto.setTop = function(vWidth, vStyle, vColor)
+{
+ this.setTopWidth(vWidth);
+ this.setTopStyle(vStyle);
+ this.setTopColor(vColor);
+
+ return true;
+}
+
+qx.Proto.setRight = function(vWidth, vStyle, vColor)
+{
+ this.setRightWidth(vWidth);
+ this.setRightStyle(vStyle);
+ this.setRightColor(vColor);
+
+ return true;
+}
+
+qx.Proto.setBottom = function(vWidth, vStyle, vColor)
+{
+ this.setBottomWidth(vWidth);
+ this.setBottomStyle(vStyle);
+ this.setBottomColor(vColor);
+
+ return true;
+}
+
+qx.Proto.setLeft = function(vWidth, vStyle, vColor)
+{
+ this.setLeftWidth(vWidth);
+ this.setLeftStyle(vStyle);
+ this.setLeftColor(vColor);
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INITIALISATION OF CACHE
+---------------------------------------------------------------------------
+*/
+
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._initCache = function()
+ {
+ this._defsX =
+ {
+ borderLeft : "",
+ borderRight : "",
+
+ MozBorderLeftColors : "",
+ MozBorderRightColors : ""
+ }
+
+ this._defsY =
+ {
+ borderTop : "",
+ borderBottom : "",
+
+ MozBorderTopColors : "",
+ MozBorderBottomColors : ""
+ }
+ }
+}
+else
+{
+ qx.Proto._initCache = function()
+ {
+ this._defsX =
+ {
+ borderLeft : "",
+ borderRight : ""
+ }
+
+ this._defsY =
+ {
+ borderTop : "",
+ borderBottom : ""
+ }
+
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ this._enhancedDefsX =
+ {
+ borderLeft : "",
+ borderRight : ""
+ }
+
+ this._enhancedDefsY =
+ {
+ borderTop : "",
+ borderBottom : ""
+ }
+ }
+ }
+}
+
+
+/*
+---------------------------------------------------------------------------
+ BORDER MODIFIER AND SYNCER
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isGecko() || qx.renderer.border.Border.enhancedCrossBrowserMode)
+{
+ qx.Proto._addToThemed3DColors = function(vProp)
+ {
+ var needRegistering = qx.lang.Object.isEmpty(this._themedEdges);
+
+ this._themedEdges[vProp] = true;
+
+ if (needRegistering)
+ {
+ (new qx.renderer.color.ColorObject("ThreeDDarkShadow")).add(this);
+ (new qx.renderer.color.ColorObject("ThreeDShadow")).add(this);
+ (new qx.renderer.color.ColorObject("ThreeDLightShadow")).add(this);
+ (new qx.renderer.color.ColorObject("ThreeDHighlight")).add(this);
+ }
+ }
+
+ qx.Proto._removeFromThemed3DColors = function(vProp)
+ {
+ delete this._themedEdges[vProp];
+
+ if (qx.lang.Object.isEmpty(this._themedEdges))
+ {
+ (new qx.renderer.color.ColorObject("ThreeDDarkShadow")).remove(this);
+ (new qx.renderer.color.ColorObject("ThreeDShadow")).remove(this);
+ (new qx.renderer.color.ColorObject("ThreeDLightShadow")).remove(this);
+ (new qx.renderer.color.ColorObject("ThreeDHighlight")).remove(this);
+ }
+ }
+}
+else
+{
+ qx.Proto._addToThemed3DColors = function(vProp)
+ {
+ var needRegistering = qx.lang.Object.isEmpty(this._themedEdges);
+
+ this._themedEdges[vProp] = true;
+
+ if (needRegistering)
+ {
+ (new qx.renderer.color.ColorObject("ThreeDLightShadow")).add(this);
+ }
+ }
+
+ qx.Proto._removeFromThemed3DColors = function(vProp)
+ {
+ delete this._themedEdges[vProp];
+
+ if (qx.lang.Object.isEmpty(this._themedEdges))
+ {
+ (new qx.renderer.color.ColorObject("ThreeDLightShadow")).remove(this);
+ }
+ }
+}
+
+
+
+
+
+qx.renderer.border.Border.data =
+{
+ 1 :
+ {
+ outset :
+ {
+ top : [ "threedhighlight" ],
+ right : [ "threedshadow" ],
+ bottom : [ "threedshadow" ],
+ left : [ "threedhighlight" ]
+ },
+
+ inset :
+ {
+ top : [ "threedshadow" ],
+ right : [ "threedhighlight" ],
+ bottom : [ "threedhighlight" ],
+ left : [ "threedshadow" ]
+ }
+ },
+
+ 2 :
+ {
+ outset :
+ {
+ top : [ "threedlightshadow", "threedhighlight" ],
+ right : [ "threeddarkshadow", "threedshadow" ],
+ bottom : [ "threeddarkshadow", "threedshadow" ],
+ left : [ "threedlightshadow", "threedhighlight" ]
+ },
+
+ inset :
+ {
+ top : [ "threedshadow", "threeddarkshadow" ],
+ right : [ "threedhighlight", "threedlightshadow" ],
+ bottom : [ "threedhighlight", "threedlightshadow" ],
+ left : [ "threedshadow", "threeddarkshadow" ]
+ },
+
+ ridge :
+ {
+ top : [ "threedhighlight", "threedshadow" ],
+ right : [ "threedshadow", "threedhighlight" ],
+ bottom : [ "threedshadow", "threedhighlight" ],
+ left : [ "threedhighlight", "threedshadow" ]
+ },
+
+ groove :
+ {
+ top : [ "threedshadow", "threedhighlight" ],
+ right : [ "threedhighlight", "threedshadow" ],
+ bottom : [ "threedhighlight", "threedshadow" ],
+ left : [ "threedshadow", "threedhighlight" ]
+ }
+ }
+}
+
+
+
+
+
+qx.Proto._generateDefString = function(vWidth, vStyle, vColor)
+{
+ if (typeof vWidth !== "number" || vWidth < 0) {
+ return "";
+ }
+
+ var vArr = [ vWidth + "px" ];
+
+ if (qx.util.Validation.isValidString(vStyle)) {
+ vArr.push(vStyle);
+ }
+
+ if (qx.util.Validation.isValidObject(vColor) && vColor instanceof qx.renderer.color.Color) {
+ vColor = vColor.getStyle();
+ }
+
+ if (qx.util.Validation.isValidString(vColor)) {
+ vArr.push(vColor);
+ }
+
+ return vArr.join(" ");
+}
+
+
+
+
+// TODO: Add more smartness ;)
+// Only update the border edges which depends on this color object
+qx.Proto._updateColors = function(vColorObject, vNewValue)
+{
+ this._needsCompilationTop = true;
+ this._needsCompilationRight = true;
+ this._needsCompilationBottom = true;
+ this._needsCompilationLeft = true;
+
+ this._sync("top");
+ this._sync("right");
+ this._sync("bottom");
+ this._sync("left");
+}
+
+
+
+
+
+
+
+qx.Proto._handleColorRegistration = function(propValue, propOldValue, propData)
+{
+ if (qx.lang.String.contains(propData.name, "Style"))
+ {
+ switch(propValue)
+ {
+ case "outset":
+ case "inset":
+ case "groove":
+ case "ridge":
+ this._addToThemed3DColors(propData.name);
+ break;
+
+ default:
+ this._removeFromThemed3DColors(propData.name);
+ }
+ }
+
+ if (qx.lang.String.contains(propData.name, "Color"))
+ {
+ if (propOldValue instanceof qx.renderer.color.ColorObject)
+ {
+ // detect if there are no other deps anymore
+ switch(propOldValue)
+ {
+ case this.getTopColor():
+ case this.getRightColor():
+ case this.getBottomColor():
+ case this.getLeftColor():
+ break;
+
+ default:
+ propOldValue.remove(this);
+ }
+ }
+
+ if (propValue instanceof qx.renderer.color.ColorObject)
+ {
+ // simply add, internal storage is a hash key so
+ // this is not a problem also if this is already
+ // registered there.
+ propValue.add(this);
+ }
+ }
+}
+
+
+
+
+
+
+
+
+qx.Proto._modifyBorderTopProperty = function(propValue, propOldValue, propData)
+{
+ this._handleColorRegistration(propValue, propOldValue, propData);
+
+ this._needsCompilationTop = true;
+ this._useEnhancedCrossBrowserMode = null;
+
+ this._sync("top");
+
+ return true;
+}
+
+qx.Proto._modifyBorderRightProperty = function(propValue, propOldValue, propData)
+{
+ this._handleColorRegistration(propValue, propOldValue, propData);
+
+ this._needsCompilationRight = true;
+ this._useEnhancedCrossBrowserMode = null;
+
+ this._sync("right");
+
+ return true;
+}
+
+qx.Proto._modifyBorderBottomProperty = function(propValue, propOldValue, propData)
+{
+ this._handleColorRegistration(propValue, propOldValue, propData);
+
+ this._needsCompilationBottom = true;
+ this._useEnhancedCrossBrowserMode = null;
+
+ this._sync("bottom");
+
+ return true;
+}
+
+qx.Proto._modifyBorderLeftProperty = function(propValue, propOldValue, propData)
+{
+ this._handleColorRegistration(propValue, propOldValue, propData);
+
+ this._needsCompilationLeft = true;
+ this._useEnhancedCrossBrowserMode = null;
+
+ this._sync("left");
+
+ return true;
+}
+
+
+
+
+
+
+
+
+
+qx.Proto.getUseEnhancedCrossBrowserMode = function()
+{
+ if (this._useEnhancedCrossBrowserMode == null) {
+ this._useEnhancedCrossBrowserMode = this._evalUseEnhancedCrossBrowserMode();
+ }
+
+ return this._useEnhancedCrossBrowserMode;
+}
+
+qx.Proto._evalUseEnhancedCrossBrowserMode = function()
+{
+ if (this.getTopWidth() == 2) {
+ switch(this.getTopStyle()) {
+ case "outset": case "inset": case "groove": case "ridge": return true;
+ }
+ }
+
+ if (this.getRightWidth() == 2) {
+ switch(this.getRightStyle()) {
+ case "outset": case "inset": case "groove": case "ridge": return true;
+ }
+ }
+
+ if (this.getBottomWidth() == 2) {
+ switch(this.getBottomStyle()) {
+ case "outset": case "inset": case "groove": case "ridge": return true;
+ }
+ }
+
+ if (this.getLeftWidth() == 2) {
+ switch(this.getLeftStyle()) {
+ case "outset": case "inset": case "groove": case "ridge": return true;
+ }
+ }
+
+ return false;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BORDER APPLY IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyWidget = function(o)
+{
+ this._applyWidgetX(o);
+ this._applyWidgetY(o);
+}
+
+qx.Proto._resetWidget = function(o)
+{
+ this._resetWidgetX(o);
+ this._resetWidgetY(o);
+}
+
+qx.Proto._resetWidgetX = function(o) {
+ return qx.renderer.border.Border._resetBorderX(o);
+}
+
+qx.Proto._resetWidgetY = function(o) {
+ return qx.renderer.border.Border._resetBorderY(o);
+}
+
+qx.Proto._applyWidgetXCommon = function(vObject)
+{
+ if (this._needsCompilationLeft) {
+ this._compileLeft();
+ }
+
+ if (this._needsCompilationRight) {
+ this._compileRight();
+ }
+
+ for (var i in this._defsX) {
+ vObject._style[i] = this._defsX[i];
+ }
+
+ if (!qx.sys.Client.getInstance().isGecko() && qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ if (this.getUseEnhancedCrossBrowserMode()) {
+ vObject._createElementForEnhancedBorder();
+ }
+
+ if (vObject._borderStyle)
+ {
+ for (var i in this._enhancedDefsX) {
+ vObject._borderStyle[i] = this._enhancedDefsX[i];
+ }
+ }
+ }
+}
+
+qx.Proto._applyWidgetYCommon = function(vObject)
+{
+ if (this._needsCompilationTop) {
+ this._compileTop();
+ }
+
+ if (this._needsCompilationBottom) {
+ this._compileBottom();
+ }
+
+ for (var i in this._defsY) {
+ vObject._style[i] = this._defsY[i];
+ }
+
+ if (!qx.sys.Client.getInstance().isGecko() && qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ if (this.getUseEnhancedCrossBrowserMode()) {
+ vObject._createElementForEnhancedBorder();
+ }
+
+ if (vObject._borderStyle)
+ {
+ for (var i in this._enhancedDefsY) {
+ vObject._borderStyle[i] = this._enhancedDefsY[i];
+ }
+ }
+ }
+}
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._applyWidgetX = qx.Proto._applyWidgetXCommon;
+ qx.Proto._applyWidgetY = qx.Proto._applyWidgetYCommon;
+
+ qx.Proto._generateMozColorDefString = function(vWidth, vStyle, vEdge)
+ {
+ try
+ {
+ try {
+ var a = qx.renderer.border.Border.data[vWidth][vStyle][vEdge];
+ } catch(ex) {}
+
+ if (typeof a === "object")
+ {
+ for (var i=0, s=[], l=a.length; i<l; i++) {
+ s.push((new qx.renderer.color.ColorObject(a[i]).getStyle()));
+ }
+
+ return s.join(" ");
+ }
+ }
+ catch(ex) {
+ this.error("Failed to generate Mozilla Color Definition Strings", ex);
+ }
+
+ return "";
+ }
+
+ qx.Proto._compileTop = function()
+ {
+ var w=this.getTopWidth(), s=this.getTopStyle(), d=this._defsY;
+
+ d.borderTop = this._generateDefString(w, s, this.getTopColor());
+ d.MozBorderTopColors = this._generateMozColorDefString(w, s, "top");
+
+ this._needsCompilationTop = false;
+ }
+
+ qx.Proto._compileRight = function()
+ {
+ var w=this.getRightWidth(), s=this.getRightStyle(), d=this._defsX;
+
+ d.borderRight = this._generateDefString(w, s, this.getRightColor());
+ d.MozBorderRightColors = this._generateMozColorDefString(w, s, "right");
+
+ this._needsCompilationRight = false;
+ }
+
+ qx.Proto._compileBottom = function()
+ {
+ var w=this.getBottomWidth(), s=this.getBottomStyle(), d=this._defsY;
+
+ d.borderBottom = this._generateDefString(w, s, this.getBottomColor());
+ d.MozBorderBottomColors = this._generateMozColorDefString(w, s, "bottom");
+
+ this._needsCompilationBottom = false;
+ }
+
+ qx.Proto._compileLeft = function()
+ {
+ var w=this.getLeftWidth(), s=this.getLeftStyle(), d=this._defsX;
+
+ d.borderLeft = this._generateDefString(w, s, this.getLeftColor());
+ d.MozBorderLeftColors = this._generateMozColorDefString(w, s, "left");
+
+ this._needsCompilationLeft = false;
+ }
+
+ qx.renderer.border.Border._resetBorderX = function(o)
+ {
+ var s = o._style;
+ s.borderLeft = s.borderRight = s.MozBorderLeftColors = s.MozBorderRightColors = "";
+ }
+
+ qx.renderer.border.Border._resetBorderY = function(o)
+ {
+ var s = o._style;
+ s.borderTop = s.borderBottom = s.MozBorderTopColors = s.MozBorderBottomColors = "";
+ }
+}
+else
+{
+ qx.Proto._applyWidgetX = function(vObject)
+ {
+ this._applyWidgetXCommon(vObject);
+
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ if (this.getUseEnhancedCrossBrowserMode()) {
+ vObject._createElementForEnhancedBorder();
+ }
+
+ if (vObject._borderStyle)
+ {
+ for (var i in this._enhancedDefsX) {
+ vObject._borderStyle[i] = this._enhancedDefsX[i];
+ }
+ }
+ }
+ }
+
+ qx.Proto._applyWidgetY = function(vObject)
+ {
+ this._applyWidgetYCommon(vObject);
+
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ if (this.getUseEnhancedCrossBrowserMode()) {
+ vObject._createElementForEnhancedBorder();
+ }
+
+ if (vObject._borderStyle)
+ {
+ for (var i in this._enhancedDefsY) {
+ vObject._borderStyle[i] = this._enhancedDefsY[i];
+ }
+ }
+ }
+ }
+
+ qx.Proto._compileTop = function()
+ {
+ var vTopWidth = this.getTopWidth();
+ var vTopStyle = this.getTopStyle();
+ var vTopColor = this.getTopColor();
+
+ switch(vTopWidth)
+ {
+ case 1:
+ switch(vTopStyle)
+ {
+ case "outset":
+ case "inset":
+ vTopColor = (new qx.renderer.color.ColorObject(qx.renderer.border.Border.data[vTopWidth][vTopStyle]["top"][0]));
+ vTopStyle = "solid";
+ }
+
+ break;
+
+ case 2:
+ switch(vTopStyle)
+ {
+ case "outset":
+ case "inset":
+ case "groove":
+ case "ridge":
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ try
+ {
+ var c = qx.renderer.border.Border.data[vTopWidth][vTopStyle]["top"];
+
+ if (typeof c === "object")
+ {
+ vTopStyle = "solid";
+ vTopWidth = 1;
+ vTopColor = (new qx.renderer.color.ColorObject(c[1]));
+
+ this._enhancedDefsY.borderTop = this._generateDefString(vTopWidth, vTopStyle, vTopColor);
+
+ vTopColor = (new qx.renderer.color.ColorObject(c[0]));
+ }
+ }
+ catch(ex)
+ {
+ this.error("Failed to compile top border", ex);
+ this.warn("Details: Width=" + vTopWidth + ", Style=" + vTopStyle);
+ }
+ }
+ else
+ {
+ vTopColor = (new qx.renderer.color.ColorObject("threedlightshadow"));
+ }
+ }
+
+ break;
+ }
+
+ this._defsY.borderTop = this._generateDefString(vTopWidth, vTopStyle, vTopColor);
+ this._needsCompilationTop = false;
+ }
+
+ qx.Proto._compileRight = function()
+ {
+ var vRightWidth = this.getRightWidth();
+ var vRightStyle = this.getRightStyle();
+ var vRightColor = this.getRightColor();
+
+ switch(vRightWidth)
+ {
+ case 1:
+ switch(vRightStyle)
+ {
+ case "outset":
+ case "inset":
+ vRightColor = (new qx.renderer.color.ColorObject(qx.renderer.border.Border.data[vRightWidth][vRightStyle]["right"][0]));
+ vRightStyle = "solid";
+ }
+
+ break;
+
+ case 2:
+ switch(vRightStyle)
+ {
+ case "outset":
+ case "inset":
+ case "groove":
+ case "ridge":
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ try
+ {
+ var c = qx.renderer.border.Border.data[vRightWidth][vRightStyle]["right"];
+
+ if (typeof c === "object")
+ {
+ vRightStyle = "solid";
+ vRightWidth = 1;
+ vRightColor = (new qx.renderer.color.ColorObject(c[1]));
+
+ this._enhancedDefsX.borderRight = this._generateDefString(vRightWidth, vRightStyle, vRightColor);
+
+ vRightColor = (new qx.renderer.color.ColorObject(c[0]));
+ }
+ }
+ catch(ex)
+ {
+ this.error("Failed to compile right border", ex);
+ this.warn("Details: Width=" + vRightWidth + ", Style=" + vRightStyle);
+ }
+ }
+ else
+ {
+ vRightColor = (new qx.renderer.color.ColorObject("threedlightshadow"));
+ }
+ }
+
+ break;
+ }
+
+ this._defsX.borderRight = this._generateDefString(vRightWidth, vRightStyle, vRightColor);
+ this._needsCompilationRight = false;
+ }
+
+ qx.Proto._compileBottom = function()
+ {
+ var vBottomWidth = this.getBottomWidth();
+ var vBottomStyle = this.getBottomStyle();
+ var vBottomColor = this.getBottomColor();
+
+ switch(vBottomWidth)
+ {
+ case 1:
+ switch(vBottomStyle)
+ {
+ case "outset":
+ case "inset":
+ vBottomColor = (new qx.renderer.color.ColorObject(qx.renderer.border.Border.data[vBottomWidth][vBottomStyle]["bottom"][0]));
+ vBottomStyle = "solid";
+ }
+
+ break;
+
+ case 2:
+ switch(vBottomStyle)
+ {
+ case "outset":
+ case "inset":
+ case "groove":
+ case "ridge":
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ try
+ {
+ var c = qx.renderer.border.Border.data[vBottomWidth][vBottomStyle]["bottom"];
+
+ if (typeof c === "object")
+ {
+ vBottomStyle = "solid";
+ vBottomWidth = 1;
+ vBottomColor = (new qx.renderer.color.ColorObject(c[1]));
+
+ this._enhancedDefsY.borderBottom = this._generateDefString(vBottomWidth, vBottomStyle, vBottomColor);
+
+ vBottomColor = (new qx.renderer.color.ColorObject(c[0]));
+ }
+ }
+ catch(ex) {
+ this.error("Failed to compile bottom border", ex);
+ this.warn("Details: Width=" + vBottomWidth + ", Style=" + vBottomStyle);
+ }
+ }
+ else
+ {
+ vBottomColor = (new qx.renderer.color.ColorObject("threedlightshadow"));
+ }
+ }
+
+ break;
+ }
+
+ this._defsY.borderBottom = this._generateDefString(vBottomWidth, vBottomStyle, vBottomColor);
+ this._needsCompilationBottom = false;
+ }
+
+ qx.Proto._compileLeft = function()
+ {
+ var vLeftWidth = this.getLeftWidth();
+ var vLeftStyle = this.getLeftStyle();
+ var vLeftColor = this.getLeftColor();
+
+ switch(vLeftWidth)
+ {
+ case 1:
+ switch(vLeftStyle)
+ {
+ case "outset":
+ case "inset":
+ vLeftColor = (new qx.renderer.color.ColorObject(qx.renderer.border.Border.data[vLeftWidth][vLeftStyle]["left"][0]));
+ vLeftStyle = "solid";
+ }
+
+ break;
+
+ case 2:
+ switch(vLeftStyle)
+ {
+ case "outset":
+ case "inset":
+ case "groove":
+ case "ridge":
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ try
+ {
+ var c = qx.renderer.border.Border.data[vLeftWidth][vLeftStyle]["left"];
+
+ if (typeof c === "object")
+ {
+ vLeftStyle = "solid";
+ vLeftWidth = 1;
+ vLeftColor = (new qx.renderer.color.ColorObject(c[1]));
+
+ this._enhancedDefsX.borderLeft = this._generateDefString(vLeftWidth, vLeftStyle, vLeftColor);
+
+ vLeftColor = (new qx.renderer.color.ColorObject(c[0]));
+ }
+ }
+ catch(ex) {
+ this.error("Failed to compile left border", ex);
+ this.warn("Details: Width=" + vLeftWidth + ", Style=" + vLeftStyle);
+ }
+ }
+ else
+ {
+ vLeftColor = (new qx.renderer.color.ColorObject("threedlightshadow"));
+ }
+ }
+
+ break;
+ }
+
+ this._defsX.borderLeft = this._generateDefString(vLeftWidth, vLeftStyle, vLeftColor);
+ this._needsCompilationLeft = false;
+ }
+
+ qx.renderer.border.Border._resetBorderX = function(o)
+ {
+ var s = o._style;
+ s.borderLeft = s.borderRight = "0px none";
+
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ s = o._borderStyle;
+ if (s) {
+ s.borderLeft = s.borderRight = "0px none";
+ }
+ }
+ }
+
+ qx.renderer.border.Border._resetBorderY = function(o)
+ {
+ var s = o._style;
+ s.borderTop = s.borderBottom = "0px none";
+
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ s = o._borderStyle;
+ if (s) {
+ s.borderTop = s.borderBottom = "0px none";
+ }
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (typeof this._defsX === "object") {
+ for (var i in this._defsX) {
+ delete this._defsX[i];
+ }
+ }
+
+ delete this._defsX;
+
+ if (typeof this._defsY === "object") {
+ for (var i in this._defsY) {
+ delete this._defsY[i];
+ }
+ }
+
+ delete this._defsY;
+
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode)
+ {
+ if (typeof this._enhancedDefsX === "object") {
+ for (var i in this._enhancedDefsX) {
+ delete this._enhancedDefsX[i];
+ }
+ }
+
+ delete this._enhancedDefsX;
+
+ if (typeof this._enhancedDefsY === "object") {
+ for (var i in this._enhancedDefsY) {
+ delete this._enhancedDefsY[i];
+ }
+ }
+
+ delete this._enhancedDefsY;
+ }
+
+ delete this._themedEdges;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PRESETS
+---------------------------------------------------------------------------
+*/
+
+/*
+qx.Class.presets =
+{
+ black : new qx.Class(1, "solid", "black"),
+ white : new qx.Class(1, "solid", "white"),
+ none : new qx.Class(0, "none")
+}
+*/
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderCache.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderCache.js
new file mode 100644
index 0000000000..cb94559b23
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderCache.js
@@ -0,0 +1,62 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.border.BorderCache");
+
+qx.renderer.border.BorderCache = function(propValue, propData)
+{
+ if (qx.util.Validation.isValidArray(propValue) && propValue.length > 1)
+ {
+ propString = "";
+
+ for (var i=0, l=propValue.length, p; i<l; i++)
+ {
+ p = propValue[i];
+
+ propString += p;
+
+ if (typeof p === "number") {
+ propString += "px";
+ }
+
+ if (i<(l-1)) {
+ propString += " ";
+ }
+ }
+
+ propValue = propString;
+ }
+ else if (qx.util.Validation.isInvalidString(propValue))
+ {
+ return propValue;
+ }
+
+ if (qx.renderer.border.BorderCache._data[propValue]) {
+ return qx.renderer.border.BorderCache._data[propValue];
+ }
+
+ return qx.renderer.border.BorderCache._data[propValue] = qx.renderer.border.BorderObject.fromString(propValue);
+}
+
+qx.renderer.border.BorderCache._data = {};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderObject.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderObject.js
new file mode 100644
index 0000000000..e8e1dc0fcc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderObject.js
@@ -0,0 +1,149 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.border.BorderObject", qx.renderer.border.Border,
+function(vWidth, vStyle, vColor)
+{
+ this._dependentObjects = {};
+
+ qx.renderer.border.Border.call(this, vWidth, vStyle, vColor);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.border.BorderObject.fromString = function(vDefString)
+{
+ var vBorder = new qx.renderer.border.BorderObject;
+ var vAllParts = vDefString.split(/\s+/);
+ var vPart, vTemp;
+
+ for (var i=0; i<vAllParts.length; i++)
+ {
+ vPart = vAllParts[i];
+
+ switch(vPart)
+ {
+ case "groove":
+ case "ridge":
+ case "inset":
+ case "outset":
+ case "solid":
+ case "dotted":
+ case "dashed":
+ case "double":
+ case "none":
+ vBorder.setStyle(vPart);
+ break;
+
+ default:
+ vTemp = parseFloat(vPart);
+
+ if(vTemp == vPart || qx.lang.String.contains(vPart, "px"))
+ {
+ vBorder.setWidth(vTemp);
+ }
+ else
+ {
+ vPart = vPart.toLowerCase();
+ vBorder.setColor(qx.renderer.color.Color.themedNames[vPart] ? new qx.renderer.color.ColorObject(vPart) : new qx.renderer.color.Color(vPart));
+ }
+
+ break;
+ }
+ }
+
+ return vBorder;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WIDGET CONNECTION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addListenerWidget = function(o) {
+ this._dependentObjects[o.toHashCode()] = o;
+}
+
+qx.Proto.removeListenerWidget = function(o) {
+ delete this._dependentObjects[o.toHashCode()];
+}
+
+qx.Proto._sync = function(vEdge)
+{
+ var vAll = this._dependentObjects;
+ var vCurrent;
+
+ for (vKey in vAll)
+ {
+ vCurrent = vAll[vKey];
+
+ if (vCurrent.isCreated()) {
+ vCurrent._updateBorder(vEdge);
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (typeof this._dependentObjects === "object")
+ {
+ var vAll = this._dependentObjects;
+ for (vKey in vAll) {
+ delete vAll[vKey];
+ }
+
+ vAll = null;
+ delete this._dependentObjects;
+ }
+
+ return qx.renderer.border.Border.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderPresets.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderPresets.js
new file mode 100644
index 0000000000..9a0f8630c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/border/BorderPresets.js
@@ -0,0 +1,71 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/*!
+ Some common used border styles.
+*/
+qx.OO.defineClass("qx.renderer.border.BorderPresets", qx.core.Object, function()
+{
+ qx.core.Object.call(this);
+
+ this.black = new qx.renderer.border.Border(1, "solid", "black");
+ this.white = new qx.renderer.border.Border(1, "solid", "white");
+ this.none = new qx.renderer.border.Border(0, "none");
+
+ this.inset = new qx.renderer.border.BorderObject(2, "inset");
+ this.outset = new qx.renderer.border.BorderObject(2, "outset");
+ this.groove = new qx.renderer.border.BorderObject(2, "groove");
+ this.ridge = new qx.renderer.border.BorderObject(2, "ridge");
+ this.thinInset = new qx.renderer.border.BorderObject(1, "inset");
+ this.thinOutset = new qx.renderer.border.BorderObject(1, "outset");
+
+ this.verticalDivider = new qx.renderer.border.BorderObject(1, "inset");
+ this.verticalDivider.setLeftWidth(0);
+ this.verticalDivider.setRightWidth(0);
+
+ this.horizontalDivider = new qx.renderer.border.BorderObject(1, "inset");
+ this.horizontalDivider.setTopWidth(0);
+ this.horizontalDivider.setBottomWidth(0);
+
+ this.shadow = new qx.renderer.border.BorderObject(1, "solid", "threedshadow");
+ this.lightShadow = new qx.renderer.border.BorderObject(1, "solid", "threedlightshadow");
+ this.info = new qx.renderer.border.BorderObject(1, "solid", "infotext");
+});
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/Color.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/Color.js
new file mode 100644
index 0000000000..868ac6f496
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/Color.js
@@ -0,0 +1,542 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.util.Return)
+#load(qx.renderer.color.ColorObject)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.color.Color", qx.core.Object,
+function(vValue)
+{
+ if (qx.util.Validation.isValid(vValue)) {
+ this.setValue(vValue);
+ }
+
+ qx.core.Object.call(this);
+});
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.color.Color.rgb2style = function(r, g, b) {
+ return "rgb(" + r + "," + g + "," + b + ")";
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE DATA
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.color.Color.m_hex = [ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ];
+qx.renderer.color.Color.m_rgb = { 0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15 }
+
+qx.renderer.color.Color.r_hex3 = /^#([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})$/;
+qx.renderer.color.Color.r_hex6 = /^#([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})$/;
+qx.renderer.color.Color.r_cssrgb = /^rgb\(\s*([0-9]{1,3}\.{0,1}[0-9]*)\s*,\s*([0-9]{1,3}\.{0,1}[0-9]*)\s*,\s*([0-9]{1,3}\.{0,1}[0-9]*)\s*\)$/;
+
+qx.renderer.color.Color.r_rgb = /^[0-9]{1,3},[0-9]{1,3},[0-9]{1,3}$/;
+qx.renderer.color.Color.r_number = /^[0-9]{1,3}\.{0,1}[0-9]*$/;
+qx.renderer.color.Color.r_percent = /^[0-9]{1,3}\.{0,1}[0-9]*%$/;
+
+qx.renderer.color.Color.htmlNames =
+{
+ maroon : [ 128,0,0 ],
+ red : [ 255,0,0 ],
+ orange : [ 255,165,0 ],
+ yellow : [ 255,255,0 ],
+ olive : [ 128,128,0 ],
+ purple : [ 128,0,128 ],
+ fuchsia : [ 255,0,255 ],
+ white : [ 255,255,255 ],
+ lime : [ 0,255,0 ],
+ green : [ 0,128,0 ],
+ navy : [ 0,0,128 ],
+ blue : [ 0,0,255 ],
+ aqua : [ 0,255,255 ],
+ teal : [ 0,128,128 ],
+ black : [ 0,0,0 ],
+ silver : [ 192,192,192 ],
+ gray : [ 128,128,128 ],
+ transparent : [-1,-1,-1]
+}
+
+// TODO: Add some IE related colors (IE 4.x)
+// http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/colors/colors.asp
+/*
+qx.renderer.color.Color.cssNames =
+{
+
+}
+*/
+
+/*
+ ActiveBorder: Active window border.
+ ActiveCaption: Active window caption.
+
+ AppWorkspace: Background color of multiple document interface.
+ Background: Desktop background.
+
+ ButtonFace: Face color for three-dimensional display elements.
+ ButtonHighlight: Highlight color for three-dimensional display elements (for edges facing away from the light source).
+ ButtonShadow: Shadow color for three-dimensional display elements.
+ ButtonText: Text on push buttons.
+
+ CaptionText: Text in caption, size box, and scrollbar arrow box.
+ GrayText: Grayed (disabled) text.
+
+ Highlight: Item(s) selected in a control.
+ HighlightText: Text of item(s) selected in a control.
+
+ InactiveBorder: Inactive window border.
+ InactiveCaption: Inactive window caption.
+ InactiveCaptionText: Color of text in an inactive caption.
+
+ InfoBackground: Background color for tooltip controls.
+ InfoText: Text color for tooltip controls.
+
+ Menu: Menu background.
+ MenuText: Text in menus.
+
+ Scrollbar: Scroll bar gray area.
+
+ ThreeDDarkShadow: Dark shadow for three-dimensional display elements.
+ ThreeDFace: Face color for three-dimensional display elements.
+ ThreeDHighlight: Highlight color for three-dimensional display elements.
+ ThreeDLightShadow: Light color for three-dimensional display elements (for edges facing the light source).
+ ThreeDShadow: Dark shadow for three-dimensional display elements.
+
+ Window: Window background.
+ WindowFrame: Window frame.
+ WindowText: Text in windows.
+*/
+
+qx.renderer.color.Color.themedNames =
+{
+ activeborder : 1,
+ activecaption : 1,
+ appworkspace : 1,
+ background : 1,
+ buttonface : 1,
+ buttonhighlight : 1,
+ buttonshadow : 1,
+ buttontext : 1,
+ captiontext : 1,
+ graytext : 1,
+ highlight : 1,
+ highlighttext : 1,
+ inactiveborder : 1,
+ inactivecaption : 1,
+ inactivecaptiontext : 1,
+ infobackground : 1,
+ infotext : 1,
+ menu : 1,
+ menutext : 1,
+ scrollbar : 1,
+ threeddarkshadow : 1,
+ threedface : 1,
+ threedhighlight : 1,
+ threedlightshadow : 1,
+ threedshadow : 1,
+ window : 1,
+ windowframe : 1,
+ windowtext : 1
+}
+
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.color.Color.fromString = function(vDefString) {
+ return new qx.renderer.color.Color(vDefString);
+}
+
+qx.renderer.color.Color.fromRandom = function() {
+ return new qx.renderer.color.Color([Math.round(255*Math.random()), Math.round(255*Math.random()), Math.round(255*Math.random())]);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._value = null;
+qx.Proto._style = null;
+
+qx.Proto._isRgbColor = false;
+qx.Proto._isHtmlColor = false;
+qx.Proto._isThemedColor = false;
+
+qx.Proto._red = null;
+qx.Proto._green = null;
+qx.Proto._blue = null;
+
+qx.Proto._hex = null;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMPATIBILITY METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = qx.util.Return.returnTrue;
+qx.Proto.remove = qx.util.Return.returnTrue;
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PUBLIC METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.isRgbColor = function() {
+ return this._isRgbColor;
+}
+
+qx.Proto.isHtmlColor = function() {
+ return this._isHtmlColor;
+}
+
+qx.Proto.isThemedColor = function() {
+ return this._isThemedColor;
+}
+
+
+
+
+qx.Proto.setValue = function(vValue)
+{
+ this._normalize(vValue);
+
+ if (this._isThemedColor) {
+ throw new Error("Please use qx.renderer.color.ColorObject for themed colors!");
+ }
+}
+
+qx.Proto.getValue = function() {
+ return this._value || "";
+}
+
+
+
+
+qx.Proto.getStyle = function()
+{
+ if (this._style == null) {
+ this._evalStyle();
+ }
+
+ return this._style;
+}
+
+qx.Proto._evalStyle = function()
+{
+ if (this._isRgbColor)
+ {
+ this._style = qx.renderer.color.Color.rgb2style(this._red, this._green, this._blue);
+ }
+ else if (this._isThemedColor)
+ {
+ this._applyThemedValue();
+ }
+ else if (this._isHtmlColor)
+ {
+ this._style = this._value;
+ }
+ else if (qx.util.Validation.isValid(this._value))
+ {
+ throw new Error("_evalStyle could not handle non-rgb colors :" + this.getValue() + "!");
+ }
+}
+
+
+
+
+qx.Proto.getHex = function()
+{
+ if (this._hex == null) {
+ this._evalHex();
+ }
+
+ return this._hex;
+}
+
+qx.Proto._evalHex = function()
+{
+ if (this._isRgbColor)
+ {
+ var a = ["#"];
+
+ var r = this.getRed();
+ a.push(qx.renderer.color.Color.m_hex[Math.floor(r/16)]);
+ a.push(qx.renderer.color.Color.m_hex[Math.floor(r%16)]);
+
+ var g = this.getGreen();
+ a.push(qx.renderer.color.Color.m_hex[Math.floor(g/16)]);
+ a.push(qx.renderer.color.Color.m_hex[Math.floor(g%16)]);
+
+ var b = this.getBlue();
+ a.push(qx.renderer.color.Color.m_hex[Math.floor(b/16)]);
+ a.push(qx.renderer.color.Color.m_hex[Math.floor(b%16)]);
+
+ this._hex = a.join("");
+ }
+ else
+ {
+ // TODO
+ }
+}
+
+
+
+
+qx.Proto.getRed = function()
+{
+ if (this._red == null) {
+ this._evalRgb();
+ }
+
+ return this._red;
+}
+
+qx.Proto.getGreen = function()
+{
+ if (this._green == null) {
+ this._evalRgb();
+ }
+
+ return this._green;
+}
+
+qx.Proto.getBlue = function()
+{
+ if (this._blue == null) {
+ this._evalRgb();
+ }
+
+ return this._blue;
+}
+
+
+
+
+qx.Proto._evalRgb = function()
+{
+ if (this._isThemedColor)
+ {
+ this._applyThemedValue();
+ }
+ else if (this._isHtmlColor)
+ {
+ var a = qx.renderer.color.Color.htmlNames[this._value];
+
+ this._red = a[0];
+ this._green = a[1];
+ this._blue = a[2];
+ }
+ else
+ {
+ throw new Error("_evalRgb needs implementation!");
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PRIVATE METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._normalize = function(vInValue)
+{
+ this._isThemedColor = this._isRgbColor = this._isHtmlColor = false;
+ this._hex = null;
+
+ var invalid = new Error("Invalid color: " + vInValue);
+
+ switch(typeof vInValue)
+ {
+ case "string":
+ vInValue = vInValue.toLowerCase();
+
+ if (qx.renderer.color.Color.htmlNames[vInValue])
+ {
+ this._isHtmlColor = true;
+ }
+ else if (qx.renderer.color.Color.themedNames[vInValue])
+ {
+ this._isThemedColor = true;
+ }
+ else if (qx.renderer.color.Color.r_cssrgb.test(vInValue))
+ {
+ this._red = parseInt(RegExp.$1);
+ this._green = parseInt(RegExp.$2);
+ this._blue = parseInt(RegExp.$3);
+
+ this._isRgbColor = true;
+ }
+ else if (qx.renderer.color.Color.r_hex3.test(vInValue))
+ {
+ this._hex = vInValue;
+
+ this._red = (qx.renderer.color.Color.m_rgb[RegExp.$1] * 16) + qx.renderer.color.Color.m_rgb[RegExp.$1];
+ this._green = (qx.renderer.color.Color.m_rgb[RegExp.$2] * 16) + qx.renderer.color.Color.m_rgb[RegExp.$2];
+ this._blue = (qx.renderer.color.Color.m_rgb[RegExp.$3] * 16) + qx.renderer.color.Color.m_rgb[RegExp.$3];
+
+ this._isRgbColor = true;
+ }
+ else if (qx.renderer.color.Color.r_hex6.test(vInValue))
+ {
+ this._hex = vInValue;
+
+ this._red = (qx.renderer.color.Color.m_rgb[RegExp.$1] * 16) + qx.renderer.color.Color.m_rgb[RegExp.$2];
+ this._green = (qx.renderer.color.Color.m_rgb[RegExp.$3] * 16) + qx.renderer.color.Color.m_rgb[RegExp.$4];
+ this._blue = (qx.renderer.color.Color.m_rgb[RegExp.$5] * 16) + qx.renderer.color.Color.m_rgb[RegExp.$6];
+
+ this._isRgbColor = true;
+ }
+ else
+ {
+ throw invalid;
+ }
+
+ break;
+
+ case "number":
+ if (vInValue >= 0 && vInValue <= 255)
+ {
+ this._red = this._green = this._blue = vInValue;
+ this._isRgbColor = true;
+ }
+ else
+ {
+ throw invalid;
+ }
+
+ break;
+
+ case "object":
+ if (qx.util.Validation.isValidArray(vInValue) && vInValue.length == 3)
+ {
+ this._red = vInValue[0];
+ this._green = vInValue[1];
+ this._blue = vInValue[2];
+
+ this._isRgbColor = true;
+ break;
+ }
+
+ default:
+ throw invalid;
+ }
+
+ if (!this._isRgbColor)
+ {
+ this._red = this._green = this._blue = null;
+ this._style = this._isHtmlColor ? vInValue : null;
+ }
+ else
+ {
+ this._style = null;
+
+ if (!(this._red >= 0 && this._red <= 255 && this._green >= 0 && this._green <= 255 && this._blue >= 0 && this._blue <= 255)) {
+ throw invalid;
+ }
+ }
+
+ return this._value = vInValue;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ delete this._value;
+ delete this._style;
+
+ delete this._red;
+ delete this._green;
+ delete this._blue;
+
+ delete this._isRgbColor;
+ delete this._isHtmlColor;
+ delete this._isThemedColor;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorCache.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorCache.js
new file mode 100644
index 0000000000..add29d1190
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorCache.js
@@ -0,0 +1,83 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.color.ColorCache");
+
+qx.renderer.color.ColorCache = function(propValue)
+{
+ var propKey;
+ var propKeyAsStyle = false;
+
+ switch(typeof propValue)
+ {
+ case "string":
+ if (propValue != "") {
+ propValue = propKey = propValue.toLowerCase();
+ break;
+ }
+
+ return propValue;
+
+ case "number":
+ if (propValue >= 0 && propValue <= 255)
+ {
+ propKey = propValue.toString();
+ break;
+ }
+
+ return propValue;
+
+ case "object":
+ if (propValue == null || propValue instanceof qx.renderer.color.Color) {
+ return propValue;
+ }
+
+ // Try to detect array of RGB values
+ if (typeof propValue.join === "function" && propValue.length == 3)
+ {
+ propKey = "rgb(" + propValue.join(",") + ")";
+ propKeyAsStyle = true;
+ break;
+ }
+
+ default:
+ return propValue;
+ }
+
+ if (qx.renderer.color.ColorCache._data[propKey]) {
+ return qx.renderer.color.ColorCache._data[propKey];
+ }
+
+ // this.debug("Create new color instance: " + propKey);
+
+ var vColorObject = qx.renderer.color.ColorCache._data[propKey] = qx.renderer.color.Color.themedNames[propValue] ? new qx.renderer.color.ColorObject(propValue) : new qx.renderer.color.Color(propValue);
+
+ if (propKeyAsStyle) {
+ vColorObject._style = propKey;
+ }
+
+ return vColorObject;
+}
+
+qx.renderer.color.ColorCache._data = {};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorObject.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorObject.js
new file mode 100644
index 0000000000..57b65668a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/color/ColorObject.js
@@ -0,0 +1,154 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.color.ColorObject", qx.renderer.color.Color,
+function(vValue)
+{
+ // this.debug("Value: " + vValue);
+ this.setValue(vValue);
+
+ if(qx.manager.object.ColorManager.getInstance().has(this._value)) {
+ return qx.manager.object.ColorManager.getInstance().get(this._value);
+ }
+
+ qx.core.Object.call(this);
+
+ // Register this color object to manager instance
+ qx.manager.object.ColorManager.getInstance().add(this);
+
+ // Here will all objects with a dependency to this
+ // color stored.
+ this._dependentObjects = {};
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.color.ColorObject.fromString = function(vDefString) {
+ return new qx.renderer.color.ColorObject(vDefString);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PUBLIC METHODS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Set a new value from selected theme (only for Operating System Colors)
+*/
+qx.Proto._updateTheme = function(vTheme)
+{
+ if (!this._isThemedColor) {
+ throw new Error("Could not redefine themed value of non os colors!");
+ }
+
+ this._applyThemedValue();
+ this._syncObjects();
+}
+
+qx.Proto._applyThemedValue = function()
+{
+ var vTheme = qx.manager.object.ColorManager.getInstance().getColorTheme();
+ var vRgb = vTheme.getValueByName(this._value);
+
+ if (vRgb)
+ {
+ this._red = vRgb[0];
+ this._green = vRgb[1];
+ this._blue = vRgb[2];
+ }
+
+ this._style = vTheme.getStyleByName(this._value);
+ this._hex = null;
+}
+
+qx.Proto._syncObjects = function()
+{
+ for (var i in this._dependentObjects) {
+ this._dependentObjects[i]._updateColors(this, this._style);
+ }
+}
+
+qx.Proto.setValue = function(vValue)
+{
+ this._normalize(vValue);
+ this._syncObjects();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OBJECT MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(vObject) {
+ this._dependentObjects[vObject.toHashCode()] = vObject;
+}
+
+qx.Proto.remove = function(vObject) {
+ delete this._dependentObjects[vObject.toHashCode()];
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._dependentObjects)
+ {
+ for (var i in this._dependentObjects) {
+ delete this._dependentObjects[i];
+ }
+
+ delete this._dependentObjects;
+ }
+
+ return qx.renderer.color.Color.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/Font.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/Font.js
new file mode 100644
index 0000000000..ceac713d8f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/Font.js
@@ -0,0 +1,218 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#load(qx.renderer.font.FontObject)
+
+************************************************************************ */
+
+/*!
+ Font implementation for qx.ui.core.Widget instances.
+*/
+
+qx.OO.defineClass("qx.renderer.font.Font", qx.core.Object,
+function(vSize, vName)
+{
+ qx.core.Object.call(this);
+
+ this._defs = {};
+
+ if (qx.util.Validation.isValidNumber(vSize)) {
+ this.setSize(vSize);
+ }
+
+ if (qx.util.Validation.isValidString(vName)) {
+ this.setName(vName);
+ }
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "size", type : "number", impl : "style" });
+qx.OO.addProperty({ name : "name", type : "string", impl : "style" });
+qx.OO.addProperty({ name : "bold", type : "boolean", defaultValue : false, impl : "style" });
+qx.OO.addProperty({ name : "italic", type : "boolean", defaultValue : false, impl : "style" });
+qx.OO.addProperty({ name : "underline", type : "boolean", defaultValue : false, impl : "style" });
+qx.OO.addProperty({ name : "strikeout", type : "boolean", defaultValue : false, impl : "style" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyStyle = function(propValue, propOldValue, propData)
+{
+ this._needsCompilation = true;
+ return true;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.font.Font.fromString = function(s)
+{
+ var vFont = new qx.renderer.font.Font;
+ var vAllParts = s.split(/\s+/);
+ var vName = [];
+ var vPart;
+
+ for (var i = 0; i < vAllParts.length; i++)
+ {
+ switch(vPart = vAllParts[i])
+ {
+ case "bold":
+ vFont.setBold(true);
+ break;
+
+ case "italic":
+ vFont.setItalic(true);
+ break;
+
+ case "underline":
+ vFont.setUnderline(true);
+ break;
+
+ case "strikeout":
+ vFont.setStrikeout(true);
+ break;
+
+ default:
+ var vTemp = parseFloat(vPart);
+
+ if(vTemp == vPart || qx.lang.String.contains(vPart, "px"))
+ {
+ vFont.setSize(vTemp);
+ }
+ else
+ {
+ vName.push(vPart);
+ }
+
+ break;
+ }
+ }
+
+ if(vName.length > 0) {
+ vFont.setName(vName.join(" "));
+ }
+
+ return vFont;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._needsCompilation = true;
+
+qx.Proto._compile = function()
+{
+ var vName = this.getName();
+ var vSize = this.getSize();
+ var vBold = this.getBold();
+ var vItalic = this.getItalic();
+ var vUnderline = this.getUnderline();
+ var vStrikeout = this.getStrikeout();
+ var vDecoration = "";
+
+ if (this.getUnderline()) {
+ vDecoration = "underline";
+ }
+
+ if (this.getStrikeout()) {
+ vDecoration += " " + "strikeout";
+ }
+
+ this._defs.fontFamily = qx.util.Validation.isValidString(vName) ? vName : "";
+ this._defs.fontSize = qx.util.Validation.isValidNumber(vSize) ? vSize + "px" : "";
+ this._defs.fontWeight = this.getBold() ? "bold" : "normal";
+ this._defs.fontStyle = this.getItalic() ? "italic" : "normal";
+ this._defs.textDecoration = qx.util.Validation.isValidString(vDecoration) ? vDecoration : "";
+
+ this._needsCompilation = false;
+}
+
+qx.Proto._applyWidget = function(vWidget)
+{
+ if (this._needsCompilation) {
+ this._compile();
+ }
+
+ vWidget.setStyleProperty("fontFamily", this._defs.fontFamily);
+ vWidget.setStyleProperty("fontSize", this._defs.fontSize);
+ vWidget.setStyleProperty("fontWeight", this._defs.fontWeight);
+ vWidget.setStyleProperty("fontStyle", this._defs.fontStyle);
+ vWidget.setStyleProperty("textDecoration", this._defs.textDecoration);
+}
+
+qx.Proto._resetWidget = function(vWidget)
+{
+ vWidget.removeStyleProperty("fontFamily");
+ vWidget.removeStyleProperty("fontSize");
+ vWidget.removeStyleProperty("fontWeight");
+ vWidget.removeStyleProperty("fontStyle");
+ vWidget.removeStyleProperty("textDecoration");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ delete this._defs;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontCache.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontCache.js
new file mode 100644
index 0000000000..03b1ee769e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontCache.js
@@ -0,0 +1,70 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.font.FontCache");
+
+qx.renderer.font.FontCache = function(propValue, propData)
+{
+ var propKey;
+ var propKeyAsStyle = false;
+
+ switch(typeof propValue)
+ {
+ case "string":
+ if (propValue != "")
+ {
+ propValue = propKey = propValue.toLowerCase();
+ break;
+ }
+
+ return propValue;
+
+ case "number":
+ propKey = propValue.toString();
+ break;
+
+ case "object":
+ if (propValue == null || propValue instanceof qx.renderer.font.Font) {
+ return propValue;
+ }
+
+ // Try to detect array of RGB values
+ if (typeof propValue.join === "function")
+ {
+ propKey = propValue.join(" ").toLowerCase();
+ break;
+ }
+
+ default:
+ return propValue;
+ }
+
+ if (qx.renderer.font.FontCache._data[propKey]) {
+ return qx.renderer.font.FontCache._data[propKey];
+ }
+
+ return qx.renderer.font.FontCache._data[propKey] = qx.renderer.font.Font.fromString(propKey);
+}
+
+qx.renderer.font.FontCache._data = {};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontObject.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontObject.js
new file mode 100644
index 0000000000..674b1f9215
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/font/FontObject.js
@@ -0,0 +1,93 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.font.FontObject", qx.renderer.font.Font,
+function(vSize, vName)
+{
+ this._dependentObjects = {};
+
+ qx.renderer.font.Font.call(this, vSize, vName);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WIDGET CONNECTION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addListenerWidget = function(o) {
+ this._dependentObjects[o.toHashCode()] = o;
+}
+
+qx.Proto.removeListenerWidget = function(o) {
+ delete this._dependentObjects[o.toHashCode()];
+}
+
+qx.Proto._sync = function(vEdge)
+{
+ var vAll = this._dependentObjects;
+ var vCurrent;
+
+ for (vKey in vAll)
+ {
+ vCurrent = vAll[vKey];
+
+ if (vCurrent.isCreated()) {
+ vCurrent._updateFont(vEdge);
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (typeof this._dependentObjects === "object")
+ {
+ for (vKey in this._dependentObjects) {
+ delete this._dependentObjects[vKey];
+ }
+
+ delete this._dependentObjects;
+ }
+
+ return qx.renderer.font.Font.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js
new file mode 100644
index 0000000000..dec4297676
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/CanvasLayoutImpl.js
@@ -0,0 +1,297 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.CanvasLayoutImpl", qx.renderer.layout.LayoutImpl,
+function(vWidget) {
+ qx.renderer.layout.LayoutImpl.call(this, vWidget);
+});
+
+
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+
+ Inherits from qx.renderer.layout.LayoutImpl:
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [11] DISPOSER
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the box width of the given child
+*/
+qx.Proto.computeChildBoxWidth = function(vChild)
+{
+ var vValue = null;
+
+ if (vChild._computedLeftTypeNull || vChild._computedRightTypeNull)
+ {
+ vValue = vChild.getWidthValue();
+ }
+ else if (vChild._hasParent)
+ {
+ vValue = this.getWidget().getInnerWidth() - vChild.getLeftValue() - vChild.getRightValue();
+ }
+
+ return vValue || vChild._computeBoxWidthFallback();
+}
+
+/*!
+ Compute and return the box height of the given child
+*/
+qx.Proto.computeChildBoxHeight = function(vChild)
+{
+ var vValue = null;
+
+ if (vChild._computedTopTypeNull || vChild._computedBottomTypeNull)
+ {
+ vValue = vChild.getHeightValue();
+ }
+ else if (vChild._hasParent)
+ {
+ vValue = this.getWidget().getInnerHeight() - vChild.getTopValue() - vChild.getBottomValue();
+ }
+
+ return vValue || vChild._computeBoxHeightFallback();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the needed width of the given child
+*/
+qx.Proto.computeChildNeededWidth = function(vChild)
+{
+ var vLeft = vChild._computedLeftTypePercent ? null : vChild.getLeftValue();
+ var vRight = vChild._computedRightTypePercent ? null : vChild.getRightValue();
+ var vMinBox = vChild._computedMinWidthTypePercent ? null : vChild.getMinWidthValue();
+ var vMaxBox = vChild._computedMaxWidthTypePercent ? null : vChild.getMaxWidthValue();
+
+ if (vLeft != null && vRight != null)
+ {
+ var vBox = vChild.getPreferredBoxWidth() || 0;
+ }
+ else
+ {
+ var vBox = (vChild._computedWidthTypePercent ? null : vChild.getWidthValue()) || vChild.getPreferredBoxWidth() || 0;
+ }
+
+ return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vLeft + vRight + vChild.getMarginLeft() + vChild.getMarginRight();
+}
+
+/*!
+ Compute and return the needed height of the given child
+*/
+qx.Proto.computeChildNeededHeight = function(vChild)
+{
+ var vTop = vChild._computedTopTypePercent ? null : vChild.getTopValue();
+ var vBottom = vChild._computedBottomTypePercent ? null : vChild.getBottomValue();
+ var vMinBox = vChild._computedMinHeightTypePercent ? null : vChild.getMinHeightValue();
+ var vMaxBox = vChild._computedMaxHeightTypePercent ? null : vChild.getMaxHeightValue();
+
+ if (vTop != null && vBottom != null)
+ {
+ var vBox = vChild.getPreferredBoxHeight() || 0;
+ }
+ else
+ {
+ var vBox = (vChild._computedHeightTypePercent ? null : vChild.getHeightValue()) || vChild.getPreferredBoxHeight() || 0;
+ }
+
+ return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vTop + vBottom + vChild.getMarginTop() + vChild.getMarginBottom();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild)
+{
+ // this makes sure that both functions get executed before return
+ var vUpdatePercent = vChild._recomputePercentX();
+ var vUpdateRange = vChild._recomputeRangeX();
+
+ return vUpdatePercent || vUpdateRange;
+}
+
+/*!
+ Actions that should be done if the inner height of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild)
+{
+ // this makes sure that both functions get executed before return
+ var vUpdatePercent = vChild._recomputePercentY();
+ var vUpdateRange = vChild._recomputeRangeY();
+
+ return vUpdatePercent || vUpdateRange;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This is called from qx.ui.core.Widget and it's task is to apply the layout
+ (excluding border and padding) to the child.
+*/
+qx.Proto.layoutChild = function(vChild, vJobs)
+{
+ this.layoutChild_sizeX_essentialWrapper(vChild, vJobs);
+ this.layoutChild_sizeY_essentialWrapper(vChild, vJobs);
+
+ this.layoutChild_sizeLimitX(vChild, vJobs);
+ this.layoutChild_sizeLimitY(vChild, vJobs);
+
+ this.layoutChild_locationX(vChild, vJobs);
+ this.layoutChild_locationY(vChild, vJobs);
+
+ this.layoutChild_marginX(vChild, vJobs);
+ this.layoutChild_marginY(vChild, vJobs);
+}
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth || vJobs.left || vJobs.right)
+ {
+ if (vChild._computedMinWidthTypeNull && vChild._computedWidthTypeNull && vChild._computedMaxWidthTypeNull && !(!vChild._computedLeftTypeNull && !vChild._computedRightTypeNull))
+ {
+ vChild._resetRuntimeWidth();
+ }
+ else
+ {
+ vChild._applyRuntimeWidth(vChild.getBoxWidth());
+ }
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight || vJobs.top || vJobs.bottom)
+ {
+ if (vChild._computedMinHeightTypeNull && vChild._computedHeightTypeNull && vChild._computedMaxHeightTypeNull && !(!vChild._computedTopTypeNull && !vChild._computedBottomTypeNull))
+ {
+ vChild._resetRuntimeHeight();
+ }
+ else
+ {
+ vChild._applyRuntimeHeight(vChild.getBoxHeight());
+ }
+ }
+ }
+}
+else
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width) {
+ vChild._computedWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getWidthValue());
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height) {
+ vChild._computedHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getHeightValue());
+ }
+ }
+}
+
+qx.Proto.layoutChild_locationX = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ if (vJobs.initial || vJobs.left || vJobs.parentPaddingLeft) {
+ vChild._computedLeftTypeNull ? vChild._computedRightTypeNull && vWidget.getPaddingLeft() > 0 ? vChild._applyRuntimeLeft(vWidget.getPaddingLeft()) : vChild._resetRuntimeLeft() : vChild._applyRuntimeLeft(vChild.getLeftValue() + vWidget.getPaddingLeft());
+ }
+
+ if (vJobs.initial || vJobs.right || vJobs.parentPaddingRight) {
+ vChild._computedRightTypeNull ? vChild._computedLeftTypeNull && vWidget.getPaddingRight() > 0 ? vChild._applyRuntimeRight(vWidget.getPaddingRight()) : vChild._resetRuntimeRight() : vChild._applyRuntimeRight(vChild.getRightValue() + vWidget.getPaddingRight());
+ }
+}
+
+qx.Proto.layoutChild_locationY = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ if (vJobs.initial || vJobs.top || vJobs.parentPaddingTop) {
+ vChild._computedTopTypeNull ? vChild._computedBottomTypeNull && vWidget.getPaddingTop() > 0 ? vChild._applyRuntimeTop(vWidget.getPaddingTop()) : vChild._resetRuntimeTop() : vChild._applyRuntimeTop(vChild.getTopValue() + vWidget.getPaddingTop());
+ }
+
+ if (vJobs.initial || vJobs.bottom || vJobs.parentPaddingBottom) {
+ vChild._computedBottomTypeNull ? vChild._computedTopTypeNull && vWidget.getPaddingBottom() > 0 ? vChild._applyRuntimeBottom(vWidget.getPaddingBottom()) : vChild._resetRuntimeBottom() : vChild._applyRuntimeBottom(vChild.getBottomValue() + vWidget.getPaddingBottom());
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js
new file mode 100644
index 0000000000..c948fca9b6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/DockLayoutImpl.js
@@ -0,0 +1,488 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.DockLayoutImpl", qx.renderer.layout.LayoutImpl,
+function(vWidget) {
+ qx.renderer.layout.LayoutImpl.call(this, vWidget);
+});
+
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+
+ Inherits from qx.renderer.layout.LayoutImpl:
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [11] DISPOSER
+*/
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [00] ADDITIONAL GLOBAL DATA AND METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.renderer.layout.DockLayoutImpl.METHOD_LOCATION = "layoutChild_location_";
+
+qx.renderer.layout.DockLayoutImpl._childRanking = {
+ vertical : function(c) { return c.getVerticalAlign() ? 1e6 : c.getHorizontalAlign() ? 2e6 : 3e6; },
+ horizontal : function(c) { return c.getHorizontalAlign() ? 1e6 : c.getVerticalAlign() ? 2e6 : 3e6; },
+ ordered : function(c) { return c.getHorizontalAlign() || c.getVerticalAlign() ? 1e6 : 2e6; }
+}
+
+qx.renderer.layout.DockLayoutImpl._childCheck =
+{
+ common : function(vChild) {
+ if (!(vChild._computedLeftTypeNull && vChild._computedRightTypeNull && vChild._computedTopTypeNull && vChild._computedBottomTypeNull)) {
+ throw new Error("qx.renderer.layout.DockLayoutImpl: It is not allowed to define any location values for children: " + vChild + "!");
+ }
+ },
+
+ horizontal : function(vChild)
+ {
+ if (!(vChild._computedMinHeightTypeNull && vChild._computedHeightTypeNull && vChild._computedMaxHeightTypeNull)) {
+ throw new Error("qx.renderer.layout.DockLayoutImpl: It is not allowed to define any vertical dimension for 'horizontal' placed children: " + vChild + "!");
+ }
+ },
+
+ vertical : function(vChild)
+ {
+ if (!(vChild._computedMinWidthTypeNull && vChild._computedWidthTypeNull && vChild._computedMaxWidthTypeNull)) {
+ throw new Error("qx.renderer.layout.DockLayoutImpl: It is not allowed to define any horizontal dimension for 'vertical' placed children: " + vChild + "!");
+ }
+ },
+
+ "default" : function(vChild)
+ {
+ qx.renderer.layout.DockLayoutImpl._childCheck.horizontal(vChild);
+ qx.renderer.layout.DockLayoutImpl._childCheck.vertical(vChild);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the box width of the given child
+*/
+qx.Proto.computeChildBoxWidth = function(vChild)
+{
+ if (this.getChildAlignMode(vChild) == "horizontal") {
+ return vChild.getWidthValue() || vChild._computeBoxWidthFallback();
+ }
+
+ return this.getWidget().getInnerWidth() - this._lastLeft - this._lastRight;
+}
+
+/*!
+ Compute and return the box height of the given child
+*/
+qx.Proto.computeChildBoxHeight = function(vChild)
+{
+ if (this.getChildAlignMode(vChild) == "vertical") {
+ return vChild.getHeightValue() || vChild._computeBoxHeightFallback();
+ }
+
+ return this.getWidget().getInnerHeight() - this._lastTop - this._lastBottom;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild)
+{
+ vChild._recomputePercentX();
+ vChild.addToLayoutChanges("location");
+
+ // inform the caller if there were any notable changes occured
+ return true;
+}
+
+/*!
+ Actions that should be done if the inner height of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild)
+{
+ vChild._recomputePercentY();
+ vChild.addToLayoutChanges("location");
+
+ // inform the caller if there were any notable changes occured
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Invalidate and recompute things because of job in queue (before the rest of job handling will be executed).
+*/
+qx.Proto.updateSelfOnJobQueueFlush = qx.util.Return.returnFalse;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Updates children on special jobs
+*/
+qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue)
+{
+ if (vQueue.mode || vQueue.addChild || vQueue.removeChild) {
+ this.getWidget()._addChildrenToLayoutQueue("location");
+ }
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method have full control of the order in which the
+ registered (or also non-registered) children should be
+ layouted on the horizontal axis.
+*/
+qx.Proto.flushChildrenQueue = function(vChildrenQueue)
+{
+ var vWidget=this.getWidget(), vChildren=vWidget.getVisibleChildren(), vChildrenLength=vChildren.length, vMode=vWidget.getMode();
+
+ // reset layout
+ this._lastLeft = this._lastRight = this._lastTop = this._lastBottom = 0;
+
+ // sorting children
+ var vRankImpl = qx.renderer.layout.DockLayoutImpl._childRanking[vMode];
+ var vOrderedChildren = qx.lang.Array.copy(vChildren).sort(function(c1, c2) {
+ return (vRankImpl(c1) + vChildren.indexOf(c1)) - (vRankImpl(c2) + vChildren.indexOf(c2));
+ });
+
+ // flushing children
+ for (var i=0; i<vChildrenLength; i++) {
+ vWidget._layoutChild(vOrderedChildren[i]);
+ }
+}
+
+qx.Proto.getChildAlign = function(vChild) {
+ return vChild.getVerticalAlign() || vChild.getHorizontalAlign() || "default";
+}
+
+qx.Proto.getChildAlignMode = function(vChild) {
+ return vChild.getVerticalAlign() ? "vertical" : vChild.getHorizontalAlign() ? "horizontal" : "default";
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This is called from qx.ui.core.Widget and it's task is to apply the layout
+ (excluding border and padding) to the child.
+*/
+qx.Proto.layoutChild = function(vChild, vJobs)
+{
+ qx.renderer.layout.DockLayoutImpl._childCheck.common(vChild);
+ qx.renderer.layout.DockLayoutImpl._childCheck[this.getChildAlignMode(vChild)](vChild);
+
+ this.layoutChild_sizeX_essentialWrapper(vChild, vJobs);
+ this.layoutChild_sizeY_essentialWrapper(vChild, vJobs);
+
+ this.layoutChild_sizeLimitX(vChild, vJobs);
+ this.layoutChild_sizeLimitY(vChild, vJobs);
+
+ this[qx.renderer.layout.DockLayoutImpl.METHOD_LOCATION + this.getChildAlign(vChild)](vChild, vJobs);
+}
+
+qx.Proto.layoutChild_location_top = function(vChild, vJobs)
+{
+ vChild._applyRuntimeTop(this._lastTop);
+ vChild._applyRuntimeLeft(this._lastLeft);
+
+ this.layoutChild_location_horizontal(vChild);
+
+ this._lastTop += vChild.getBoxHeight();
+}
+
+qx.Proto.layoutChild_location_left = function(vChild, vJobs)
+{
+ vChild._applyRuntimeLeft(this._lastLeft);
+ vChild._applyRuntimeTop(this._lastTop);
+
+ this.layoutChild_location_vertical(vChild);
+
+ this._lastLeft += vChild.getBoxWidth();
+}
+
+
+
+
+
+
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto._applyComputedWidth = function(vChild)
+ {
+ // direct recompute (need to be done, while layouting as the
+ // _last* variable changes during layout process)
+ vChild._recomputeBoxWidth();
+
+ // wrong: simple invalidates are enough here
+ // correct: needs recompute to inform children (to update centering for example)
+ vChild._recomputeOuterWidth();
+ vChild._recomputeInnerWidth();
+
+ // apply calculated width
+ vChild._applyRuntimeWidth(vChild.getBoxWidth());
+ }
+
+ qx.Proto._applyComputedHeight = function(vChild)
+ {
+ // direct recompute (need to be done, while layouting as the
+ // _last* variable changes during layout process)
+ vChild._recomputeBoxHeight();
+
+ // wrong: simple invalidates are enough here
+ // correct: needs recompute to inform children (to update centering for example)
+ vChild._recomputeOuterHeight();
+ vChild._recomputeInnerHeight();
+
+ // apply calculated height
+ vChild._applyRuntimeHeight(vChild.getBoxHeight());
+ }
+
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ // We need to respect all dimension properties on the horizontal axis in internet explorer to set the 'width' style
+ if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth) {
+ vChild._computedWidthTypeNull && vChild._computedMinWidthTypeNull && vChild._computedMaxWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getBoxWidth());
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ // We need to respect all dimension properties on the vertical axis in internet explorer to set the 'height' style
+ if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight) {
+ vChild._computedHeightTypeNull && vChild._computedMinHeightTypeNull && vChild._computedMaxHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getBoxHeight());
+ }
+ }
+
+ qx.Proto.layoutChild_location_horizontal = function(vChild) {
+ this._applyComputedWidth(vChild);
+ }
+
+ qx.Proto.layoutChild_location_vertical = function(vChild) {
+ this._applyComputedHeight(vChild);
+ }
+
+ qx.Proto.layoutChild_location_right = function(vChild, vJobs)
+ {
+ vChild._applyRuntimeLeft(this.getWidget().getInnerWidth() - this._lastRight - vChild.getBoxWidth());
+ vChild._applyRuntimeTop(this._lastTop);
+
+ this.layoutChild_location_vertical(vChild);
+
+ this._lastRight += vChild.getBoxWidth();
+ }
+
+ qx.Proto.layoutChild_location_bottom = function(vChild, vJobs)
+ {
+ vChild._applyRuntimeTop(this.getWidget().getInnerHeight() - this._lastBottom - vChild.getBoxHeight());
+ vChild._applyRuntimeLeft(this._lastLeft);
+
+ this.layoutChild_location_horizontal(vChild);
+
+ this._lastBottom += vChild.getBoxHeight();
+ }
+
+ qx.Proto.layoutChild_location_default = function(vChild, vJobs)
+ {
+ var vWidget = this.getWidget();
+
+ vChild._resetRuntimeRight();
+ vChild._resetRuntimeBottom();
+
+ vChild._applyRuntimeTop(this._lastTop);
+ vChild._applyRuntimeLeft(this._lastLeft);
+
+ this._applyComputedWidth(vChild);
+ this._applyComputedHeight(vChild);
+ }
+}
+else
+{
+ qx.Proto._applyComputedWidth = function(vChild)
+ {
+ // direct recompute (need to be done, while layouting as the
+ // _last* variable changes during layout process)
+ vChild._recomputeBoxWidth();
+
+ // wrong: simple invalidates are enough here
+ // correct: needs recompute to inform children (to update centering for example)
+ vChild._recomputeOuterWidth();
+ vChild._recomputeInnerWidth();
+ }
+
+ qx.Proto._applyComputedHeight = function(vChild)
+ {
+ // direct recompute (need to be done, while layouting as the
+ // _last* variable changes during layout process)
+ vChild._recomputeBoxHeight();
+
+ // wrong: simple invalidates are enough here
+ // correct: needs recompute to inform children (to update centering for example)
+ vChild._recomputeOuterHeight();
+ vChild._recomputeInnerHeight();
+ }
+
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width) {
+ vChild._computedWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getWidthValue());
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height) {
+ vChild._computedHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getHeightValue());
+ }
+ }
+
+ qx.Proto.layoutChild_location_horizontal = function(vChild)
+ {
+ this._applyComputedWidth(vChild);
+ vChild._applyRuntimeRight(this._lastRight);
+ }
+
+ qx.Proto.layoutChild_location_vertical = function(vChild)
+ {
+ this._applyComputedHeight(vChild);
+ vChild._applyRuntimeBottom(this._lastBottom);
+ }
+
+ qx.Proto.layoutChild_location_right = function(vChild, vJobs)
+ {
+ vChild._applyRuntimeRight(this._lastRight);
+ vChild._applyRuntimeTop(this._lastTop);
+
+ this.layoutChild_location_vertical(vChild);
+
+ this._lastRight += vChild.getBoxWidth();
+ }
+
+ qx.Proto.layoutChild_location_bottom = function(vChild, vJobs)
+ {
+ vChild._applyRuntimeBottom(this._lastBottom);
+ vChild._applyRuntimeLeft(this._lastLeft);
+
+ this.layoutChild_location_horizontal(vChild);
+
+ this._lastBottom += vChild.getBoxHeight();
+ }
+
+ qx.Proto.layoutChild_location_default = function(vChild, vJobs)
+ {
+ vChild._resetRuntimeWidth();
+ vChild._resetRuntimeHeight();
+
+ vChild._applyRuntimeTop(this._lastTop);
+ vChild._applyRuntimeRight(this._lastRight);
+ vChild._applyRuntimeBottom(this._lastBottom);
+ vChild._applyRuntimeLeft(this._lastLeft);
+
+ this._applyComputedWidth(vChild);
+ this._applyComputedHeight(vChild);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js
new file mode 100644
index 0000000000..cd11e3dd86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/FlowLayoutImpl.js
@@ -0,0 +1,426 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.FlowLayoutImpl", qx.renderer.layout.LayoutImpl,
+function(vWidget) {
+ qx.renderer.layout.LayoutImpl.call(this, vWidget);
+});
+
+qx.renderer.layout.FlowLayoutImpl.STR_FIRST = "getFirstVisibleChild";
+qx.renderer.layout.FlowLayoutImpl.STR_LAST = "getLastVisibleChild";
+qx.renderer.layout.FlowLayoutImpl.STR_NEXT = "getNextSibling";
+qx.renderer.layout.FlowLayoutImpl.STR_PREVIOUS = "getPreviousSibling";
+
+
+/*!
+ Global Structure:
+
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+ Inherits from qx.renderer.layout.LayoutImpl:
+
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [11] DISPOSER
+*/
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the width needed by all children of this widget
+*/
+qx.Proto.computeChildrenNeededWidth = function()
+{
+ var w = this.getWidget();
+ return qx.renderer.layout.LayoutImpl.prototype.computeChildrenNeededWidth_sum.call(this) + ((w.getVisibleChildrenLength()-1) * w.getHorizontalSpacing());
+}
+
+/*!
+ Calculate the layout to get the needed height of the children
+*/
+qx.Proto.computeChildrenNeededHeight = function()
+{
+ var vWidget = this.getWidget();
+
+ var vInnerWidth = vWidget.getInnerWidth();
+
+ var vHorizontalSpacing = vWidget.getHorizontalSpacing();
+ var vVerticalSpacing = vWidget.getVerticalSpacing();
+ var vReversed = vWidget.getReverseChildrenOrder();
+
+ var vRowWidth = 0;
+ var vRowHeight = 0;
+
+ var vRowHeightSum = 0;
+
+ for (var i=0, ch=vWidget.getVisibleChildren(), chl=ch.length, chc; i<chl; i++)
+ {
+ chc = vReversed ? ch[chl-1-i] : ch[i];
+
+ vRowWidth += chc.getNeededWidth();
+
+ if (vRowWidth > vInnerWidth)
+ {
+ vRowHeightSum += vRowHeight + vVerticalSpacing;
+ vRowWidth = chc.getNeededWidth();
+ vRowHeight = chc.getNeededHeight();
+ }
+ else
+ {
+ vRowHeight = Math.max(vRowHeight, chc.getNeededHeight());
+ }
+
+ vRowWidth += vHorizontalSpacing;
+ }
+
+ return vRowHeightSum + vRowHeight;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Things to do and layout when any of the childs changes it's outer width.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild)
+{
+ // If a child only change it's width also recompute the height
+ // as the layout flows around here
+ //this.getWidget()._recomputeNeededHeightHelper();
+ this.getWidget()._invalidatePreferredInnerHeight();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild)
+{
+ vChild._recomputePercentX();
+ vChild.addToLayoutChanges("location");
+
+ return true;
+}
+
+/*!
+ Actions that should be done if the inner height of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild)
+{
+ vChild._recomputePercentY();
+ vChild.addToLayoutChanges("location");
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Updates children on special jobs
+*/
+qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue)
+{
+ if (vQueue.horizontalSpacing || vQueue.verticalSpacing || vQueue.reverseChildrenOrder || vQueue.horizontalChildrenAlign || vQueue.verticalChildrenAlign) {
+ this.getWidget()._addChildrenToLayoutQueue("location");
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method combines calls of methods which should be done if a widget should be removed from the current layout.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex)
+{
+ var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i=-1;
+
+ if (w.getReverseChildrenOrder())
+ {
+ while((chc=ch[++i]) && i<vIndex) {
+ chc.addToLayoutChanges("location");
+ }
+ }
+ else
+ {
+ i+=vIndex;
+ while(chc=ch[++i]) {
+ chc.addToLayoutChanges("location");
+ }
+ }
+}
+
+/*!
+ This method combines calls of methods which should be done if a child should be moved
+ inside the same parent to a new positions.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex)
+{
+ for (var i=Math.min(vIndex, vOldIndex), ch=this.getWidget().getVisibleChildren(), l=ch.length; i<l; i++) {
+ ch[i].addToLayoutChanges("location");
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method have full control of the order in which the
+ registered (or also non-registered) children should be
+ layouted on the horizontal axis.
+*/
+
+qx.Proto.flushChildrenQueue = function(vChildrenQueue)
+{
+ var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, chh;
+
+ if (w.getReverseChildrenOrder())
+ {
+ // layout all childs from the first child
+ // with an own layout request to the end
+ var i=chl, changed=false;
+ while(chc=ch[--i])
+ {
+ chh = chc.toHashCode();
+
+ if (changed || vChildrenQueue[chh])
+ {
+ w._layoutChild(chc);
+ changed = true;
+ }
+ }
+ }
+ else
+ {
+ // layout all childs from the first child
+ // with an own layout request to the end
+ var i=-1, changed=false;
+ while(chc=ch[++i])
+ {
+ chh = chc.toHashCode();
+
+ if (changed || vChildrenQueue[chh])
+ {
+ w._layoutChild(chc);
+ changed = true;
+ }
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.layoutChild = function(vChild, vJobs)
+{
+ this.layoutChild_sizeX_essentialWrapper(vChild, vJobs);
+ this.layoutChild_sizeY_essentialWrapper(vChild, vJobs);
+
+ this.layoutChild_sizeLimitX(vChild, vJobs);
+ this.layoutChild_sizeLimitY(vChild, vJobs);
+
+ this.layoutChild_marginX(vChild, vJobs);
+ this.layoutChild_marginY(vChild, vJobs);
+
+ this.layoutChild_location(vChild, vJobs);
+}
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera())
+{
+ /*!
+ We need to respect all dimension properties on the horizontal axis in
+ internet explorer to set the 'width' style
+ */
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth) {
+ vChild._computedWidthTypeNull && vChild._computedMinWidthTypeNull && vChild._computedMaxWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getBoxWidth());
+ }
+ }
+
+ /*!
+ We need to respect all dimension properties on the vertical axis in
+ internet explorer to set the 'height' style
+ */
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight) {
+ vChild._computedHeightTypeNull && vChild._computedMinHeightTypeNull && vChild._computedMaxHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getBoxHeight());
+ }
+ }
+}
+else
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width) {
+ vChild._computedWidthTypeNull ? vChild._resetRuntimeWidth() : vChild._applyRuntimeWidth(vChild.getWidthValue());
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height) {
+ vChild._computedHeightTypeNull ? vChild._resetRuntimeHeight() : vChild._applyRuntimeHeight(vChild.getHeightValue());
+ }
+ }
+}
+
+qx.Proto.layoutChild_location = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+ var vReverse = vWidget.getReverseChildrenOrder();
+
+ var vMethodBegin = vReverse ? qx.renderer.layout.FlowLayoutImpl.STR_LAST : qx.renderer.layout.FlowLayoutImpl.STR_FIRST;
+ var vMethodContinue = vReverse ? qx.renderer.layout.FlowLayoutImpl.STR_NEXT : qx.renderer.layout.FlowLayoutImpl.STR_PREVIOUS;
+
+ if (vChild == vWidget[vMethodBegin]())
+ {
+ vChild._cachedLocationHorizontal = vChild._cachedLocationVertical = vChild._cachedRow = 0;
+ }
+ else
+ {
+ var vTempChild = vChild[vMethodContinue]();
+
+ // stupidly update cache value (check them later)
+ vChild._cachedLocationHorizontal = vTempChild._cachedLocationHorizontal + vTempChild.getOuterWidth() + vWidget.getHorizontalSpacing();
+ vChild._cachedLocationVertical = vTempChild._cachedLocationVertical;
+ vChild._cachedRow = vTempChild._cachedRow;
+
+ // check now
+ if ((vChild._cachedLocationHorizontal + vChild.getOuterWidth()) > vWidget.getInnerWidth())
+ {
+ // evaluate width of previous row
+ vRowMax = vTempChild.getOuterHeight();
+ while((vTempChild = vTempChild[vMethodContinue]()) && vTempChild._cachedRow == vChild._cachedRow) {
+ vRowMax = Math.max(vRowMax, vTempChild.getOuterHeight());
+ }
+
+ // switch to new row
+ vChild._cachedLocationHorizontal = 0;
+ vChild._cachedLocationVertical += vWidget.getVerticalSpacing() + vRowMax;
+ vChild._cachedRow++;
+ }
+ }
+
+ // add margins and parent padding
+ if (vWidget.getHorizontalChildrenAlign() == "right")
+ {
+ vChild._resetRuntimeLeft();
+ vChild._applyRuntimeRight(vWidget.getPaddingRight() + vChild._cachedLocationHorizontal);
+ }
+ else
+ {
+ vChild._resetRuntimeRight();
+ vChild._applyRuntimeLeft(vWidget.getPaddingLeft() + vChild._cachedLocationHorizontal);
+ }
+
+ if (vWidget.getVerticalChildrenAlign() == "bottom")
+ {
+ vChild._resetRuntimeTop();
+ vChild._applyRuntimeBottom(vWidget.getPaddingBottom() + vChild._cachedLocationVertical);
+ }
+ else
+ {
+ vChild._resetRuntimeBottom();
+ vChild._applyRuntimeTop(vWidget.getPaddingTop() + vChild._cachedLocationVertical);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js
new file mode 100644
index 0000000000..ecb8c899a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/GridLayoutImpl.js
@@ -0,0 +1,300 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.GridLayoutImpl", qx.renderer.layout.LayoutImpl,
+function(vWidget) {
+ qx.renderer.layout.LayoutImpl.call(this, vWidget);
+});
+
+
+
+
+/*!
+ Global Structure:
+
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+ Inherits from qx.renderer.layout.LayoutImpl:
+
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [11] DISPOSER
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the box width of the given child.
+*/
+qx.Proto.computeChildBoxWidth = function(vChild)
+{
+ var vWidget = this.getWidget();
+ var vColWidth = vWidget.getColumnInnerWidth(vChild._col, vChild._row);
+
+ // extend colwidth to spanned area
+ if (vWidget.isSpanStart(vChild._col, vChild._row))
+ {
+ var vEntry = vWidget.getSpanEntry(vChild._col, vChild._row);
+ for (var i=1; i<vEntry.colLength; i++)
+ {
+ // right padding from the previous cell
+ vColWidth += vWidget.getComputedCellPaddingRight(vChild._col + i - 1, vChild._row);
+
+ // left padding from the current cell
+ vColWidth += vWidget.getComputedCellPaddingLeft(vChild._col + i, vChild._row);
+
+ // spacing between previous and current cell
+ vColWidth += vWidget.getHorizontalSpacing();
+
+ // inner width of the current cell plus
+ vColWidth += vWidget.getColumnInnerWidth(vChild._col + i, vChild._row);
+ }
+ }
+
+ return vChild.getAllowStretchX() ? vColWidth : Math.min(vChild.getWidthValue(), vColWidth);
+}
+
+/*!
+ Compute and return the box height of the given child.
+*/
+qx.Proto.computeChildBoxHeight = function(vChild)
+{
+ var vWidget = this.getWidget();
+ var vRowHeight = vWidget.getRowInnerHeight(vChild._col, vChild._row);
+
+ // extend colwidth to spanned area
+ if (vWidget.isSpanStart(vChild._col, vChild._row))
+ {
+ var vEntry = vWidget.getSpanEntry(vChild._col, vChild._row);
+ for (var i=1; i<vEntry.rowLength; i++)
+ {
+ // right padding from the previous cell
+ vRowHeight += vWidget.getComputedCellPaddingBottom(vChild._col, vChild._row + i - 1);
+
+ // left padding from the current cell
+ vRowHeight += vWidget.getComputedCellPaddingTop(vChild._col, vChild._row + i);
+
+ // spacing between previous and current cell
+ vRowHeight += vWidget.getVerticalSpacing();
+
+ // inner width of the current cell plus
+ vRowHeight += vWidget.getRowInnerHeight(vChild._col, vChild._row + i);
+ }
+ }
+
+ return vChild.getAllowStretchY() ? vRowHeight : Math.min(vChild.getHeightValue(), vRowHeight);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the width needed by all children of this widget
+ which is in a grid layout the width used by all columns.
+*/
+qx.Proto.computeChildrenNeededWidth = function()
+{
+ var vWidget = this.getWidget();
+ var vSpacingX = vWidget.getHorizontalSpacing();
+ var vSum = -vSpacingX;
+
+ for (var i=0, l=vWidget.getColumnCount(); i<l; i++) {
+ vSum += vWidget.getColumnBoxWidth(i) + vSpacingX;
+ }
+
+ return vSum;
+}
+
+/*!
+ Compute and return the height needed by all children of this widget
+ which is in a grid layout the height used by all rows.
+*/
+qx.Proto.computeChildrenNeededHeight = function()
+{
+ var vWidget = this.getWidget();
+ var vSpacingY = vWidget.getVerticalSpacing();
+ var vSum = -vSpacingY;
+
+ for (var i=0, l=vWidget.getRowCount(); i<l; i++) {
+ vSum += vWidget.getRowBoxHeight(i) + vSpacingY;
+ }
+
+ return vSum;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild)
+{
+ vChild._recomputePercentX();
+ vChild.addToLayoutChanges("locationX");
+
+ return true;
+}
+
+/*!
+ Actions that should be done if the inner height of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild)
+{
+ vChild._recomputePercentY();
+ vChild.addToLayoutChanges("locationY");
+
+ return true;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This is called from qx.ui.core.Widget and it's task is to apply the layout
+ (excluding border and padding) to the child.
+*/
+
+qx.Proto.layoutChild = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ this.layoutChild_sizeX(vChild, vJobs);
+ this.layoutChild_sizeY(vChild, vJobs);
+
+ this.layoutChild_sizeLimitX(vChild, vJobs);
+ this.layoutChild_sizeLimitY(vChild, vJobs);
+
+ this.layoutChild_marginX(vChild, vJobs);
+ this.layoutChild_marginY(vChild, vJobs);
+
+ this.layoutChild_locationX(vChild, vJobs);
+ this.layoutChild_locationY(vChild, vJobs);
+}
+
+qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+{
+ vChild._applyRuntimeWidth(vChild.getBoxWidth());
+}
+
+qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+{
+ vChild._applyRuntimeHeight(vChild.getBoxHeight());
+}
+
+qx.Proto.layoutChild_locationX = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+ var vSpacingX = vWidget.getHorizontalSpacing();
+ var vLocSumX = vWidget.getPaddingLeft() + vWidget.getComputedCellPaddingLeft(vChild._col, vChild._row);
+
+ for (var i=0; i<vChild._col; i++) {
+ vLocSumX += vWidget.getColumnBoxWidth(i) + vSpacingX;
+ }
+
+ switch(vChild.getHorizontalAlign() || vWidget.getColumnHorizontalAlignment(vChild._col) || vWidget.getRowHorizontalAlignment(vChild._row) || vWidget.getHorizontalChildrenAlign())
+ {
+ case "center":
+ vLocSumX += Math.round((vWidget.getColumnInnerWidth(vChild._col, vChild._row) - vChild.getBoxWidth()) / 2);
+ break;
+
+ case "right":
+ vLocSumX += vWidget.getColumnInnerWidth(vChild._col, vChild._row) - vChild.getBoxWidth();
+ break;
+ }
+
+ vChild._applyRuntimeLeft(vLocSumX);
+}
+
+qx.Proto.layoutChild_locationY = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+ var vSpacingY = vWidget.getVerticalSpacing();
+ var vLocSumY = vWidget.getPaddingTop() + vWidget.getComputedCellPaddingTop(vChild._col, vChild._row);
+
+ for (var i=0; i<vChild._row; i++) {
+ vLocSumY += vWidget.getRowBoxHeight(i) + vSpacingY;
+ }
+
+ switch(vChild.getVerticalAlign() || vWidget.getRowVerticalAlignment(vChild._row) || vWidget.getColumnVerticalAlignment(vChild._col) || vWidget.getVerticalChildrenAlign())
+ {
+ case "middle":
+ vLocSumY += Math.round((vWidget.getRowInnerHeight(vChild._col, vChild._row) - vChild.getBoxHeight()) / 2);
+ break;
+
+ case "bottom":
+ vLocSumY += vWidget.getRowInnerHeight(vChild._col, vChild._row) - vChild.getBoxHeight();
+ break;
+ }
+
+ vChild._applyRuntimeTop(vLocSumY);
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js
new file mode 100644
index 0000000000..6276f309bc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/HorizontalBoxLayoutImpl.js
@@ -0,0 +1,863 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.HorizontalBoxLayoutImpl", qx.renderer.layout.LayoutImpl,
+function(vWidget) {
+ qx.renderer.layout.LayoutImpl.call(this, vWidget);
+});
+
+qx.OO.addProperty({ name : "enableFlexSupport", type : "boolean", defaultValue : true });
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+
+ Inherits from qx.renderer.layout.LayoutImpl:
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [11] DISPOSER
+*/
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the box width of the given child.
+*/
+qx.Proto.computeChildBoxWidth = function(vChild) {
+ return vChild.getWidthValue() || vChild._computeBoxWidthFallback();
+}
+
+/*!
+ Compute and return the box height of the given child.
+*/
+qx.Proto.computeChildBoxHeight = function(vChild)
+{
+ if (this.getWidget().getStretchChildrenOrthogonalAxis() && vChild._computedHeightTypeNull && vChild.getAllowStretchY()) {
+ return this.getWidget().getInnerHeight();
+ }
+
+ return vChild.getHeightValue() || vChild._computeBoxHeightFallback();
+}
+
+/*!
+ Computes the width of all flexible children.
+*/
+qx.Proto.computeChildrenFlexWidth = function()
+{
+ if (this._childrenFlexWidthComputed || !this.getEnableFlexSupport()) {
+ return;
+ }
+
+ this._childrenFlexWidthComputed = true;
+
+ // this.debug("computeChildrenFlexWidth");
+
+ var vWidget = this.getWidget();
+ var vChildren = vWidget.getVisibleChildren();
+ var vChildrenLength = vChildren.length;
+ var vCurrentChild;
+ var vFlexibleChildren = [];
+ var vAvailWidth = vWidget.getInnerWidth();
+ var vUsedWidth = vWidget.getSpacing() * (vChildrenLength-1);
+ var vIterator;
+
+
+ // *************************************************************
+ // 1. Compute the sum of all static sized children and finding
+ // all flexible children.
+ // *************************************************************
+ for (vIterator=0; vIterator<vChildrenLength; vIterator++)
+ {
+ vCurrentChild = vChildren[vIterator];
+
+ if (vCurrentChild._computedWidthTypeFlex)
+ {
+ vFlexibleChildren.push(vCurrentChild);
+
+ if (vWidget._computedWidthTypeAuto) {
+ vUsedWidth += vCurrentChild.getPreferredBoxWidth();
+ }
+ }
+ else
+ {
+ vUsedWidth += vCurrentChild.getOuterWidth();
+ }
+ }
+
+ // this.debug("Width: " + vUsedWidth + "/" + vAvailWidth);
+ // this.debug("Flexible Count: " + vFlexibleChildren.length);
+
+
+ // *************************************************************
+ // 2. Compute the sum of all flexible children widths
+ // *************************************************************
+ var vRemainingWidth = vAvailWidth - vUsedWidth;
+ var vFlexibleChildrenLength = vFlexibleChildren.length;
+ var vPrioritySum = 0;
+
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) {
+ vPrioritySum += vFlexibleChildren[vIterator]._computedWidthParsed;
+ }
+
+
+ // *************************************************************
+ // 3. Calculating the size of each 'part'.
+ // *************************************************************
+ var vPartWidth = vRemainingWidth / vPrioritySum;
+
+
+ if (!vWidget.getUseAdvancedFlexAllocation())
+ {
+ // *************************************************************
+ // 4a. Computing the flex width value of each flexible child
+ // and add the width to the usedWidth, so that we can
+ // fix rounding problems later.
+ // *************************************************************
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthParsed * vPartWidth);
+ vUsedWidth += vCurrentChild._computedWidthFlexValue;
+ }
+ }
+ else
+ {
+ // *************************************************************
+ // 4b. Calculating the diff. Which means respect the min/max
+ // width configuration in flex and store the higher/lower
+ // data in a diff.
+ // *************************************************************
+
+ var vAllocationDiff = 0;
+ var vMinAllocationLoops, vFlexibleChildrenLength, vAdjust, vCurrentAllocationSum, vFactorSum, vComputedFlexibleWidth;
+
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ vComputedFlexibleWidth = vCurrentChild._computedWidthFlexValue = vCurrentChild._computedWidthParsed * vPartWidth;
+ vAllocationDiff += vComputedFlexibleWidth - qx.lang.Number.limit(vComputedFlexibleWidth, vCurrentChild.getMinWidthValue(), vCurrentChild.getMaxWidthValue());
+ }
+
+ // Rounding diff
+ vAllocationDiff = Math.round(vAllocationDiff);
+
+ if (vAllocationDiff == 0)
+ {
+ // *************************************************************
+ // 5a. If the diff is equal zero we must not do anything more
+ // and do nearly identical the same like in 4a. which means
+ // to round the calculated flex value and add it to the
+ // used width so we can fix rounding problems later.
+ // *************************************************************
+
+ // Rounding values and fixing rounding errors
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue);
+ vUsedWidth += vCurrentChild._computedWidthFlexValue;
+ }
+ }
+ else
+ {
+ // *************************************************************
+ // 5b. Find maximum loops of each adjustable child to adjust
+ // the width until the min/max width limits are reached.
+ // *************************************************************
+
+ var vUp = vAllocationDiff > 0;
+ for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ if (vUp)
+ {
+ vAdjust = (vCurrentChild.getMaxWidthValue() || Infinity) - vCurrentChild._computedWidthFlexValue;
+
+ if (vAdjust > 0)
+ {
+ vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedWidthParsed);
+ }
+ else
+ {
+ qx.lang.Array.removeAt(vFlexibleChildren, vIterator);
+
+ vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue);
+ vUsedWidth += Math.round(vCurrentChild._computedWidthFlexValue + vAdjust);
+ }
+ }
+ else
+ {
+ vAdjust = qx.util.Validation.isValidNumber(vCurrentChild.getMinWidthValue()) ? vCurrentChild._computedWidthFlexValue - vCurrentChild.getMinWidthValue() : vCurrentChild._computedWidthFlexValue;
+
+ if (vAdjust > 0)
+ {
+ vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedWidthParsed);
+ }
+ else
+ {
+ qx.lang.Array.removeAt(vFlexibleChildren, vIterator);
+
+ vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue);
+ vUsedWidth += Math.round(vCurrentChild._computedWidthFlexValue - vAdjust);
+ }
+ }
+ }
+
+ // *************************************************************
+ // 6. Try to reallocate the width between flexible children
+ // so that the requirements through min/max limits
+ // are satisfied.
+ // *************************************************************
+ while (vAllocationDiff != 0 && vFlexibleChildrenLength > 0)
+ {
+ vFlexibleChildrenLength = vFlexibleChildren.length;
+ vMinAllocationLoops = Infinity;
+ vFactorSum = 0;
+
+ // Find minimal loop amount
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vMinAllocationLoops = Math.min(vMinAllocationLoops, vFlexibleChildren[vIterator]._allocationLoops);
+ vFactorSum += vFlexibleChildren[vIterator]._computedWidthParsed;
+ }
+
+ // Be sure that the adjustment is not bigger/smaller than diff
+ vCurrentAllocationSum = Math.min(vFactorSum * vMinAllocationLoops, vAllocationDiff);
+
+ // this.debug("Diff: " + vAllocationDiff);
+ // this.debug("Min Loops: " + vMinAllocationLoops);
+ // this.debug("Sum: " + vCurrentAllocationSum);
+ // this.debug("Factor: " + vFactorSum);
+
+ // Reducing diff by current sum
+ vAllocationDiff -= vCurrentAllocationSum;
+
+ // Adding sizes to children to adjust
+ for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+ vCurrentChild._computedWidthFlexValue += vCurrentAllocationSum / vFactorSum * vCurrentChild._computedWidthParsed;
+
+ if (vCurrentChild._allocationLoops == vMinAllocationLoops)
+ {
+ vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue);
+
+ vUsedWidth += vCurrentChild._computedWidthFlexValue;
+ delete vCurrentChild._allocationLoops;
+ qx.lang.Array.removeAt(vFlexibleChildren, vIterator);
+ }
+ else
+ {
+ if (vAllocationDiff == 0)
+ {
+ vCurrentChild._computedWidthFlexValue = Math.round(vCurrentChild._computedWidthFlexValue);
+ vUsedWidth += vCurrentChild._computedWidthFlexValue;
+ delete vCurrentChild._allocationLoops;
+ }
+ else
+ {
+ vCurrentChild._allocationLoops -= vMinAllocationLoops;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // *************************************************************
+ // 7. Fix rounding errors
+ // *************************************************************
+ vCurrentChild._computedWidthFlexValue += vAvailWidth - vUsedWidth;
+}
+
+qx.Proto.invalidateChildrenFlexWidth = function() {
+ delete this._childrenFlexWidthComputed;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the width needed by all children of this widget
+*/
+qx.Proto.computeChildrenNeededWidth = function()
+{
+ var w = this.getWidget();
+ return qx.renderer.layout.LayoutImpl.prototype.computeChildrenNeededWidth_sum.call(this) + ((w.getVisibleChildrenLength()-1) * w.getSpacing());
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Things to do and layout when any of the childs changes its outer width.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild)
+{
+ // if a childrens outer width changes we need to update our accumulated
+ // width of all childrens (used for center or right alignments)
+ this.getWidget()._invalidateAccumulatedChildrenOuterWidth();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild)
+{
+ if (this.getWidget().getHorizontalChildrenAlign() == "center") {
+ vChild.addToLayoutChanges("locationX");
+ }
+
+ // use variables here to be sure to call both methods.
+ var vUpdatePercent = vChild._recomputePercentX();
+ var vUpdateFlex = vChild._recomputeFlexX();
+
+ // inform the caller if there were any notable changes occured
+ return vUpdatePercent || vUpdateFlex;
+}
+
+/*!
+ Actions that should be done if the inner height of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild)
+{
+ // use variables here to be sure to call both methods.
+ var vUpdatePercent = vChild._recomputePercentY();
+ var vUpdateStretch = vChild._recomputeStretchingY();
+
+ // priority to childs internal alignment
+ if ((vChild.getVerticalAlign() || this.getWidget().getVerticalChildrenAlign()) == "middle") {
+ vChild.addToLayoutChanges("locationY");
+ }
+
+ // inform the caller if there were any notable changes occured
+ return vUpdatePercent || vUpdateStretch;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Invalidate and recompute things because of job in queue (before the rest of job handling will be executed).
+*/
+qx.Proto.updateSelfOnJobQueueFlush = function(vJobQueue)
+{
+ if (vJobQueue.addChild || vJobQueue.removeChild) {
+ this.getWidget()._invalidateAccumulatedChildrenOuterWidth();
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Updates children on special jobs
+*/
+qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue)
+{
+ var vStretchX=false, vStretchY=false;
+ var vWidget = this.getWidget();
+
+ // switching the orientation need updates for stretching on both axis
+ if (vQueue.orientation) {
+ vStretchX = vStretchY = true;
+ }
+
+ // different updates depending from the current orientation (or the new one)
+ if (vQueue.spacing || vQueue.orientation || vQueue.reverseChildrenOrder || vQueue.horizontalChildrenAlign) {
+ vWidget._addChildrenToLayoutQueue("locationX");
+ }
+
+ if (vQueue.verticalChildrenAlign) {
+ vWidget._addChildrenToLayoutQueue("locationY");
+ }
+
+ if (vQueue.stretchChildrenOrthogonalAxis) {
+ vStretchY = true;
+ }
+
+ // if stretching should be reworked reset the previous one and add
+ // a layout job to update the width respectively height.
+ if (vStretchX)
+ {
+ vWidget._recomputeChildrenStretchingX();
+ vWidget._addChildrenToLayoutQueue("width");
+ }
+
+ if (vStretchY)
+ {
+ vWidget._recomputeChildrenStretchingY();
+ vWidget._addChildrenToLayoutQueue("height");
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method combines calls of methods which should be done if a widget should be removed from the current layout.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex)
+{
+ var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i=-1;
+
+ // Fix index to be at the first flex child
+ if (this.getEnableFlexSupport())
+ {
+ for (i=0; i<chl; i++)
+ {
+ chc = ch[i];
+ if (chc.getHasFlexX())
+ {
+ vIndex = Math.min(vIndex, i);
+ break;
+ }
+ }
+
+ i=-1;
+ }
+
+ // Handle differently depending on layout mode
+ switch(w.getLayoutMode())
+ {
+ case "right":
+ case "left-reversed":
+ while((chc=ch[++i]) && i<vIndex) {
+ chc.addToLayoutChanges("locationX");
+ }
+
+ break;
+
+ case "center":
+ case "center-reversed":
+ while(chc=ch[++i]) {
+ chc.addToLayoutChanges("locationX");
+ }
+
+ break;
+
+ default:
+ i+=vIndex;
+ while(chc=ch[++i]) {
+ chc.addToLayoutChanges("locationX");
+ }
+ }
+}
+
+/*!
+ This method combines calls of methods which should be done if a child should be moved
+ inside the same parent to a new positions.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex)
+{
+ var vChildren = this.getWidget().getVisibleChildren();
+
+ var vStart = Math.min(vIndex, vOldIndex);
+ var vStop = Math.max(vIndex, vOldIndex)+1;
+
+ for (var i=vStart; i<vStop; i++) {
+ vChildren[i].addToLayoutChanges("locationX");
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method have full control of the order in which the
+ registered (or also non-registered) children should be
+ layouted on the horizontal axis.
+*/
+qx.Proto.flushChildrenQueue = function(vChildrenQueue)
+{
+ var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i;
+
+ // This block is needed for flex handling and
+ // will inform flex children if there was any
+ // change to the other content
+ if (this.getEnableFlexSupport())
+ {
+ this.invalidateChildrenFlexWidth();
+
+ for (i=0; i<chl; i++)
+ {
+ chc = ch[i];
+ if (chc.getHasFlexX())
+ {
+ chc._computedWidthValue = null;
+
+ if (chc._recomputeBoxWidth())
+ {
+ chc._recomputeOuterWidth();
+ chc._recomputeInnerWidth();
+ }
+
+ vChildrenQueue[chc.toHashCode()] = chc;
+ chc._layoutChanges.width = true;
+ }
+ }
+ }
+
+ switch(w.getLayoutMode())
+ {
+ case "right":
+ case "left-reversed":
+ // find the last child which has a layout request
+ for (var i=chl-1; i>=0 && !vChildrenQueue[ch[i].toHashCode()]; i--) {}
+
+ // layout all children before this last child
+ for (var j=0; j<=i; j++) {
+ w._layoutChild(chc=ch[j]);
+ }
+
+ break;
+
+ case "center":
+ case "center-reversed":
+ // re-layout all children
+ i = -1;
+ while(chc=ch[++i]) {
+ w._layoutChild(chc);
+ }
+
+ break;
+
+ default:
+ // layout all childs from the first child
+ // with an own layout request to the end
+ i = -1;
+ var changed=false;
+ while(chc=ch[++i])
+ {
+ if (changed || vChildrenQueue[chc.toHashCode()])
+ {
+ w._layoutChild(chc);
+ changed = true;
+ }
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This is called from qx.ui.core.Widget and it's task is to apply the layout
+ (excluding border and padding) to the child.
+*/
+qx.Proto.layoutChild = function(vChild, vJobs)
+{
+ this.layoutChild_sizeX(vChild, vJobs);
+ this.layoutChild_sizeY(vChild, vJobs);
+
+ this.layoutChild_sizeLimitX(vChild, vJobs);
+ this.layoutChild_sizeLimitY(vChild, vJobs);
+
+ this.layoutChild_locationX(vChild, vJobs);
+ this.layoutChild_locationY(vChild, vJobs);
+
+ this.layoutChild_marginX(vChild, vJobs);
+ this.layoutChild_marginY(vChild, vJobs);
+}
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera() || qx.sys.Client.getInstance().isWebkit() )
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth)
+ {
+ if (vChild._isWidthEssential() && (!vChild._computedWidthTypeNull || !vChild._computedMinWidthTypeNull || !vChild._computedMaxWidthTypeNull))
+ {
+ vChild._applyRuntimeWidth(vChild.getBoxWidth());
+ }
+ else
+ {
+ vChild._resetRuntimeWidth();
+ }
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight)
+ {
+ if ((vChild._isHeightEssential() && (!vChild._computedHeightTypeNull || !vChild._computedMinHeightTypeNull || !vChild._computedMaxHeightTypeNull)) || (vChild.getAllowStretchY() && this.getWidget().getStretchChildrenOrthogonalAxis()))
+ {
+ vChild._applyRuntimeHeight(vChild.getBoxHeight());
+ }
+ else
+ {
+ vChild._resetRuntimeHeight();
+ }
+ }
+ }
+}
+else
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width)
+ {
+ if (vChild._isWidthEssential() && !vChild._computedWidthTypeNull)
+ {
+ vChild._applyRuntimeWidth(vChild.getWidthValue());
+ }
+ else
+ {
+ vChild._resetRuntimeWidth();
+ }
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height)
+ {
+ if (vChild._isHeightEssential() && !vChild._computedHeightTypeNull)
+ {
+ vChild._applyRuntimeHeight(vChild.getHeightValue());
+ }
+ else
+ {
+ vChild._resetRuntimeHeight();
+ }
+ }
+ }
+}
+
+qx.Proto.layoutChild_locationX = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ // handle first child
+ if (vWidget.getFirstVisibleChild() == vChild)
+ {
+ switch(vWidget.getLayoutMode())
+ {
+ case "right":
+ case "left-reversed":
+ var vPos = vWidget.getPaddingRight() + vWidget.getAccumulatedChildrenOuterWidth() - vChild.getOuterWidth();
+ break;
+
+ case "center":
+ case "center-reversed":
+ var vPos = vWidget.getPaddingLeft() + Math.round((vWidget.getInnerWidth() - vWidget.getAccumulatedChildrenOuterWidth()) / 2);
+ break;
+
+ default:
+ var vPos = vWidget.getPaddingLeft();
+ }
+ }
+
+ // handle any following child
+ else
+ {
+ var vPrev = vChild.getPreviousVisibleSibling();
+
+ switch(vWidget.getLayoutMode())
+ {
+ case "right":
+ case "left-reversed":
+ var vPos = vPrev._cachedLocationHorizontal - vChild.getOuterWidth() - vWidget.getSpacing();
+ break;
+
+ default:
+ var vPos = vPrev._cachedLocationHorizontal + vPrev.getOuterWidth() + vWidget.getSpacing();
+ }
+ }
+
+ // store for next sibling
+ vChild._cachedLocationHorizontal = vPos;
+
+ // apply styles
+ switch(vWidget.getLayoutMode())
+ {
+ case "right":
+ case "right-reversed":
+ case "center-reversed":
+ // add relative positions (like 'position:relative' in css)
+ vPos += !vChild._computedRightTypeNull ? vChild.getRightValue() : !vChild._computedLeftTypeNull ? -(vChild.getLeftValue()) : 0;
+
+ vChild._resetRuntimeLeft();
+ vChild._applyRuntimeRight(vPos);
+ break;
+
+ default:
+ // add relative positions (like 'position:relative' in css)
+ vPos += !vChild._computedLeftTypeNull ? vChild.getLeftValue() : !vChild._computedRightTypeNull ? -(vChild.getRightValue()) : 0;
+
+ vChild._resetRuntimeRight();
+ vChild._applyRuntimeLeft(vPos);
+ }
+}
+
+qx.Proto.layoutChild_locationY = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ // special stretching support
+ if (qx.sys.Client.getInstance().isGecko() && vChild.getAllowStretchY() && vWidget.getStretchChildrenOrthogonalAxis() && vChild._computedHeightTypeNull)
+ {
+ vChild._applyRuntimeTop(vWidget.getPaddingTop() || 0);
+ vChild._applyRuntimeBottom(vWidget.getPaddingBottom() || 0);
+
+ return;
+ }
+
+ // priority to childs internal alignment
+ var vAlign = vChild.getVerticalAlign() || vWidget.getVerticalChildrenAlign();
+
+ // handle middle alignment
+ var vPos = vAlign == "middle" ? Math.round((vWidget.getInnerHeight() - vChild.getOuterHeight()) / 2) : 0;
+
+ // the bottom alignment use the real 'bottom' styleproperty to
+ // use the best available method in modern browsers
+ if (vAlign == "bottom")
+ {
+ // add parent padding
+ vPos += vWidget.getPaddingBottom();
+
+ // relative positions (like 'position:relative' in css)
+ if (!vChild._computedBottomTypeNull) {
+ vPos += vChild.getBottomValue();
+ }
+ else if (!vChild._computedTopTypeNull) {
+ vPos -= vChild.getTopValue();
+ }
+
+ // apply styles
+ vChild._resetRuntimeTop();
+ vChild._applyRuntimeBottom(vPos);
+ }
+ else
+ {
+ // add parent padding
+ vPos += vWidget.getPaddingTop();
+
+ // relative positions (like 'position:relative' in css)
+ if (!vChild._computedTopTypeNull) {
+ vPos += vChild.getTopValue();
+ }
+ else if (!vChild._computedBottomTypeNull) {
+ vPos -= vChild.getBottomValue();
+ }
+
+ // apply styles
+ vChild._resetRuntimeBottom();
+ vChild._applyRuntimeTop(vPos);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js
new file mode 100644
index 0000000000..5855d7d420
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/LayoutImpl.js
@@ -0,0 +1,442 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(ui_layout)
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.LayoutImpl", qx.core.Object,
+function(vWidget)
+{
+ qx.core.Object.call(this);
+
+ this._widget = vWidget;
+});
+
+
+
+
+/*!
+ Returns the associated widget
+*/
+qx.Proto.getWidget = function() {
+ return this._widget;
+}
+
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+*/
+
+
+/*
+---------------------------------------------------------------------------
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the box width of the given child
+*/
+qx.Proto.computeChildBoxWidth = function(vChild) {
+ return vChild.getWidthValue() || vChild._computeBoxWidthFallback();
+}
+
+/*!
+ Compute and return the box height of the given child
+*/
+qx.Proto.computeChildBoxHeight = function(vChild) {
+ return vChild.getHeightValue() || vChild._computeBoxHeightFallback();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the needed width of the given child
+*/
+qx.Proto.computeChildNeededWidth = function(vChild)
+{
+ // omit ultra long lines, these two variables only needed once
+ // here, but this enhance the readability of the code :)
+ var vMinBox = vChild._computedMinWidthTypePercent ? null : vChild.getMinWidthValue();
+ var vMaxBox = vChild._computedMaxWidthTypePercent ? null : vChild.getMaxWidthValue();
+
+ var vBox = (vChild._computedWidthTypePercent || vChild._computedWidthTypeFlex ? null : vChild.getWidthValue()) || vChild.getPreferredBoxWidth() || 0;
+
+ return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vChild.getMarginLeft() + vChild.getMarginRight();
+}
+
+/*!
+ Compute and return the needed height of the given child
+*/
+qx.Proto.computeChildNeededHeight = function(vChild)
+{
+ // omit ultra long lines, these two variables only needed once
+ // here, but this enhance the readability of the code :)
+ var vMinBox = vChild._computedMinHeightTypePercent ? null : vChild.getMinHeightValue();
+ var vMaxBox = vChild._computedMaxHeightTypePercent ? null : vChild.getMaxHeightValue();
+
+ var vBox = (vChild._computedHeightTypePercent || vChild._computedHeightTypeFlex ? null : vChild.getHeightValue()) || vChild.getPreferredBoxHeight() || 0;
+
+ return qx.lang.Number.limit(vBox, vMinBox, vMaxBox) + vChild.getMarginTop() + vChild.getMarginBottom();
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Calculate the maximum needed width of all children
+*/
+qx.Proto.computeChildrenNeededWidth_max = function()
+{
+ for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, maxv=0; i<chl; i++) {
+ maxv = Math.max(maxv, ch[i].getNeededWidth());
+ }
+
+ return maxv;
+}
+
+/*!
+ Calculate the maximum needed height of all children
+*/
+qx.Proto.computeChildrenNeededHeight_max = function()
+{
+ for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, maxv=0; i<chl; i++) {
+ maxv = Math.max(maxv, ch[i].getNeededHeight());
+ }
+
+ return maxv;
+}
+
+qx.Proto.computeChildrenNeededWidth_sum = function()
+{
+ for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, sumv=0; i<chl; i++) {
+ sumv += ch[i].getNeededWidth();
+ }
+
+ return sumv;
+}
+
+qx.Proto.computeChildrenNeededHeight_sum = function()
+{
+ for (var i=0, ch=this.getWidget().getVisibleChildren(), chl=ch.length, sumv=0; i<chl; i++) {
+ sumv += ch[i].getNeededHeight();
+ }
+
+ return sumv;
+}
+
+/*!
+ Compute and return the width needed by all children of this widget
+*/
+qx.Proto.computeChildrenNeededWidth = qx.Proto.computeChildrenNeededWidth_max;
+
+/*!
+ Compute and return the height needed by all children of this widget
+*/
+qx.Proto.computeChildrenNeededHeight = qx.Proto.computeChildrenNeededHeight_max;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Things to do and layout when any of the childs changes its outer width.
+ Needed by layouts where the children depend on each other, like flow or box layouts.
+*/
+qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild) {}
+
+/*!
+ Things to do and layout when any of the childs changes its outer height.
+ Needed by layouts where the children depend on each other, like flow or box layouts.
+*/
+qx.Proto.updateSelfOnChildOuterHeightChange = function(vChild) {}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the layout widget has changed.
+ Normally this includes updates to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild) {}
+
+/*!
+ Actions that should be done if the inner height of the layout widget has changed.
+ Normally this includes updates to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild) {}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Invalidate and recompute cached data according to job queue.
+ This is executed at the beginning of the job queue handling.
+*/
+qx.Proto.updateSelfOnJobQueueFlush = function(vJobQueue) {}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Updates children on job queue flush.
+ This is executed at the end of the job queue handling.
+*/
+qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue) {}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Add child to current layout. Rarely needed by some layout implementations.
+*/
+qx.Proto.updateChildrenOnAddChild = function(vChild, vIndex) {}
+
+/*!
+ Remove child from current layout.
+ Needed by layouts where the children depend on each other, like flow or box layouts.
+*/
+qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex) {}
+
+/*!
+ Move child within its parent to a new position.
+ Needed by layouts where the children depend on each other, like flow or box layouts.
+*/
+qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex) {}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Has full control of the order in which the registered
+ (or non-registered) children should be layouted.
+*/
+qx.Proto.flushChildrenQueue = function(vChildrenQueue)
+{
+ var vWidget = this.getWidget();
+
+ for (var vHashCode in vChildrenQueue) {
+ vWidget._layoutChild(vChildrenQueue[vHashCode]);
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Called from qx.ui.core.Widget. Its task is to apply the layout
+ (excluding border and padding) to the child.
+*/
+qx.Proto.layoutChild = function(vChild, vJobs) {}
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.layoutChild_sizeLimitX = qx.util.Return.returnTrue;
+ qx.Proto.layoutChild_sizeLimitY = qx.util.Return.returnTrue;
+}
+else
+{
+ /*!
+ Apply min-/max-width/height to the child. Direct usage of stylesheet properties.
+ This is only possible in modern capable clients (i.e. excluding all current
+ versions of Internet Explorer)
+ */
+ qx.Proto.layoutChild_sizeLimitX = function(vChild, vJobs)
+ {
+ if (vJobs.minWidth) {
+ vChild._computedMinWidthTypeNull ? vChild._resetRuntimeMinWidth() : vChild._applyRuntimeMinWidth(vChild.getMinWidthValue());
+ }
+ else if (vJobs.initial && !vChild._computedMinWidthTypeNull) {
+ vChild._applyRuntimeMinWidth(vChild.getMinWidthValue());
+ }
+
+ if (vJobs.maxWidth) {
+ vChild._computedMaxWidthTypeNull ? vChild._resetRuntimeMaxWidth() : vChild._applyRuntimeMaxWidth(vChild.getMaxWidthValue());
+ }
+ else if (vJobs.initial && !vChild._computedMaxWidthTypeNull) {
+ vChild._applyRuntimeMaxWidth(vChild.getMaxWidthValue());
+ }
+ }
+
+ qx.Proto.layoutChild_sizeLimitY = function(vChild, vJobs)
+ {
+ if (vJobs.minHeight) {
+ vChild._computedMinHeightTypeNull ? vChild._resetRuntimeMinHeight() : vChild._applyRuntimeMinHeight(vChild.getMinHeightValue());
+ }
+ else if (vJobs.initial && !vChild._computedMinHeightTypeNull) {
+ vChild._applyRuntimeMinHeight(vChild.getMinHeightValue());
+ }
+
+ if (vJobs.maxHeight) {
+ vChild._computedMaxHeightTypeNull ? vChild._resetRuntimeMaxHeight() : vChild._applyRuntimeMaxHeight(vChild.getMaxHeightValue());
+ }
+ else if (vJobs.initial && !vChild._computedMaxHeightTypeNull) {
+ vChild._applyRuntimeMaxHeight(vChild.getMaxHeightValue());
+ }
+ }
+}
+
+/*!
+ Apply the margin values as pure stylesheet equivalent.
+*/
+qx.Proto.layoutChild_marginX = function(vChild, vJobs)
+{
+ if (vJobs.marginLeft || vJobs.initial)
+ {
+ var vValueLeft = vChild.getMarginLeft();
+ vValueLeft != null ? vChild._applyRuntimeMarginLeft(vValueLeft) : vChild._resetRuntimeMarginLeft();
+ }
+
+ if (vJobs.marginRight || vJobs.initial)
+ {
+ var vValueRight = vChild.getMarginRight();
+ vValueRight != null ? vChild._applyRuntimeMarginRight(vValueRight) : vChild._resetRuntimeMarginRight();
+ }
+}
+
+qx.Proto.layoutChild_marginY = function(vChild, vJobs)
+{
+ if (vJobs.marginTop || vJobs.initial)
+ {
+ var vValueTop = vChild.getMarginTop();
+ vValueTop != null ? vChild._applyRuntimeMarginTop(vValueTop) : vChild._resetRuntimeMarginTop();
+ }
+
+ if (vJobs.marginBottom || vJobs.initial)
+ {
+ var vValueBottom = vChild.getMarginBottom();
+ vValueBottom != null ? vChild._applyRuntimeMarginBottom(vValueBottom) : vChild._resetRuntimeMarginBottom();
+ }
+}
+
+qx.Proto.layoutChild_sizeX_essentialWrapper = function(vChild, vJobs) {
+ return vChild._isWidthEssential() ? this.layoutChild_sizeX(vChild, vJobs) : vChild._resetRuntimeWidth();
+}
+
+qx.Proto.layoutChild_sizeY_essentialWrapper = function(vChild, vJobs) {
+ return vChild._isHeightEssential() ? this.layoutChild_sizeY(vChild, vJobs) : vChild._resetRuntimeHeight();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [11] DISPOSER
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Dispose the layout implmentation and release the associated widget.
+*/
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this._widget = null;
+
+ qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js
new file mode 100644
index 0000000000..c62b60e18e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuButtonLayoutImpl.js
@@ -0,0 +1,183 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.MenuButtonLayoutImpl", qx.renderer.layout.HorizontalBoxLayoutImpl,
+function(vWidget)
+{
+ qx.renderer.layout.HorizontalBoxLayoutImpl.call(this, vWidget);
+
+ // We don't need flex support, should make things a bit faster,
+ // as this omits some additional loops in qx.renderer.layout.HorizontalBoxLayoutImpl.
+ this.setEnableFlexSupport(false);
+});
+
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+
+ Inherits from qx.renderer.layout.HorizontalBoxLayoutImpl:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [11] DISPOSER
+*/
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the width needed by all children of this widget
+*/
+qx.Proto.computeChildrenNeededWidth = function()
+{
+ // Caching the widget reference
+ var vWidget = this.getWidget();
+
+ // Ignore the verticalBoxLayout inside qx.ui.menu.Menu
+ var vMenu = vWidget.getParent().getParent();
+
+ // Let the menu do the real hard things
+ return vMenu.getMenuButtonNeededWidth();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Things to do and layout when any of the childs changes its outer width.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateSelfOnChildOuterWidthChange = function(vChild)
+{
+ // Caching the widget reference
+ var vWidget = this.getWidget();
+
+ // Ignore the verticalBoxLayout inside qx.ui.menu.Menu
+ var vMenu = vWidget.getParent().getParent();
+
+ // Send out invalidate signals
+ switch(vChild)
+ {
+ case vWidget._iconObject:
+ vMenu._invalidateMaxIconWidth();
+ break;
+
+ case vWidget._labelObject:
+ vMenu._invalidateMaxLabelWidth();
+ break;
+
+ case vWidget._shortcutObject:
+ vMenu._invalidateMaxShortcutWidth();
+ break;
+
+ case vWidget._arrowObject:
+ vMenu._invalidateMaxArrowWidth();
+ break;
+ }
+
+ // Call superclass implementation
+ return qx.renderer.layout.HorizontalBoxLayoutImpl.prototype.updateSelfOnChildOuterWidthChange.call(this, vChild);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.layoutChild_locationX = function(vChild, vJobs)
+{
+ // Caching the widget reference
+ var vWidget = this.getWidget();
+
+ // Ignore the verticalBoxLayout inside qx.ui.menu.Menu
+ var vMenu = vWidget.getParent().getParent();
+
+ // Left position of the child
+ var vPos = null;
+
+ // Ask the menu instance for the correct location
+ switch(vChild)
+ {
+ case vWidget._iconObject:
+ vPos = vMenu.getIconPosition();
+ break;
+
+ case vWidget._labelObject:
+ vPos = vMenu.getLabelPosition();
+ break;
+
+ case vWidget._shortcutObject:
+ vPos = vMenu.getShortcutPosition();
+ break;
+
+ case vWidget._arrowObject:
+ vPos = vMenu.getArrowPosition();
+ break;
+ }
+
+ if (vPos != null)
+ {
+ vPos += vWidget.getPaddingLeft();
+ vChild._applyRuntimeLeft(vPos);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js
new file mode 100644
index 0000000000..abb747cc81
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/MenuLayoutImpl.js
@@ -0,0 +1,100 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.MenuLayoutImpl", qx.renderer.layout.VerticalBoxLayoutImpl,
+function(vWidget)
+{
+ qx.renderer.layout.VerticalBoxLayoutImpl.call(this, vWidget);
+
+ // We don't need flex support, should make things a bit faster,
+ // as this omits some additional loops in qx.renderer.layout.HorizontalBoxLayoutImpl.
+ this.setEnableFlexSupport(false);
+});
+
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+
+ Inherits from qx.renderer.layout.VerticalBoxLayoutImpl:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+*/
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Updates children on special jobs
+*/
+qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue)
+{
+ var vWidget = this.getWidget();
+ var ch, chc;
+
+ if (vQueue.preferredInnerWidth)
+ {
+ var ch = vWidget.getChildren(), chl = ch.length, chc;
+ var sch, schl;
+
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+ sch = chc.getChildren();
+ schl = sch.length;
+
+ for (var j=0; j<schl; j++) {
+ sch[j].addToLayoutChanges("locationX");
+ }
+ }
+ }
+
+ // Call superclass implementation
+ return qx.renderer.layout.VerticalBoxLayoutImpl.prototype.updateChildrenOnJobQueueFlush.call(this, vQueue);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js
new file mode 100644
index 0000000000..deaac7f9d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/layout/VerticalBoxLayoutImpl.js
@@ -0,0 +1,866 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.layout.VerticalBoxLayoutImpl", qx.renderer.layout.LayoutImpl,
+function(vWidget) {
+ qx.renderer.layout.LayoutImpl.call(this, vWidget);
+});
+
+qx.OO.addProperty({ name : "enableFlexSupport", type : "boolean", defaultValue : true });
+
+
+
+/*!
+ Global Structure:
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+ [10] LAYOUT CHILD
+ [11] DISPOSER
+
+
+ Inherits from qx.renderer.layout.LayoutImpl:
+ [02] COMPUTE NEEDED DIMENSIONS FOR AN INDIVIDUAL CHILD
+ [11] DISPOSER
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ [01] COMPUTE BOX DIMENSIONS FOR AN INDIVIDUAL CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the box width of the given child.
+*/
+qx.Proto.computeChildBoxWidth = function(vChild)
+{
+ if (this.getWidget().getStretchChildrenOrthogonalAxis() && vChild._computedWidthTypeNull && vChild.getAllowStretchX()) {
+ return this.getWidget().getInnerWidth();
+ }
+
+ return vChild.getWidthValue() || vChild._computeBoxWidthFallback();
+}
+
+/*!
+ Compute and return the box height of the given child.
+*/
+qx.Proto.computeChildBoxHeight = function(vChild) {
+ return vChild.getHeightValue() || vChild._computeBoxHeightFallback();
+}
+
+/*!
+ Computes the height of all flexible children.
+*/
+qx.Proto.computeChildrenFlexHeight = function()
+{
+ if (this._childrenFlexHeightComputed || !this.getEnableFlexSupport()) {
+ return;
+ }
+
+ this._childrenFlexHeightComputed = true;
+
+ // this.debug("computeChildrenFlexHeight");
+
+ var vWidget = this.getWidget();
+ var vChildren = vWidget.getVisibleChildren();
+ var vChildrenLength = vChildren.length;
+ var vCurrentChild;
+ var vFlexibleChildren = [];
+ var vAvailHeight = vWidget.getInnerHeight();
+ var vUsedHeight = vWidget.getSpacing() * (vChildrenLength-1);
+ var vIterator;
+
+
+ // *************************************************************
+ // 1. Compute the sum of all static sized children and finding
+ // all flexible children.
+ // *************************************************************
+ for (vIterator=0; vIterator<vChildrenLength; vIterator++)
+ {
+ vCurrentChild = vChildren[vIterator];
+
+ if (vCurrentChild._computedHeightTypeFlex)
+ {
+ vFlexibleChildren.push(vCurrentChild);
+
+ if (vWidget._computedHeightTypeAuto) {
+ vUsedHeight += vCurrentChild.getPreferredBoxHeight();
+ }
+ }
+ else
+ {
+ vUsedHeight += vCurrentChild.getOuterHeight();
+ }
+ }
+
+ // this.debug("Height: " + vUsedHeight + "/" + vAvailHeight);
+ // this.debug("Flexible Count: " + vFlexibleChildren.length);
+
+
+ // *************************************************************
+ // 2. Compute the sum of all flexible children heights
+ // *************************************************************
+ var vRemainingHeight = vAvailHeight - vUsedHeight;
+ var vFlexibleChildrenLength = vFlexibleChildren.length;
+ var vPrioritySum = 0;
+
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++) {
+ vPrioritySum += vFlexibleChildren[vIterator]._computedHeightParsed;
+ }
+
+
+ // *************************************************************
+ // 3. Calculating the size of each 'part'.
+ // *************************************************************
+ var vPartHeight = vRemainingHeight / vPrioritySum;
+
+
+ if (!vWidget.getUseAdvancedFlexAllocation())
+ {
+ // *************************************************************
+ // 4a. Computing the flex height value of each flexible child
+ // and add the height to the usedHeight, so that we can
+ // fix rounding problems later.
+ // *************************************************************
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightParsed * vPartHeight);
+ vUsedHeight += vCurrentChild._computedHeightFlexValue;
+ }
+ }
+ else
+ {
+ // *************************************************************
+ // 4b. Calculating the diff. Which means respect the min/max
+ // height configuration in flex and store the higher/lower
+ // data in a diff.
+ // *************************************************************
+
+ var vAllocationDiff = 0;
+ var vMinAllocationLoops, vFlexibleChildrenLength, vAdjust, vCurrentAllocationSum, vFactorSum, vComputedFlexibleHeight;
+
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ vComputedFlexibleHeight = vCurrentChild._computedHeightFlexValue = vCurrentChild._computedHeightParsed * vPartHeight;
+ vAllocationDiff += vComputedFlexibleHeight - qx.lang.Number.limit(vComputedFlexibleHeight, vCurrentChild.getMinHeightValue(), vCurrentChild.getMaxHeightValue());
+ }
+
+ // Rounding diff
+ vAllocationDiff = Math.round(vAllocationDiff);
+
+ if (vAllocationDiff == 0)
+ {
+ // *************************************************************
+ // 5a. If the diff is equal zero we must not do anything more
+ // and do nearly identical the same like in 4a. which means
+ // to round the calculated flex value and add it to the
+ // used height so we can fix rounding problems later.
+ // *************************************************************
+
+ // Rounding values and fixing rounding errors
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue);
+ vUsedHeight += vCurrentChild._computedHeightFlexValue;
+ }
+ }
+ else
+ {
+ // *************************************************************
+ // 5b. Find maximum loops of each adjustable child to adjust
+ // the height until the min/max height limits are reached.
+ // *************************************************************
+
+ var vUp = vAllocationDiff > 0;
+ for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+
+ if (vUp)
+ {
+ vAdjust = (vCurrentChild.getMaxHeightValue() || Infinity) - vCurrentChild._computedHeightFlexValue;
+
+ if (vAdjust > 0)
+ {
+ vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedHeightParsed);
+ }
+ else
+ {
+ qx.lang.Array.removeAt(vFlexibleChildren, vIterator);
+
+ vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue);
+ vUsedHeight += Math.round(vCurrentChild._computedHeightFlexValue + vAdjust);
+ }
+ }
+ else
+ {
+ vAdjust = qx.util.Validation.isValidNumber(vCurrentChild.getMinHeightValue()) ? vCurrentChild._computedHeightFlexValue - vCurrentChild.getMinHeightValue() : vCurrentChild._computedHeightFlexValue;
+
+ if (vAdjust > 0)
+ {
+ vCurrentChild._allocationLoops = Math.floor(vAdjust / vCurrentChild._computedHeightParsed);
+ }
+ else
+ {
+ qx.lang.Array.removeAt(vFlexibleChildren, vIterator);
+
+ vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue);
+ vUsedHeight += Math.round(vCurrentChild._computedHeightFlexValue - vAdjust);
+ }
+ }
+ }
+
+ // *************************************************************
+ // 6. Try to reallocate the height between flexible children
+ // so that the requirements through min/max limits
+ // are satisfied.
+ // *************************************************************
+ while (vAllocationDiff != 0 && vFlexibleChildrenLength > 0)
+ {
+ vFlexibleChildrenLength = vFlexibleChildren.length;
+ vMinAllocationLoops = Infinity;
+ vFactorSum = 0;
+
+ // Find minimal loop amount
+ for (vIterator=0; vIterator<vFlexibleChildrenLength; vIterator++)
+ {
+ vMinAllocationLoops = Math.min(vMinAllocationLoops, vFlexibleChildren[vIterator]._allocationLoops);
+ vFactorSum += vFlexibleChildren[vIterator]._computedHeightParsed;
+ }
+
+ // Be sure that the adjustment is not bigger/smaller than diff
+ vCurrentAllocationSum = Math.min(vFactorSum * vMinAllocationLoops, vAllocationDiff);
+
+ // this.debug("Diff: " + vAllocationDiff);
+ // this.debug("Min Loops: " + vMinAllocationLoops);
+ // this.debug("Sum: " + vCurrentAllocationSum);
+ // this.debug("Factor: " + vFactorSum);
+
+ // Reducing diff by current sum
+ vAllocationDiff -= vCurrentAllocationSum;
+
+ // Adding sizes to children to adjust
+ for (vIterator=vFlexibleChildrenLength-1; vIterator>=0; vIterator--)
+ {
+ vCurrentChild = vFlexibleChildren[vIterator];
+ vCurrentChild._computedHeightFlexValue += vCurrentAllocationSum / vFactorSum * vCurrentChild._computedHeightParsed;
+
+ if (vCurrentChild._allocationLoops == vMinAllocationLoops)
+ {
+ vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue);
+
+ vUsedHeight += vCurrentChild._computedHeightFlexValue;
+ delete vCurrentChild._allocationLoops;
+ qx.lang.Array.removeAt(vFlexibleChildren, vIterator);
+ }
+ else
+ {
+ if (vAllocationDiff == 0)
+ {
+ vCurrentChild._computedHeightFlexValue = Math.round(vCurrentChild._computedHeightFlexValue);
+ vUsedHeight += vCurrentChild._computedHeightFlexValue;
+ delete vCurrentChild._allocationLoops;
+ }
+ else
+ {
+ vCurrentChild._allocationLoops -= vMinAllocationLoops;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // *************************************************************
+ // 7. Fix rounding errors
+ // *************************************************************
+ vCurrentChild._computedHeightFlexValue += vAvailHeight - vUsedHeight;
+}
+
+qx.Proto.invalidateChildrenFlexHeight = function() {
+ delete this._childrenFlexHeightComputed;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [03] COMPUTE NEEDED DIMENSIONS FOR ALL CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Compute and return the height needed by all children of this widget
+*/
+qx.Proto.computeChildrenNeededHeight = function()
+{
+ var w = this.getWidget();
+ return qx.renderer.layout.LayoutImpl.prototype.computeChildrenNeededHeight_sum.call(this) + ((w.getVisibleChildrenLength()-1) * w.getSpacing());
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [04] UPDATE LAYOUT WHEN A CHILD CHANGES ITS OUTER DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Things to do and layout when any of the childs changes its outer height.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateSelfOnChildOuterHeightChange = function(vChild)
+{
+ // if a childrens outer height changes we need to update our accumulated
+ // height of all childrens (used for middle or bottom alignments)
+ this.getWidget()._invalidateAccumulatedChildrenOuterHeight();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [05] UPDATE CHILD ON INNER DIMENSION CHANGES OF LAYOUT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Actions that should be done if the inner width of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerWidthChange = function(vChild)
+{
+ // use variables here to be sure to call both methods.
+ var vUpdatePercent = vChild._recomputePercentX();
+ var vUpdateStretch = vChild._recomputeStretchingX();
+
+ // priority to childs internal alignment
+ if ((vChild.getHorizontalAlign() || this.getWidget().getHorizontalChildrenAlign()) == "center") {
+ vChild.addToLayoutChanges("locationX");
+ }
+
+ // inform the caller if there were any notable changes occured
+ return vUpdatePercent || vUpdateStretch;
+}
+
+/*!
+ Actions that should be done if the inner height of the widget was changed.
+ Normally this includes update to percent values and ranges.
+*/
+qx.Proto.updateChildOnInnerHeightChange = function(vChild)
+{
+ if (this.getWidget().getVerticalChildrenAlign() == "middle") {
+ vChild.addToLayoutChanges("locationY");
+ }
+
+ // use variables here to be sure to call both methods.
+ var vUpdatePercent = vChild._recomputePercentY();
+ var vUpdateFlex = vChild._recomputeFlexY();
+
+ // inform the caller if there were any notable changes occured
+ return vUpdatePercent || vUpdateFlex;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [06] UPDATE LAYOUT ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Invalidate and recompute things because of job in queue (before the rest of job handling will be executed).
+*/
+qx.Proto.updateSelfOnJobQueueFlush = function(vJobQueue)
+{
+ if (vJobQueue.addChild || vJobQueue.removeChild) {
+ this.getWidget()._invalidateAccumulatedChildrenOuterHeight();
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [07] UPDATE CHILDREN ON JOB QUEUE FLUSH
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Updates children on special jobs
+*/
+qx.Proto.updateChildrenOnJobQueueFlush = function(vQueue)
+{
+ var vStretchX=false, vStretchY=false;
+ var vWidget = this.getWidget();
+
+ // switching the orientation need updates for stretching on both axis
+ if (vQueue.orientation) {
+ vStretchX = vStretchY = true;
+ }
+
+ // different updates depending from the current orientation (or the new one)
+ if (vQueue.spacing || vQueue.orientation || vQueue.reverseChildrenOrder || vQueue.verticalChildrenAlign) {
+ vWidget._addChildrenToLayoutQueue("locationY");
+ }
+
+ if (vQueue.horizontalChildrenAlign) {
+ vWidget._addChildrenToLayoutQueue("locationX");
+ }
+
+ if (vQueue.stretchChildrenOrthogonalAxis) {
+ vStretchX = true;
+ }
+
+ // if stretching should be reworked reset the previous one and add
+ // a layout job to update the width respectively height.
+ if (vStretchX)
+ {
+ vWidget._recomputeChildrenStretchingX();
+ vWidget._addChildrenToLayoutQueue("width");
+ }
+
+ if (vStretchY)
+ {
+ vWidget._recomputeChildrenStretchingY();
+ vWidget._addChildrenToLayoutQueue("height");
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [08] CHILDREN ADD/REMOVE/MOVE HANDLING
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method combines calls of methods which should be done if a widget should be removed from the current layout.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateChildrenOnRemoveChild = function(vChild, vIndex)
+{
+ var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i=-1;
+
+ // Fix index to be at the first flex child
+ if (this.getEnableFlexSupport())
+ {
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+ if (chc.getHasFlexY())
+ {
+ vIndex = Math.min(vIndex, i);
+ break;
+ }
+ }
+
+ i=-1;
+ }
+
+ // Handle differently depending on layout mode
+ switch(w.getLayoutMode())
+ {
+ case "bottom":
+ case "top-reversed":
+ while((chc=ch[++i]) && i<vIndex) {
+ chc.addToLayoutChanges("locationY");
+ }
+
+ break;
+
+ case "middle":
+ case "middle-reversed":
+ while(chc=ch[++i]) {
+ chc.addToLayoutChanges("locationY");
+ }
+
+ break;
+
+ default:
+ i+=vIndex;
+ while(chc=ch[++i]) {
+ chc.addToLayoutChanges("locationY");
+ }
+ }
+}
+
+/*!
+ This method combines calls of methods which should be done if a child should be moved
+ inside the same parent to a new positions.
+ Needed by layouts where the children depends on each-other, like flow- or box-layouts.
+*/
+qx.Proto.updateChildrenOnMoveChild = function(vChild, vIndex, vOldIndex)
+{
+ var vChildren = this.getWidget().getVisibleChildren();
+
+ var vStart = Math.min(vIndex, vOldIndex);
+ var vStop = Math.max(vIndex, vOldIndex)+1;
+
+ for (var i=vStart; i<vStop; i++) {
+ vChildren[i].addToLayoutChanges("locationY");
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [09] FLUSH LAYOUT QUEUES OF CHILDREN
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This method have full control of the order in which the
+ registered (or also non-registered) children should be
+ layouted on the horizontal axis.
+*/
+qx.Proto.flushChildrenQueue = function(vChildrenQueue)
+{
+ var w=this.getWidget(), ch=w.getVisibleChildren(), chl=ch.length, chc, i;
+
+ // This block is needed for flex handling and
+ // will inform flex children if there was any
+ // change to the other content
+ if (this.getEnableFlexSupport())
+ {
+ this.invalidateChildrenFlexHeight();
+
+ for (i=0; i<chl; i++)
+ {
+ chc = ch[i];
+ if (chc.getHasFlexY())
+ {
+ chc._computedHeightValue = null;
+
+ if (chc._recomputeBoxHeight())
+ {
+ chc._recomputeOuterHeight();
+ chc._recomputeInnerHeight();
+ }
+
+ vChildrenQueue[chc.toHashCode()] = chc;
+ chc._layoutChanges.height = true;
+ }
+ }
+ }
+
+ switch(w.getLayoutMode())
+ {
+ case "bottom":
+ case "top-reversed":
+ // find the last child which has a layout request
+ for (var i=chl-1; i>=0 && !vChildrenQueue[ch[i].toHashCode()]; i--) {}
+
+ // layout all children before this last child
+ for (var j=0; j<=i; j++) {
+ w._layoutChild(chc=ch[j]);
+ }
+
+ break;
+
+ case "middle":
+ case "middle-reversed":
+ // re-layout all children
+ i = -1;
+ while(chc=ch[++i]) {
+ w._layoutChild(chc);
+ }
+
+ break;
+
+ default:
+ // layout all childs from the first child
+ // with an own layout request to the end
+ i = -1;
+ var changed=false;
+ while(chc=ch[++i])
+ {
+ if (changed || vChildrenQueue[chc.toHashCode()])
+ {
+ w._layoutChild(chc);
+ changed = true;
+ }
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ [10] LAYOUT CHILD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This is called from qx.ui.core.Widget and it's task is to apply the layout
+ (excluding border and padding) to the child.
+*/
+qx.Proto.layoutChild = function(vChild, vJobs)
+{
+ this.layoutChild_sizeX(vChild, vJobs);
+ this.layoutChild_sizeY(vChild, vJobs);
+
+ this.layoutChild_sizeLimitX(vChild, vJobs);
+ this.layoutChild_sizeLimitY(vChild, vJobs);
+
+ this.layoutChild_locationX(vChild, vJobs);
+ this.layoutChild_locationY(vChild, vJobs);
+
+ this.layoutChild_marginX(vChild, vJobs);
+ this.layoutChild_marginY(vChild, vJobs);
+}
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera() || qx.sys.Client.getInstance().isWebkit())
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width || vJobs.minWidth || vJobs.maxWidth)
+ {
+ if ((vChild._isWidthEssential() && (!vChild._computedWidthTypeNull || !vChild._computedMinWidthTypeNull || !vChild._computedMaxWidthTypeNull)) || (vChild.getAllowStretchX() && this.getWidget().getStretchChildrenOrthogonalAxis()))
+ {
+ vChild._applyRuntimeWidth(vChild.getBoxWidth());
+ }
+ else
+ {
+ vChild._resetRuntimeWidth();
+ }
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height || vJobs.minHeight || vJobs.maxHeight)
+ {
+ if (vChild._isHeightEssential() && (!vChild._computedHeightTypeNull || !vChild._computedMinHeightTypeNull || !vChild._computedMaxHeightTypeNull))
+ {
+ vChild._applyRuntimeHeight(vChild.getBoxHeight());
+ }
+ else
+ {
+ vChild._resetRuntimeHeight();
+ }
+ }
+ }
+}
+else
+{
+ qx.Proto.layoutChild_sizeX = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.width)
+ {
+ if (vChild._isWidthEssential() && !vChild._computedWidthTypeNull)
+ {
+ vChild._applyRuntimeWidth(vChild.getWidthValue());
+ }
+ else
+ {
+ vChild._resetRuntimeWidth();
+ }
+ }
+ }
+
+ qx.Proto.layoutChild_sizeY = function(vChild, vJobs)
+ {
+ if (vJobs.initial || vJobs.height)
+ {
+ if (vChild._isHeightEssential() && !vChild._computedHeightTypeNull)
+ {
+ vChild._applyRuntimeHeight(vChild.getHeightValue());
+ }
+ else
+ {
+ vChild._resetRuntimeHeight();
+ }
+ }
+ }
+}
+
+qx.Proto.layoutChild_locationY = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ // handle first child
+ if (vWidget.getFirstVisibleChild() == vChild)
+ {
+ switch(vWidget.getLayoutMode())
+ {
+ case "bottom":
+ case "top-reversed":
+ var vPos = vWidget.getPaddingBottom() + vWidget.getAccumulatedChildrenOuterHeight() - vChild.getOuterHeight();
+ break;
+
+ case "middle":
+ case "middle-reversed":
+ var vPos = vWidget.getPaddingTop() + Math.round((vWidget.getInnerHeight() - vWidget.getAccumulatedChildrenOuterHeight()) / 2);
+ break;
+
+ default:
+ var vPos = vWidget.getPaddingTop();
+ }
+ }
+
+ // handle any following child
+ else
+ {
+ var vPrev = vChild.getPreviousVisibleSibling();
+
+ switch(vWidget.getLayoutMode())
+ {
+ case "bottom":
+ case "top-reversed":
+ var vPos = vPrev._cachedLocationVertical - vChild.getOuterHeight() - vWidget.getSpacing();
+ break;
+
+ default:
+ var vPos = vPrev._cachedLocationVertical + vPrev.getOuterHeight() + vWidget.getSpacing();
+ }
+ }
+
+ // store for next sibling
+ vChild._cachedLocationVertical = vPos;
+
+ // apply styles
+ switch(this.getWidget().getLayoutMode())
+ {
+ case "bottom":
+ case "bottom-reversed":
+ case "middle-reversed":
+ // add relative positions (like 'position:relative' in css)
+ vPos += !vChild._computedBottomTypeNull ? vChild.getBottomValue() : !vChild._computedTopTypeNull ? -(vChild.getTopValue()) : 0;
+
+ vChild._resetRuntimeTop();
+ vChild._applyRuntimeBottom(vPos);
+ break;
+
+ default:
+ // add relative positions (like 'position:relative' in css)
+ vPos += !vChild._computedTopTypeNull ? vChild.getTopValue() : !vChild._computedBottomTypeNull ? -(vChild.getBottomValue()) : 0;
+
+ vChild._resetRuntimeBottom();
+ vChild._applyRuntimeTop(vPos);
+ }
+}
+
+qx.Proto.layoutChild_locationX = function(vChild, vJobs)
+{
+ var vWidget = this.getWidget();
+
+ // special stretching support
+ if (qx.sys.Client.getInstance().isGecko() && vChild.getAllowStretchX() && vWidget.getStretchChildrenOrthogonalAxis() && vChild._computedWidthTypeNull)
+ {
+ vChild._applyRuntimeLeft(vWidget.getPaddingLeft() || 0);
+ vChild._applyRuntimeRight(vWidget.getPaddingRight() || 0);
+
+ return;
+ }
+
+ // priority to childs internal alignment
+ var vAlign = vChild.getHorizontalAlign() || vWidget.getHorizontalChildrenAlign();
+
+ // handle center alignment
+ var vPos = vAlign == "center" ? Math.round((vWidget.getInnerWidth() - vChild.getOuterWidth()) / 2) : 0;
+
+ // the right alignment use the real 'right' styleproperty to
+ // use the best available method in modern browsers
+ if (vAlign == "right")
+ {
+ // add parent padding
+ vPos += vWidget.getPaddingRight();
+
+ // relative positions (like 'position:relative' in css)
+ if (!vChild._computedRightTypeNull) {
+ vPos += vChild.getRightValue();
+ }
+ else if (!vChild._computedLeftTypeNull) {
+ vPos -= vChild.getLeftValue();
+ }
+
+ // apply styles
+ vChild._resetRuntimeLeft();
+ vChild._applyRuntimeRight(vPos);
+ }
+ else
+ {
+ // add parent padding
+ vPos += vWidget.getPaddingLeft();
+
+ // relative positions (like 'position:relative' in css)
+ if (!vChild._computedLeftTypeNull) {
+ vPos += vChild.getLeftValue();
+ }
+ else if (!vChild._computedRightTypeNull) {
+ vPos -= vChild.getRightValue();
+ }
+
+ // apply styles
+ vChild._resetRuntimeRight();
+ vChild._applyRuntimeLeft(vPos);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/AppearanceTheme.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/AppearanceTheme.js
new file mode 100644
index 0000000000..57cb643fb7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/AppearanceTheme.js
@@ -0,0 +1,164 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.theme.AppearanceTheme", qx.core.Object,
+function(vTitle)
+{
+ qx.core.Object.call(this);
+
+ this.setTitle(vTitle);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "title", type : "string", allowNull : false, defaultValue : "" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._appearances = {};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.registerAppearance = function(vId, vData) {
+ this._appearances[vId] = vData;
+}
+
+qx.Proto.getAppearance = function(vId) {
+ return this._appearances[vId];
+}
+
+qx.Proto.setupAppearance = function(vAppearance)
+{
+ if (!vAppearance._setupDone)
+ {
+ if (vAppearance.setup) {
+ vAppearance.setup(this);
+ }
+
+ vAppearance._setupDone = true;
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WIDGET METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.initialFrom = function(vId)
+{
+ var vAppearance = this.getAppearance(vId);
+ if (vAppearance)
+ {
+ this.setupAppearance(vAppearance);
+
+ try
+ {
+ return vAppearance.initial ? vAppearance.initial(this) : {}
+ }
+ catch(ex)
+ {
+ this.error("Couldn't apply initial appearance", ex);
+ }
+ }
+ else
+ {
+ return this.error("Missing appearance: " + vId);
+ }
+}
+
+qx.Proto.stateFrom = function(vId, vStates)
+{
+ var vAppearance = this.getAppearance(vId);
+ if (vAppearance)
+ {
+ this.setupAppearance(vAppearance);
+
+ try
+ {
+ return vAppearance.state ? vAppearance.state(this, vStates) : {}
+ }
+ catch(ex)
+ {
+ this.error("Couldn't apply state appearance", ex);
+ }
+ }
+ else
+ {
+ return this.error("Missing appearance: " + vId);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._appearances = null;
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/ColorTheme.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/ColorTheme.js
new file mode 100644
index 0000000000..2e72dc624a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/ColorTheme.js
@@ -0,0 +1,132 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#after(qx.manager.object.ColorManager)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.theme.ColorTheme", qx.core.Object,
+function(vTitle)
+{
+ qx.core.Object.call(this);
+
+ this._compiledColors = {};
+ this.setTitle(vTitle);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "title", type : "string", allowNull : false, defaultValue : "" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._needsCompilation = true;
+qx.Proto._colors = {};
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PUBLIC METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getValueByName = function(vName) {
+ return this._colors[vName] || "";
+}
+
+qx.Proto.getStyleByName = function(vName) {
+ return this._compiledColors[vName] || "";
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PRIVATE METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.compile = function()
+{
+ if (!this._needsCompilation) {
+ return;
+ }
+
+ for (var vName in qx.renderer.color.Color.themedNames) {
+ this._compileValue(vName);
+ }
+
+ this._needsCompilation = false;
+}
+
+qx.Proto._compileValue = function(vName)
+{
+ var v = this._colors[vName];
+ this._compiledColors[vName] = v ? qx.renderer.color.Color.rgb2style.apply(this, this._colors[vName]) : vName;
+}
+
+qx.Proto._register = function() {
+ return qx.manager.object.ColorManager.getInstance().registerTheme(this);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ delete this._colors;
+ delete this._compiledColors;
+
+ qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/IconTheme.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/IconTheme.js
new file mode 100644
index 0000000000..1402ce76c0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/IconTheme.js
@@ -0,0 +1,34 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#after(qx.manager.object.ImageManager)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.theme.IconTheme", qx.core.Object,
+function(vTitle)
+{
+ qx.core.Object.call(this);
+
+ this.setTitle(vTitle);
+});
+
+qx.OO.addProperty({ name : "title", type : "string", allowNull : false, defaultValue : "" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/WidgetTheme.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/WidgetTheme.js
new file mode 100644
index 0000000000..54d318f2f0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/renderer/theme/WidgetTheme.js
@@ -0,0 +1,34 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#after(qx.manager.object.ImageManager)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.renderer.theme.WidgetTheme", qx.core.Object,
+function(vTitle)
+{
+ qx.core.Object.call(this);
+
+ this.setTitle(vTitle);
+});
+
+qx.OO.addProperty({ name : "title", type : "string", allowNull : false, defaultValue : "" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/sys/Client.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/sys/Client.js
new file mode 100644
index 0000000000..a32c0de8e5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/sys/Client.js
@@ -0,0 +1,394 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+/*!
+ Basic client detection implementation
+
+ Version shemes following wikipedia: major.minor[.revision[.build]]
+ http://en.wikipedia.org/wiki/Software_version
+*/
+qx.OO.defineClass("qx.sys.Client", Object,
+function()
+{
+ var vRunsLocally = window.location.protocol === "file:";
+
+ var vBrowserUserAgent = navigator.userAgent;
+ var vBrowserVendor = navigator.vendor;
+ var vBrowserProduct = navigator.product;
+ var vBrowserPlatform = navigator.platform;
+ var vBrowserModeHta = false;
+ var vBrowser;
+
+ var vEngine = null;
+ var vEngineVersion = null;
+ var vEngineVersionMajor = 0;
+ var vEngineVersionMinor = 0;
+ var vEngineVersionRevision = 0;
+ var vEngineVersionBuild = 0;
+
+ var vEngineEmulation = null;
+ var vVersionHelper;
+
+ if (window.opera && /Opera[\s\/]([0-9\.]*)/.test(vBrowserUserAgent))
+ {
+ vEngine = "opera";
+ vEngineVersion = RegExp.$1;
+
+ // Fix Opera version to match wikipedia style
+ vEngineVersion = vEngineVersion.substring(0, 3) + "." + vEngineVersion.substring(3);
+
+ vEngineEmulation = vBrowserUserAgent.indexOf("MSIE") !== -1 ? "mshtml" : vBrowserUserAgent.indexOf("Mozilla") !== -1 ? "gecko" : null;
+ }
+ else if (typeof vBrowserVendor==="string" && vBrowserVendor==="KDE" && /KHTML\/([0-9-\.]*)/.test(vBrowserUserAgent))
+ {
+ vEngine = "khtml";
+ vBrowser = "konqueror";
+ vEngineVersion = RegExp.$1;
+ }
+ else if (vBrowserUserAgent.indexOf("AppleWebKit") != -1 && /AppleWebKit\/([0-9-\.]*)/.test(vBrowserUserAgent))
+ {
+ vEngine = "webkit";
+ vEngineVersion = RegExp.$1;
+
+ if(vBrowserUserAgent.indexOf("Safari") != -1) {
+ vBrowser = "safari";
+ } else if(vBrowserUserAgent.indexOf("Omni") != -1) {
+ vBrowser = "omniweb";
+ } else {
+ vBrowser = "other webkit";
+ }
+ }
+ else if (window.controllers && typeof vBrowserProduct==="string" && vBrowserProduct==="Gecko" && /rv\:([^\);]+)(\)|;)/.test(vBrowserUserAgent))
+ {
+ // http://www.mozilla.org/docs/dom/domref/dom_window_ref13.html
+ vEngine = "gecko";
+ vEngineVersion = RegExp.$1;
+
+ if(vBrowserUserAgent.indexOf("Firefox") != -1) {
+ vBrowser = "firefox";
+ } else if(vBrowserUserAgent.indexOf("Camino") != -1) {
+ vBrowser = "camino";
+ } else if(vBrowserUserAgent.indexOf("Galeon") != -1) {
+ vBrowser = "galeon";
+ } else {
+ vBrowser = "other gecko";
+ }
+ }
+ else if (/MSIE\s+([^\);]+)(\)|;)/.test(vBrowserUserAgent))
+ {
+ vEngine = "mshtml";
+ vEngineVersion = RegExp.$1;
+
+ vBrowserModeHta = !window.external;
+ }
+
+ if (vEngineVersion)
+ {
+ vVersionHelper = vEngineVersion.split(".");
+
+ vEngineVersionMajor = vVersionHelper[0] || 0;
+ vEngineVersionMinor = vVersionHelper[1] || 0;
+ vEngineVersionRevision = vVersionHelper[2] || 0;
+ vEngineVersionBuild = vVersionHelper[3] || 0;
+ }
+
+ var vEngineBoxSizingAttr = vEngine == "gecko" ? "-moz-box-sizing" : vEngine == "mshtml" ? null : "box-sizing";
+ var vEngineQuirksMode = document.compatMode !== "CSS1Compat";
+
+ var vDefaultLocale = "en";
+ var vBrowserLocale = (vEngine == "mshtml" ? navigator.userLanguage : navigator.language).toLowerCase();
+ var vBrowserLocaleVariant = null;
+
+ var vBrowserLocaleVariantIndex = vBrowserLocale.indexOf("-");
+ if (vBrowserLocaleVariantIndex != -1)
+ {
+ vBrowserLocaleVariant = vBrowserLocale.substr(vBrowserLocaleVariantIndex+1);
+ vBrowserLocale = vBrowserLocale.substr(0, vBrowserLocaleVariantIndex);
+ }
+
+ var vPlatform = "none";
+ var vPlatformWindows = false;
+ var vPlatformMacintosh = false;
+ var vPlatformUnix = false;
+ var vPlatformOther = false;
+
+ if (vBrowserPlatform.indexOf("Windows") != -1 || vBrowserPlatform.indexOf("Win32") != -1 || vBrowserPlatform.indexOf("Win64") != -1)
+ {
+ vPlatformWindows = true;
+ vPlatform = "win";
+ }
+ else if (vBrowserPlatform.indexOf("Macintosh") != -1 || vBrowserPlatform.indexOf("MacIntel") != -1)
+ {
+ vPlatformMacintosh = true;
+ vPlatform = "mac";
+ }
+ else if (vBrowserPlatform.indexOf("X11") != -1 || vBrowserPlatform.indexOf("Linux") != -1 || vBrowserPlatform.indexOf("BSD") != -1)
+ {
+ vPlatformUnix = true;
+ vPlatform = "unix";
+ }
+ else
+ {
+ vPlatformOther = true;
+ vPlatform = "other";
+ }
+
+ var vGfxVml = false;
+ var vGfxSvg = false;
+ var vGfxSvgBuiltin = false;
+ var vGfxSvgPlugin = false;
+
+ if (vEngine == "mshtml")
+ {
+ vGfxVml = true;
+
+ // TODO: Namespace for VML:
+ // document.write('<style>v\:*{ behavior:url(#default#VML); }</style>');
+ // document.write('<xml:namespace ns="urn:schemas-microsoft-com:vml" prefix="v"/>');
+ }
+
+ if (document.implementation && document.implementation.hasFeature)
+ {
+ if (document.implementation.hasFeature("org.w3c.dom.svg", "1.0"))
+ {
+ vGfxSvg = vGfxSvgBuiltin = true;
+ }
+ }
+
+ this._runsLocally = vRunsLocally;
+
+ this._engineName = vEngine;
+ this._engineNameMshtml = vEngine === "mshtml";
+ this._engineNameGecko = vEngine === "gecko";
+ this._engineNameOpera = vEngine === "opera";
+ this._engineNameKhtml = vEngine === "khtml";
+ this._engineNameWebkit = vEngine === "webkit";
+
+ this._engineVersion = parseFloat(vEngineVersion);
+ this._engineVersionMajor = parseInt(vEngineVersionMajor);
+ this._engineVersionMinor = parseInt(vEngineVersionMinor);
+ this._engineVersionRevision = parseInt(vEngineVersionRevision);
+ this._engineVersionBuild = parseInt(vEngineVersionBuild);
+
+ this._engineQuirksMode = vEngineQuirksMode;
+ this._engineBoxSizingAttribute = vEngineBoxSizingAttr;
+ this._engineEmulation = vEngineEmulation;
+
+ this._defaultLocale = vDefaultLocale;
+
+ this._browserPlatform = vPlatform;
+ this._browserPlatformWindows = vPlatformWindows;
+ this._browserPlatformMacintosh = vPlatformMacintosh;
+ this._browserPlatformUnix = vPlatformUnix;
+ this._browserPlatformOther = vPlatformOther;
+ this._browserModeHta = vBrowserModeHta;
+ this._browserLocale = vBrowserLocale;
+ this._browserLocaleVariant = vBrowserLocaleVariant;
+
+ this._gfxVml = vGfxVml;
+ this._gfxSvg = vGfxSvg;
+ this._gfxSvgBuiltin = vGfxSvgBuiltin;
+ this._gfxSvgPlugin = vGfxSvgPlugin;
+
+ this._supportsTextContent = (document.documentElement.textContent !== undefined);
+ this._supportsInnerText = (document.documentElement.innerText !== undefined);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getRunsLocally = function() {
+ return this._runsLocally;
+}
+
+qx.Proto.getEngine = function() {
+ return this._engineName;
+}
+
+qx.Proto.getVersion = function() {
+ return this._engineVersion;
+}
+
+qx.Proto.getMajor = function() {
+ return this._engineVersionMajor;
+}
+
+qx.Proto.getMinor = function() {
+ return this._engineVersionMinor;
+}
+
+qx.Proto.getRevision = function() {
+ return this._engineVersionRevision;
+}
+
+qx.Proto.getBuild = function() {
+ return this._engineVersionBuild;
+}
+
+qx.Proto.getEmulation = function() {
+ return this._engineEmulation;
+}
+
+qx.Proto.isMshtml = function() {
+ return this._engineNameMshtml;
+}
+
+qx.Proto.isGecko = function() {
+ return this._engineNameGecko;
+}
+
+qx.Proto.isOpera = function() {
+ return this._engineNameOpera;
+}
+
+qx.Proto.isKhtml = function() {
+ return this._engineNameKhtml;
+}
+
+qx.Proto.isWebkit = function() {
+ return this._engineNameWebkit;
+}
+
+qx.Proto.isSafari2 = function() {
+ return this._engineNameWebkit && (this._engineVersion < 420);
+}
+
+qx.Proto.isInQuirksMode = function() {
+ return this._engineQuirksMode;
+}
+
+qx.Proto.getLocale = function() {
+ return this._browserLocale;
+}
+
+qx.Proto.getLocaleVariant = function() {
+ return this._browserLocaleVariant;
+}
+
+qx.Proto.getDefaultLocale = function() {
+ return this._defaultLocale;
+}
+
+qx.Proto.usesDefaultLocale = function() {
+ return this._browserLocale === this._defaultLocale;
+}
+
+
+
+/**
+ * Returns the CSS attribute name for box-sizing if supported.
+ *
+ * @return {string} the attribute name.
+ */
+qx.Proto.getEngineBoxSizingAttribute = function() {
+ return this._engineBoxSizingAttribute;
+}
+
+
+qx.Proto.getPlatform = function() {
+ return this._browserPlatform;
+}
+
+/**
+ * Returns whether the client platform is a Windows machine.
+ *
+ * @return {boolean} whether the client platform is a Windows.
+ */
+qx.Proto.runsOnWindows = function() {
+ return this._browserPlatformWindows;
+}
+
+/**
+ * Returns whether the client platform is a Macintosh machine.
+ *
+ * @return {boolean} whether the client platform is a Macintosh.
+ */
+qx.Proto.runsOnMacintosh = function() {
+ return this._browserPlatformMacintosh;
+}
+
+/**
+ * Returns whether the client platform is a X11 powered machine.
+ *
+ * @return {boolean} whether the client platform is a X11 powered machine.
+ */
+qx.Proto.runsOnUnix = function() {
+ return this._browserPlatformUnix;
+}
+
+qx.Proto.supportsVml = function() {
+ return this._gfxVml;
+}
+
+qx.Proto.supportsSvg = function() {
+ return this._gfxSvg;
+}
+
+qx.Proto.usesSvgBuiltin = function() {
+ return this._gfxSvgBuiltin;
+}
+
+qx.Proto.usesSvgPlugin = function() {
+ return this._gfxSvgPlugin;
+}
+
+
+/**
+ * Returns whether the client supports the W3C property textContent of DOM element nodes.
+ *
+ * @return {boolean} whether the client supports textContent.
+ */
+qx.Proto.supportsTextContent = function() {
+ return this._supportsTextContent;
+}
+
+
+/**
+ * Returns whether the client supports the W3C property innerText of DOM element nodes.
+ *
+ * @return {boolean} whether the client supports innerText.
+ */
+qx.Proto.supportsInnerText = function() {
+ return this._supportsInnerText;
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/appearance/Classic.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/appearance/Classic.js
new file mode 100644
index 0000000000..c45c98db5d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/appearance/Classic.js
@@ -0,0 +1,2219 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Til Schneider (til132)
+
+ ************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(theme_appearance)
+#optional(qx.renderer.color.Color)
+#optional(qx.renderer.color.ColorObject)
+#optional(qx.renderer.border.Border)
+#optional(qx.renderer.border.BorderObject)
+#optional(qx.renderer.font.Font)
+#optional(qx.renderer.font.FontObject)
+
+ ************************************************************************ */
+
+qx.OO.defineClass("qx.theme.appearance.Classic", qx.renderer.theme.AppearanceTheme,
+function(vTitle) {
+ qx.renderer.theme.AppearanceTheme.call(this, vTitle || "qooxdoo default appearance");
+});
+
+
+
+
+qx.Proto._appearances = qx.lang.Object.carefullyMergeWith( {
+ /*
+ ---------------------------------------------------------------------------
+ CORE
+ ---------------------------------------------------------------------------
+ */
+
+ "image" : {
+ initial : function(vTheme) {
+ return {
+ allowStretchX : false,
+ allowStretchY : false
+ }
+ }
+ },
+
+ "client-document" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("threedface");
+ this.color = new qx.renderer.color.ColorObject("windowtext");
+ },
+
+ initial : function(vTheme) {
+ return {
+ backgroundColor : this.bgcolor,
+ color : this.color,
+ hideFocus : true,
+ enableElementFocus : false
+ }
+ }
+ },
+
+ "blocker" : {
+ initial : function(vTheme) {
+ // You could also use: "static/image/dotted_white.gif" for example as backgroundImage here
+ // (Visible) background tiles could be dramatically slow down mshtml!
+ // A background image or color is always needed for mshtml to block the events successfully.
+ return {
+ cursor : "default",
+ backgroundImage : "static/image/blank.gif"
+ }
+ }
+ },
+
+ "atom" : {
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ spacing : 4,
+ width : "auto",
+ height : "auto",
+ horizontalChildrenAlign : "center",
+ verticalChildrenAlign : "middle",
+ stretchChildrenOrthogonalAxis : false,
+ allowStretchY : false,
+ allowStretchX : false
+ }
+ }
+ },
+
+ "label" : {
+ setup : function() {
+ this.color_disabled = new qx.renderer.color.ColorObject("graytext");
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ },
+
+ initial : function(vTheme) {
+ return {
+ font: this.font,
+ wrap : false
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ color : vStates.disabled ? this.color_disabled : null
+ }
+ }
+ },
+
+ "htmlcontainer" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("label");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("label", vStates);
+ }
+ },
+
+ "popup" : {
+ initial : function(vTheme) {
+ return {
+ width : "auto",
+ height : "auto"
+ }
+ }
+ },
+
+ "tool-tip" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("InfoBackground");
+ this.color = new qx.renderer.color.ColorObject("InfoText");
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("popup"), {
+ backgroundColor : this.bgcolor,
+ color : this.color,
+ border : qx.renderer.border.BorderPresets.getInstance().info,
+ paddingTop : 1,
+ paddingRight : 3,
+ paddingBottom : 2,
+ paddingLeft : 3
+ });
+ }
+ },
+
+ "iframe" : {
+ initial : function(vTheme) {
+ return {
+ border : qx.renderer.border.BorderPresets.getInstance().inset
+ }
+ }
+ },
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ BUTTON
+ ---------------------------------------------------------------------------
+ */
+
+ "button" : {
+ setup : function() {
+ this.bgcolor_default = new qx.renderer.color.ColorObject("buttonface");
+ this.bgcolor_over = new qx.renderer.color.Color("#87BCE5");
+ this.bgcolor_left = new qx.renderer.color.Color("#FFF0C9");
+
+ this.border_pressed = qx.renderer.border.BorderPresets.getInstance().inset;
+ this.border_default = qx.renderer.border.BorderPresets.getInstance().outset;
+ },
+
+ initial : function(vTheme) {
+ return vTheme.initialFrom("atom");
+ },
+
+ state : function(vTheme, vStates) {
+ var vReturn = {
+ backgroundColor : vStates.abandoned ? this.bgcolor_left : vStates.over ? this.bgcolor_over : this.bgcolor_default,
+ border : vStates.pressed || vStates.checked || vStates.abandoned ? this.border_pressed : this.border_default
+ }
+
+ if (vStates.pressed || vStates.abandoned) {
+ vReturn.paddingTop = 4;
+ vReturn.paddingRight = 3;
+ vReturn.paddingBottom = 2;
+ vReturn.paddingLeft = 5;
+ }
+ else {
+ vReturn.paddingTop = vReturn.paddingBottom = 3;
+ vReturn.paddingRight = vReturn.paddingLeft = 4;
+ }
+
+ return vReturn;
+ }
+ },
+
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ TOOLBAR
+ ---------------------------------------------------------------------------
+ */
+
+ "toolbar" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("threedface");
+ },
+
+ initial : function(vTheme) {
+ return {
+ border : qx.renderer.border.BorderPresets.getInstance().thinOutset,
+ backgroundColor : this.bgcolor,
+ height : "auto"
+ }
+ }
+ },
+
+ "toolbar-part" : {
+ initial : function(vTheme) {
+ return {
+ width : "auto"
+ }
+ }
+ },
+
+ "toolbar-part-handle" : {
+ initial : function(vTheme) {
+ return {
+ width : 10
+ }
+ }
+ },
+
+ "toolbar-part-handle-line" : {
+ initial : function(vTheme) {
+ return {
+ top : 2,
+ left : 3,
+ bottom : 2,
+ width : 4,
+ border : qx.renderer.border.BorderPresets.getInstance().thinOutset
+ }
+ }
+ },
+
+ "toolbar-separator" : {
+ initial : function(vTheme) {
+ return {
+ width : 8
+ }
+ }
+ },
+
+ "toolbar-separator-line" : {
+ setup : function() {
+ var b = this.border = new qx.renderer.border.BorderObject;
+
+ b.setLeftColor("threedshadow");
+ b.setRightColor("threedhighlight");
+
+ b.setLeftStyle("solid");
+ b.setRightStyle("solid");
+
+ b.setLeftWidth(1);
+ b.setRightWidth(1);
+ b.setTopWidth(0);
+ b.setBottomWidth(0);
+ },
+
+ initial : function(vTheme) {
+ return {
+ top : 2,
+ left: 2,
+ width : 2,
+ bottom : 2,
+ border : this.border
+ }
+ }
+ },
+
+ "toolbar-button" : {
+ setup : function() {
+ this.bgcolor_default = new qx.renderer.color.ColorObject("buttonface");
+ this.bgcolor_left = new qx.renderer.color.Color("#FFF0C9");
+
+ this.border_pressed = qx.renderer.border.BorderPresets.getInstance().thinInset;
+ this.border_over = qx.renderer.border.BorderPresets.getInstance().thinOutset;
+ this.border_default = qx.renderer.border.BorderPresets.getInstance().none;
+
+ this.checked_background = "static/image/dotted_white.gif";
+ },
+
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ spacing : 4,
+ width : "auto",
+ verticalChildrenAlign : "middle"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ var vReturn = {
+ backgroundColor : vStates.abandoned ? this.bgcolor_left : this.bgcolor_default,
+ backgroundImage : vStates.checked && !vStates.over ? this.checked_background : null
+ }
+
+ if (vStates.pressed || vStates.checked || vStates.abandoned) {
+ vReturn.border = this.border_pressed;
+
+ vReturn.paddingTop = 3;
+ vReturn.paddingRight = 2;
+ vReturn.paddingBottom = 1;
+ vReturn.paddingLeft = 4;
+ } else if (vStates.over) {
+ vReturn.border = this.border_over;
+
+ vReturn.paddingTop = vReturn.paddingBottom = 2;
+ vReturn.paddingLeft = vReturn.paddingRight = 3;
+ } else {
+ vReturn.border = this.border_default;
+
+ vReturn.paddingTop = vReturn.paddingBottom = 3;
+ vReturn.paddingLeft = vReturn.paddingRight = 4;
+ }
+
+ return vReturn;
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ BAR VIEW
+ ---------------------------------------------------------------------------
+ */
+
+ "bar-view" : {
+ setup : function() {
+ this.background = new qx.renderer.color.ColorObject("#FAFBFE");
+ },
+
+ initial : function(vTheme) {
+ return {
+ backgroundColor : this.background,
+ border : qx.renderer.border.BorderPresets.getInstance().shadow
+ }
+ }
+ },
+
+ "bar-view-pane" : {
+ state : function(vTheme, vStates) {
+ if (vStates.barHorizontal) {
+ return {
+ width : null,
+ height : "1*"
+ }
+ }
+ else {
+ return {
+ width : "1*",
+ height : null
+ }
+ }
+ }
+ },
+
+ "bar-view-page" : {
+ initial : function(vTheme) {
+ return {
+ left : 10,
+ right : 10,
+ top : 10,
+ bottom : 10
+ }
+ }
+ },
+
+ "bar-view-bar" : {
+ setup : function() {
+ this.background_color = new qx.renderer.color.ColorObject("#E1EEFF");
+
+ this.border_color = new qx.renderer.color.ColorObject("threedshadow");
+
+ this.border_top = new qx.renderer.border.BorderObject;
+ this.border_top.setBottom(1, "solid", this.border_color);
+
+ this.border_bottom = new qx.renderer.border.BorderObject;
+ this.border_bottom.setTop(1, "solid", this.border_color);
+
+ this.border_left = new qx.renderer.border.BorderObject;
+ this.border_left.setRight(1, "solid", this.border_color);
+
+ this.border_right = new qx.renderer.border.BorderObject;
+ this.border_right.setLeft(1, "solid", this.border_color);
+ },
+
+ initial : function(vTheme) {
+ return {
+ backgroundColor : this.background_color
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ if (vStates.barTop) {
+ return {
+ paddingTop : 1,
+ paddingRight : 0,
+ paddingBottom : 1,
+ paddingLeft : 0,
+
+ border : this.border_top,
+ height : "auto",
+ width : null,
+ orientation : "horizontal"
+ };
+ }
+ else if (vStates.barBottom) {
+ return {
+ paddingTop : 1,
+ paddingRight : 0,
+ paddingBottom : 1,
+ paddingLeft : 0,
+
+ border : this.border_bottom,
+ height : "auto",
+ width : null,
+ orientation : "horizontal"
+ };
+ }
+ else if (vStates.barLeft) {
+ return {
+ paddingTop : 0,
+ paddingRight : 1,
+ paddingBottom : 0,
+ paddingLeft : 1,
+
+ border : this.border_left,
+ height : null,
+ width : "auto",
+ orientation : "vertical"
+ };
+ }
+ else if (vStates.barRight) {
+ return {
+ paddingTop : 0,
+ paddingRight : 1,
+ paddingBottom : 0,
+ paddingLeft : 1,
+
+ border : this.border_right,
+ height : null,
+ width : "auto",
+ orientation : "vertical"
+ };
+ }
+ }
+ },
+
+ "bar-view-button" : {
+ setup : function() {
+ this.background_color_normal = null;
+ this.background_color_checked = new qx.renderer.color.ColorObject("#FAFBFE");
+
+ this.border_color = new qx.renderer.color.ColorObject("threedshadow");
+ this.border_color_checked = new qx.renderer.color.ColorObject("#FEC83C");
+
+ this.border_top_checked = new qx.renderer.border.Border(1, "solid", this.border_color);
+ this.border_top_checked.setBottom(3, "solid", this.border_color_checked);
+
+ this.border_bottom_checked = new qx.renderer.border.Border(1, "solid", this.border_color);
+ this.border_bottom_checked.setTop(3, "solid", this.border_color_checked);
+
+ this.border_left_checked = new qx.renderer.border.Border(1, "solid", this.border_color);
+ this.border_left_checked.setRight(3, "solid", this.border_color_checked);
+
+ this.border_right_checked = new qx.renderer.border.Border(1, "solid", this.border_color);
+ this.border_right_checked.setLeft(3, "solid", this.border_color_checked);
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("atom"), {
+ iconPosition : "top"
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ var vReturn = {
+ backgroundColor : vStates.checked ? this.background_color_checked : this.background_color_normal,
+ allowStretchX : true,
+ allowStretchY : true
+ }
+
+ if (vStates.checked || vStates.over) {
+ if (vStates.barTop) {
+ vReturn.border = this.border_top_checked;
+ vReturn.paddingTop = 3;
+ vReturn.paddingRight = 6;
+ vReturn.paddingBottom = 1;
+ vReturn.paddingLeft = 6;
+ }
+ else if (vStates.barBottom) {
+ vReturn.border = this.border_bottom_checked;
+ vReturn.paddingTop = 1;
+ vReturn.paddingRight = 6;
+ vReturn.paddingBottom = 3;
+ vReturn.paddingLeft = 6;
+ }
+ else if (vStates.barLeft) {
+ vReturn.border = this.border_left_checked;
+ vReturn.paddingTop = 3;
+ vReturn.paddingRight = 4;
+ vReturn.paddingBottom = 3;
+ vReturn.paddingLeft = 6;
+ }
+ else if (vStates.barRight) {
+ vReturn.border = this.border_right_checked;
+ vReturn.paddingTop = 3;
+ vReturn.paddingRight = 6;
+ vReturn.paddingBottom = 3;
+ vReturn.paddingLeft = 4;
+ }
+ }
+ else {
+ vReturn.border = qx.renderer.border.BorderPresets.getInstance().none;
+ vReturn.paddingTop = vReturn.paddingBottom = 4;
+ vReturn.paddingRight = vReturn.paddingLeft = 7;
+ }
+
+ if (vStates.barTop || vStates.barBottom) {
+ vReturn.marginTop = vReturn.marginBottom = 0;
+ vReturn.marginRight = vReturn.marginLeft = 1;
+ vReturn.width = "auto";
+ vReturn.height = null;
+ }
+ else if (vStates.barLeft || vStates.barRight) {
+ vReturn.marginTop = vReturn.marginBottom = 1;
+ vReturn.marginRight = vReturn.marginLeft = 0;
+ vReturn.height = "auto";
+ vReturn.width = null;
+ }
+
+ return vReturn;
+ }
+ },
+
+
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ WINDOW
+ ---------------------------------------------------------------------------
+ */
+
+ "window" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("threedface");
+ this.color = new qx.renderer.color.ColorObject("windowtext");
+ },
+
+ initial : function(vTheme) {
+ return {
+ backgroundColor : this.bgcolor,
+ color : this.color,
+ paddingTop : 1,
+ paddingRight : 1,
+ paddingBottom : 1,
+ paddingLeft : 1
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ border : vStates.maximized ? qx.renderer.border.BorderPresets.getInstance().none : qx.renderer.border.BorderPresets.getInstance().outset
+ }
+ }
+ },
+
+ "window-captionbar" : {
+ setup : function() {
+ this.bgcolor_active = new qx.renderer.color.ColorObject("activecaption");
+ this.color_active = new qx.renderer.color.ColorObject("captiontext");
+ this.bgcolor_inactive = new qx.renderer.color.ColorObject("inactivecaption");
+ this.color_inactive = new qx.renderer.color.ColorObject("inactivecaptiontext");
+ },
+
+ initial : function(vTheme) {
+ return {
+ paddingTop : 1,
+ paddingRight : 2,
+ paddingBottom : 2,
+ paddingLeft : 2,
+ verticalChildrenAlign : "middle",
+ height : "auto",
+ overflow : "hidden"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ backgroundColor : vStates.active ? this.bgcolor_active : this.bgcolor_inactive,
+ color : vStates.active ? this.color_active : this.color_inactive
+ }
+ }
+ },
+
+ "window-resize-frame" : {
+ initial : function(vTheme) {
+ return {
+ border : qx.renderer.border.BorderPresets.getInstance().shadow
+ }
+ }
+ },
+
+ "window-captionbar-icon" : {
+ initial : function(vTheme) {
+ return {
+ marginRight : 2
+ }
+ }
+ },
+
+ "window-captionbar-title" : {
+ setup : function() {
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ this.font.setBold(true);
+ },
+
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ font : this.font,
+ marginRight : 2,
+ wrap : false
+ }
+ }
+ },
+
+ "window-captionbar-button" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("button");
+ },
+
+ state : function(vTheme, vStates) {
+ var vReturn = vTheme.stateFrom("button", vStates);
+
+ if (vStates.pressed || vStates.abandoned) {
+ vReturn.paddingTop = 2;
+ vReturn.paddingRight = 1;
+ vReturn.paddingBottom = 0;
+ vReturn.paddingLeft = 3;
+ }
+ else {
+ vReturn.paddingTop = vReturn.paddingBottom = 1;
+ vReturn.paddingRight = vReturn.paddingLeft = 2;
+ }
+
+ return vReturn;
+ }
+ },
+
+ "window-captionbar-minimize-button" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("window-captionbar-button");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("window-captionbar-button", vStates);
+ }
+ },
+
+ "window-captionbar-restore-button" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("window-captionbar-button");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("window-captionbar-button", vStates);
+ }
+ },
+
+ "window-captionbar-maximize-button" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("window-captionbar-button");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("window-captionbar-button", vStates);
+ }
+ },
+
+ "window-captionbar-close-button" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("window-captionbar-button"), {
+ marginLeft : 2
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("window-captionbar-button", vStates);
+ }
+ },
+
+ "window-statusbar" : {
+ initial : function(vTheme) {
+ return {
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset,
+ height : "auto"
+ }
+ }
+ },
+
+ "window-statusbar-text" : {
+ initial : function(vTheme) {
+ return {
+ paddingTop : 1,
+ paddingRight : 4,
+ paddingBottom : 1,
+ paddingLeft : 4,
+ cursor : "default"
+ }
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ RESIZER
+ ---------------------------------------------------------------------------
+ */
+
+ "resizer": {
+ initial: function(vTheme) {
+ return {
+ border : qx.renderer.border.BorderPresets.getInstance().outset
+ }
+ }
+ },
+
+ "resizer-frame" : {
+ initial : function(vTheme) {
+ return {
+ border : qx.renderer.border.BorderPresets.getInstance().shadow
+ }
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ MENU
+ ---------------------------------------------------------------------------
+ */
+
+ "menu" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("menu");
+ },
+
+ initial : function(vTheme) {
+ return {
+ width : "auto",
+ height : "auto",
+ backgroundColor : this.bgcolor,
+ border : qx.renderer.border.BorderPresets.getInstance().outset,
+ paddingTop : 1,
+ paddingRight : 1,
+ paddingBottom : 1,
+ paddingLeft : 1
+ }
+ }
+ },
+
+ "menu-layout" : {
+ initial : function(vTheme) {
+ return {
+ top : 0,
+ right : 0,
+ bottom : 0,
+ left : 0
+ }
+ }
+ },
+
+ "menu-button" : {
+ setup : function() {
+ this.BGCOLOR_OVER = new qx.renderer.color.ColorObject("highlight");
+ this.BGCOLOR_OUT = null;
+
+ this.COLOR_OVER = new qx.renderer.color.ColorObject("highlighttext");
+ this.COLOR_OUT = null;
+ },
+
+ initial : function(vTheme) {
+ return {
+ minWidth : "auto",
+ height : "auto",
+ spacing : 2,
+ paddingTop : 2,
+ paddingRight : 4,
+ paddingBottom : 2,
+ paddingLeft : 4,
+ cursor : "default",
+ verticalChildrenAlign : "middle",
+ allowStretchX : true
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ backgroundColor : vStates.over ? this.BGCOLOR_OVER : this.BGCOLOR_OUT,
+ color : vStates.over ? this.COLOR_OVER : this.COLOR_OUT
+ }
+ }
+ },
+
+ "menu-check-box" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("menu-button");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("menu-button", vStates);
+ }
+ },
+
+ "menu-radio-button" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("menu-button");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("menu-button", vStates);
+ }
+ },
+
+ "menu-separator" : {
+ initial : function(vTheme) {
+ return {
+ height : "auto",
+ marginTop : 3,
+ marginBottom : 2,
+ paddingLeft : 3,
+ paddingRight : 3
+ }
+ }
+ },
+
+ "menu-separator-line" : {
+ initial : function(vTheme) {
+ return {
+ right : 0,
+ left : 0,
+ height : "auto",
+ border : qx.renderer.border.BorderPresets.getInstance().verticalDivider
+ }
+ }
+ },
+
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ LIST
+ ---------------------------------------------------------------------------
+ */
+
+ "list" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("white");
+ },
+
+ initial : function(vTheme) {
+ return {
+ overflow : "hidden",
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset,
+ backgroundColor : this.bgcolor
+ }
+ }
+ },
+
+ "list-item" : {
+ setup : function() {
+ this.bgcolor_selected = new qx.renderer.color.ColorObject("highlight");
+ this.color_selected = new qx.renderer.color.ColorObject("highlighttext");
+ },
+
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ height : "auto",
+ horizontalChildrenAlign : "left",
+ verticalChildrenAlign : "middle",
+ spacing : 4,
+ paddingTop : 3,
+ paddingRight : 5,
+ paddingBottom : 3,
+ paddingLeft : 5,
+ minWidth : "auto"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ backgroundColor : vStates.selected ? this.bgcolor_selected : null,
+ color : vStates.selected ? this.color_selected : null
+ }
+ }
+ },
+
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ FIELDS
+ ---------------------------------------------------------------------------
+ */
+
+ "text-field" : {
+ setup : function() {
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ },
+
+ initial : function(vTheme) {
+ return {
+ hideFocus : true,
+ border : qx.renderer.border.BorderPresets.getInstance().inset,
+ paddingTop : 1,
+ paddingRight : 3,
+ paddingBottom : 1,
+ paddingLeft : 3,
+ allowStretchY : false,
+ allowStretchX : true,
+ font : this.font,
+ width : "auto",
+ height : "auto"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("label", vStates);
+ }
+ },
+
+ "text-area" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("text-field"), {
+ overflow : "auto",
+
+ // gecko automatically defines a marginTop/marginBottom of 1px. We need to reset these values.
+ marginTop : 0,
+ marginBottom : 0
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("text-field", vStates);
+ }
+ },
+
+
+
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ COMBOBOX
+ ---------------------------------------------------------------------------
+ */
+
+ "combo-box" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("white");
+ },
+
+ initial : function(vTheme) {
+ return {
+ minWidth : 40,
+ width : 120,
+ height : "auto",
+ border : qx.renderer.border.BorderPresets.getInstance().inset,
+ backgroundColor : this.bgcolor,
+ allowStretchY : false
+ }
+ }
+ },
+
+ "combo-box-ex" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("white");
+ },
+
+ initial : function(vTheme) {
+ return {
+ width : "auto",
+ height : "auto",
+ border : qx.renderer.border.BorderPresets.getInstance().inset,
+ backgroundColor : this.bgcolor,
+ allowStretchY : false
+ }
+ }
+ },
+
+ "combo-box-list" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("list"), {
+ top : 0,
+ right : 0,
+ bottom : 0,
+ left : 0,
+ border : null,
+ overflow : "scrollY"
+ });
+ }
+ },
+
+ "combo-box-ex-list" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("list"), {
+ statusBarVisible: false,
+ columnVisibilityButtonVisible: false,
+ height: 'auto',
+ maxHeight: 150,
+ top : 0,
+ left : 0,
+ border : null
+ });
+ }
+ },
+
+ "combo-box-popup" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("list"), {
+ height : "auto",
+ maxHeight : 150,
+ border : qx.renderer.border.BorderPresets.getInstance().shadow
+ });
+ }
+ },
+
+ "combo-box-ex-popup" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("list"), {
+ width: "auto",
+ height : "auto",
+ border : qx.renderer.border.BorderPresets.getInstance().shadow
+ });
+ }
+ },
+
+ "combo-box-text-field" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("transparent");
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("text-field"), {
+ border : qx.renderer.border.BorderPresets.getInstance().none,
+ width : "1*",
+ backgroundColor : this.bgcolor
+ });
+ }
+ },
+
+ "combo-box-ex-text-field" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("transparent");
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("text-field"), {
+ border : qx.renderer.border.BorderPresets.getInstance().none,
+ minWidth : 30,
+ width : 100,
+ backgroundColor : this.bgcolor
+ });
+ }
+ },
+
+ // Used both for ComboBox and ComboBoxEx
+ "combo-box-button" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("button"), {
+ height : null,
+ allowStretchY : true
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return qx.lang.Object.mergeWith(vTheme.stateFrom("button", vStates), {
+ paddingTop : 0,
+ paddingRight : 3,
+ paddingBottom : 0,
+ paddingLeft : 2
+ });
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ TREE
+ ---------------------------------------------------------------------------
+ */
+
+ "tree-element" : {
+ initial : function(vTheme) {
+ return {
+ height : 16,
+ verticalChildrenAlign : "middle"
+ }
+ }
+ },
+
+ "tree-element-icon" : {
+ initial : function(vTheme) {
+ return {
+ width : 16,
+ height : 16
+ }
+ }
+ },
+
+ "tree-element-label" : {
+ setup : function() {
+ this.bgcolor_selected = new qx.renderer.color.ColorObject("highlight");
+ this.color_selected = new qx.renderer.color.ColorObject("highlighttext");
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("label"), {
+ cursor : "default",
+ marginLeft : 3,
+ height : 15,
+ paddingTop : 2,
+ paddingRight : 2,
+ paddingBottom : 2,
+ paddingLeft : 2,
+ allowStretchY : false
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return qx.lang.Object.mergeWith(vTheme.stateFrom("label", vStates), {
+ backgroundColor : vStates.selected ? this.bgcolor_selected : null,
+ color : vStates.selected ? this.color_selected : null
+ });
+ }
+ },
+
+ "tree-folder" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("tree-element");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("tree-element", vStates);
+ }
+ },
+
+ "tree-folder-icon" : {
+ initial : function(vTheme) {
+ return {
+ width : 16,
+ height : 16
+ }
+ }
+ },
+
+ "tree-folder-label" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("tree-element-label");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("tree-element-label", vStates);
+ }
+ },
+
+ "tree" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("tree-folder");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("tree-folder", vStates);
+ }
+ },
+
+ "tree-icon" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("tree-folder-icon");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("tree-folder-icon", vStates);
+ }
+ },
+
+ "tree-label" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("tree-folder-label");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("tree-folder-label", vStates);
+ }
+ },
+
+ "tree-container" : {
+ initial : function(vTheme) {
+ return {
+ verticalChildrenAlign : "top"
+ }
+ }
+ },
+
+ "tree-folder-container" : {
+ initial : function(vTheme) {
+ return {
+ height : "auto",
+ verticalChildrenAlign : "top"
+ }
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ LISTVIEW
+ ---------------------------------------------------------------------------
+ */
+
+ "list-view" : {
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ overflow: "hidden"
+ }
+ }
+ },
+
+ "list-view-pane" : {
+ initial : function(vTheme) {
+ return {
+ width : "1*",
+ horizontalSpacing : 1,
+ overflow : "hidden"
+ }
+ }
+ },
+
+ "list-view-header" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border;
+ this.border.setBottom(1, "solid", "#e2e2e2");
+
+ this.bgcolor = new qx.renderer.color.Color("#f2f2f2");
+ },
+
+ initial : function(vTheme) {
+ return {
+ height : "auto",
+ overflow: "hidden",
+ border : this.border,
+ backgroundColor : this.bgcolor
+ }
+ }
+ },
+
+ "list-view-header-cell" : {
+ setup : function() {
+ this.border_hover = new qx.renderer.border.Border;
+ this.border_hover.setBottom(2, "solid", "#F9B119");
+
+ this.bgcolor_hover = new qx.renderer.color.Color("white");
+ },
+
+ initial : function(vTheme) {
+ return {
+ overflow : "hidden",
+ paddingTop : 2,
+ paddingRight : 6,
+ paddingBottom : 2,
+ paddingLeft : 6,
+ spacing : 4
+ };
+ },
+
+ state : function(vTheme, vStates) {
+ if (vStates.over) {
+ return {
+ backgroundColor : this.bgcolor_hover,
+ paddingBottom : 0,
+ border : this.border_hover
+ };
+ }
+ else {
+ return {
+ backgroundColor : null,
+ paddingBottom : 2,
+ border : null
+ };
+ }
+ }
+ },
+
+ "list-view-header-separator" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("#D6D5D9");
+ },
+
+ initial : function(vTheme) {
+ return {
+ backgroundColor : this.bgcolor,
+ width : 1,
+ marginTop : 1,
+ marginBottom : 1
+ };
+ }
+ },
+
+ "list-view-content-cell" : {
+ setup : function() {
+ this.bgcolor_selected = new qx.renderer.color.ColorObject("highlight");
+ this.color_selected = new qx.renderer.color.ColorObject("highlighttext");
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ backgroundColor : vStates.selected ? this.bgcolor_selected : null,
+ color : vStates.selected ? this.color_selected : null
+ };
+ }
+ },
+
+ "list-view-content-cell-image" : {
+ initial : function(vTheme) {
+ return {
+ paddingLeft : 6,
+ paddingRight : 6
+ };
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("list-view-content-cell", vStates);
+ }
+ },
+
+ "list-view-content-cell-text" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("htmlcontainer"), {
+ overflow: "hidden",
+ paddingLeft : 6,
+ paddingRight : 6
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return qx.lang.Object.mergeWith(vTheme.stateFrom("htmlcontainer", vStates), vTheme.stateFrom("list-view-content-cell", vStates));
+ }
+ },
+
+ "list-view-content-cell-html" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("list-view-content-cell-text");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("list-view-content-cell-text", vStates);
+ }
+ },
+
+ "list-view-content-cell-icon-html" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("list-view-content-cell-text");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("list-view-content-cell-text", vStates);
+ }
+ },
+
+ "list-view-content-cell-link" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("list-view-content-cell-text");
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("list-view-content-cell-text", vStates);
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ TABVIEW
+ ---------------------------------------------------------------------------
+ */
+
+ "tab-view" : {
+ initial : function(vTheme) {
+ return {
+ spacing : -1
+ };
+ }
+ },
+
+ "tab-view-bar" : {
+ initial : function(vTheme) {
+ return {
+ height : "auto"
+ };
+ }
+ },
+
+ "tab-view-pane" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border(1, "solid", "#91A5BD");
+ this.bgcolor = new qx.renderer.color.ColorObject("#FAFBFE");
+ },
+
+ initial : function(vTheme) {
+ return {
+ height : "1*",
+ backgroundColor : this.bgcolor,
+ border : this.border,
+ paddingTop : 10,
+ paddingRight : 10,
+ paddingBottom : 10,
+ paddingLeft : 10
+ };
+ }
+ },
+
+ "tab-view-page" : {
+ initial : function(vTheme) {
+ return {
+ top : 0,
+ right : 0,
+ bottom : 0,
+ left : 0
+ };
+ }
+ },
+
+ "tab-view-button" : {
+ setup : function() {
+ this.bgcolor_normal = new qx.renderer.color.ColorObject("#E1EEFF");
+ this.bgcolor_checked = new qx.renderer.color.ColorObject("#FAFBFE");
+
+ this.border_top_normal = new qx.renderer.border.Border(1, "solid", "#91A5BD");
+ this.border_top_normal.setBottomWidth(0);
+
+ this.border_top_checked = new qx.renderer.border.Border(1, "solid", "#91A5BD");
+ this.border_top_checked.setBottomWidth(0);
+ this.border_top_checked.setTop(3, "solid", "#FEC83C");
+
+ this.border_bottom_normal = new qx.renderer.border.Border(1, "solid", "#91A5BD");
+ this.border_bottom_normal.setTopWidth(0);
+
+ this.border_bottom_checked = new qx.renderer.border.Border(1, "solid", "#91A5BD");
+ this.border_bottom_checked.setTopWidth(0);
+ this.border_bottom_checked.setBottom(3, "solid", "#FEC83C");
+ },
+
+ initial : function(vTheme) {
+ return vTheme.initialFrom("atom");
+ },
+
+ state : function(vTheme, vStates) {
+ var vReturn;
+
+ if (vStates.checked) {
+ vReturn = {
+ backgroundColor : this.bgcolor_checked,
+ zIndex : 1,
+ paddingTop : 2,
+ paddingBottom : 4,
+ paddingLeft : 7,
+ paddingRight : 8,
+ border : vStates.barTop ? this.border_top_checked : this.border_bottom_checked,
+ marginTop : 0,
+ marginBottom : 0,
+ marginRight : -1,
+ marginLeft : -2
+ }
+
+ if (vStates.alignLeft) {
+ if (vStates.firstChild) {
+ vReturn.paddingLeft = 6;
+ vReturn.paddingRight = 7;
+ vReturn.marginLeft = 0;
+ }
+ }
+ else {
+ if (vStates.lastChild) {
+ vReturn.paddingLeft = 8;
+ vReturn.paddingRight = 5;
+ vReturn.marginRight = 0;
+ }
+ }
+ }
+ else {
+ vReturn = {
+ backgroundColor : vStates.over ? this.bgcolor_checked : this.bgcolor_normal,
+ zIndex : 0,
+ paddingTop : 2,
+ paddingBottom : 2,
+ paddingLeft : 5,
+ paddingRight : 6,
+ marginRight : 1,
+ marginLeft : 0
+ }
+
+ if (vStates.alignLeft) {
+ if (vStates.firstChild) {
+ vReturn.paddingLeft = 6;
+ vReturn.paddingRight = 5;
+ }
+ }
+ else {
+ if (vStates.lastChild) {
+ vReturn.paddingLeft = 6;
+ vReturn.paddingRight = 5;
+ vReturn.marginRight = 0;
+ }
+ }
+
+ if (vStates.barTop) {
+ vReturn.border = this.border_top_normal;
+ vReturn.marginTop = 3;
+ vReturn.marginBottom = 1;
+ }
+ else {
+ vReturn.border = this.border_bottom_normal;
+ vReturn.marginTop = 1;
+ vReturn.marginBottom = 3;
+ }
+ }
+
+ return vReturn;
+ }
+ },
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ FIELDSET
+ ---------------------------------------------------------------------------
+ */
+
+ "field-set" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("threedface");
+ },
+
+ initial : function(vTheme) {
+ return {
+ backgroundColor : this.bgcolor
+ }
+ }
+ },
+
+ "field-set-legend" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("threedface");
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("atom"), {
+ top : 1,
+ left : 10,
+ backgroundColor : this.bgcolor,
+ paddingRight : 3,
+ paddingLeft : 4,
+ marginRight: 10
+ });
+ }
+ },
+
+ "field-set-frame" : {
+ initial : function(vTheme) {
+ return {
+ top : 8,
+ left : 2,
+ right : 2,
+ bottom : 2,
+ paddingTop : 12,
+ paddingRight : 9,
+ paddingBottom : 12,
+ paddingLeft : 9,
+ border : qx.renderer.border.BorderPresets.getInstance().groove
+ }
+ }
+ },
+
+ "check-box-field-set-legend" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.ColorObject("threedface");
+ },
+
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("atom"), {
+ top : 1,
+ left : 10,
+ backgroundColor : this.bgcolor,
+ paddingRight : 3
+ });
+ }
+ },
+
+ "radio-button-field-set-legend" : {
+ initial : function(vTheme) {
+ return vTheme.initialFrom("check-box-field-set-legend");
+ }
+ },
+
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ SPINNER
+ ---------------------------------------------------------------------------
+ */
+
+ "spinner" : {
+ setup : function() {
+ this.bgcolor = new qx.renderer.color.Color("white");
+ },
+
+ initial : function(vTheme) {
+ return {
+ width : 60,
+ height : 22,
+ border : qx.renderer.border.BorderPresets.getInstance().inset,
+ backgroundColor : this.bgcolor
+ }
+ }
+ },
+
+ "spinner-field" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("text-field"), {
+ width : "1*",
+ border : qx.renderer.border.BorderPresets.getInstance().none
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return vTheme.stateFrom("text-field", vStates);
+ }
+ },
+
+ "spinner-button-up" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("image"), {
+ height: "1*",
+ width: 16,
+ backgroundColor: new qx.renderer.color.ColorObject("threedface")
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return qx.lang.Object.mergeWith(vTheme.stateFrom("button", vStates), {
+ paddingTop : 0,
+ paddingRight : 0,
+ paddingBottom: 0,
+ paddingLeft : 3
+ });
+ }
+ },
+
+ "spinner-button-down" : {
+ initial : function(vTheme) {
+ return qx.lang.Object.mergeWith(vTheme.initialFrom("image"), {
+ height: "1*",
+ width: 16,
+ backgroundColor: new qx.renderer.color.ColorObject("threedface")
+ });
+ },
+
+ state : function(vTheme, vStates) {
+ return qx.lang.Object.mergeWith(vTheme.stateFrom("button", vStates), {
+ paddingTop : 1,
+ paddingRight : 0,
+ paddingBottom: 0,
+ paddingLeft : 3
+ });
+ }
+ },
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ COLORSELECTOR
+ ---------------------------------------------------------------------------
+ */
+
+ "colorselector" : {
+ setup : function() {
+ this.border = qx.renderer.border.BorderPresets.getInstance().outset;
+ },
+
+ initial : function(vTheme) {
+ return {
+ border : this.border,
+ width: "auto",
+ height: "auto"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+
+ }
+ },
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ DATECHOOSER
+ ---------------------------------------------------------------------------
+ */
+
+ "datechooser-toolbar-button" : {
+ setup : function() {
+ this.bgcolor_default = new qx.renderer.color.ColorObject("buttonface");
+ this.bgcolor_left = new qx.renderer.color.Color("#FFF0C9");
+
+ this.border_pressed = qx.renderer.border.BorderPresets.getInstance().thinInset;
+ this.border_over = qx.renderer.border.BorderPresets.getInstance().thinOutset;
+ this.border_default = null;
+
+ this.checked_background = "static/image/dotted_white.gif";
+ },
+
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ spacing : 4,
+ width : "auto",
+ verticalChildrenAlign : "middle"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ var vReturn = {
+ backgroundColor : vStates.abandoned ? this.bgcolor_left : this.bgcolor_default,
+ backgroundImage : (vStates.checked && !vStates.over) ? this.checked_background : null
+ }
+
+ if (vStates.pressed || vStates.checked || vStates.abandoned) {
+ vReturn.border = this.border_pressed;
+ } else if (vStates.over) {
+ vReturn.border = this.border_over;
+ } else {
+ vReturn.border = this.border_default;
+ }
+
+ if (vStates.pressed || vStates.checked || vStates.abandoned) {
+ vReturn.paddingTop = 2;
+ vReturn.paddingRight = 0;
+ vReturn.paddingBottom = 0;
+ vReturn.paddingLeft = 2;
+ } else if (vStates.over) {
+ vReturn.paddingTop = vReturn.paddingBottom = 1;
+ vReturn.paddingLeft = vReturn.paddingRight = 1;
+ } else {
+ vReturn.paddingTop = vReturn.paddingBottom = 2;
+ vReturn.paddingLeft = vReturn.paddingRight = 2;
+ }
+
+ return vReturn;
+ }
+ },
+
+
+ "datechooser-monthyear" : {
+ setup : function() {
+ this.font = new qx.renderer.font.Font(13, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ },
+
+ initial : function(vTheme) {
+ return {
+ font : this.font,
+ textAlign: "center",
+ verticalAlign: "middle"
+ }
+ }
+ },
+
+
+ "datechooser-datepane" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border(1, "solid", "gray");
+ this.bgcolor = new qx.renderer.color.ColorObject("window");
+ },
+
+ initial : function(vTheme) {
+ return {
+ border : this.border,
+ backgroundColor : this.bgcolor
+ }
+ }
+ },
+
+
+ "datechooser-weekday" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border;
+ this.border.set({ bottomColor:"gray", bottomStyle :"solid", bottomWidth:1 });
+ this.color = new qx.renderer.color.ColorObject("window");
+ this.bgcolor = new qx.renderer.color.ColorObject("#6285BA");
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ this.font.setBold(true);
+ },
+
+ initial : function(vTheme) {
+ return {
+ border : this.border,
+ font : this.font,
+ textAlign : "center"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ color : vStates.weekend ? this.bgcolor : this.color,
+ backgroundColor : vStates.weekend ? this.color : this.bgcolor
+ }
+ }
+
+ },
+
+
+ "datechooser-day" : {
+ setup : function() {
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+
+ this.selectedColor = new qx.renderer.color.ColorObject("highlightText");
+ this.selectedBgColor = new qx.renderer.color.ColorObject("highlight");
+ this.color = new qx.renderer.color.ColorObject("windowText");
+ this.otherMonthColor = new qx.renderer.color.ColorObject("grayText");
+
+ this.transparentBorder = new qx.renderer.border.Border(1, "none");
+ },
+
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ border : this.border,
+ color : this.color,
+ font : this.font,
+ textAlign : "center",
+ verticalAlign: "middle",
+ selectable: false
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ border : vStates.today ? qx.renderer.border.BorderPresets.getInstance().black : this.transparentBorder,
+ color : vStates.selected ? this.selectedColor :
+ (vStates.otherMonth ? this.otherMonthColor : this.color),
+ backgroundColor : vStates.selected ? this.selectedBgColor : null
+ }
+ }
+ },
+
+ "datechooser-week" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border;
+ this.border.set({ rightColor:"gray", rightStyle :"solid", rightWidth:1 });
+ this.headerBorder = new qx.renderer.border.Border;
+ this.headerBorder.set({ rightColor:"gray", rightStyle :"solid", rightWidth:1,
+ bottomColor:"gray", bottomStyle :"solid", bottomWidth:1 });
+ this.color = new qx.renderer.color.ColorObject("#6285BA");
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ },
+
+ initial : function(vTheme) {
+ return {
+ border : this.border,
+ font : this.font,
+ color: this.color,
+ paddingLeft : 2
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ border : vStates.header ? this.headerBorder : this.border
+ }
+ }
+ },
+
+
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ TABLE
+ ---------------------------------------------------------------------------
+ */
+
+ "table-focus-statusbar" : {
+ setup : function() {
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ this.border = new qx.renderer.border.Border;
+ this.border.set({ topColor:"threedshadow", topStyle :"solid", topWidth:1 });
+ },
+
+ initial : function(vTheme) {
+ return {
+ font: this.font,
+ border: this.border,
+ paddingLeft: 2,
+ paddingRight: 2
+ }
+ }
+ },
+
+
+ "table-focus-indicator" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border(3, "solid", "#b3d9ff");
+ this.blurBorder = new qx.renderer.border.Border(3, "solid", "#c5c8ca");
+ this.editingBorder = new qx.renderer.border.Border(2, "solid", "#b3d9ff");
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ border : vStates.editing ? this.editingBorder : (vStates.tableHasFocus ? this.border : this.blurBorder)
+ }
+ }
+ },
+
+
+ "table-editor-textfield" : {
+ setup : function() {
+ this.font = new qx.renderer.font.Font(11, '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif');
+ },
+
+ initial : function(vTheme) {
+ return {
+ font: this.font,
+ border: qx.renderer.border.BorderPresets.getInstance().none,
+ paddingLeft: 2,
+ paddingRight: 2,
+ paddingTop: 0,
+ paddingBottom: 0
+ }
+ }
+ },
+
+ "table-header-cell" : {
+ setup : function() {
+ this.border = new qx.renderer.border.Border;
+ this.border.set({ rightColor:"#d6d2c2", rightStyle :"solid", rightWidth:1,
+ bottomColor:"#d6d2c2", bottomStyle :"solid", bottomWidth:2 });
+
+ this.mouseOverBorder = new qx.renderer.border.Border;
+ this.mouseOverBorder.set({ rightColor:"#d6d2c2", rightStyle :"solid", rightWidth:1,
+ bottomColor:"#F9B119", bottomStyle :"solid", bottomWidth:2 });
+
+ this.mouseOverBackground = new qx.renderer.color.ColorObject("white");
+ this.background = new qx.renderer.color.ColorObject("#ebeadb");
+ },
+
+ initial : function(vTheme) {
+ return {
+ cursor : "default",
+ border : this.border,
+ paddingLeft : 2,
+ paddingRight : 2,
+ spacing:2,
+ overflow:"hidden",
+ selectable: false,
+ backgroundColor:this.background,
+ iconPosition:"right",
+ verticalChildrenAlign:"middle"
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ backgroundColor : vStates.mouseover ? this.mouseOverBackground : this.background,
+ border : vStates.mouseover ? this.mouseOverBorder : this.border
+ }
+ }
+ },
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ SPLITPANE
+ ---------------------------------------------------------------------------
+ */
+
+ "splitpane" :
+ {
+ initial : function(vTheme)
+ {
+ return {
+ overflow : "hidden"
+ }
+ }
+ },
+
+ "splitpane-glasspane" :
+ {
+ setup : function() {
+ this.background = new qx.renderer.color.ColorObject("threedshadow");
+ },
+
+ initial : function(vTheme)
+ {
+ return {
+ zIndex : 1e7,
+ backgroundColor : this.background
+ }
+ },
+
+ state : function(vTheme, vStates) {
+ return {
+ opacity : vStates.visible ? 0.2 : 0
+ }
+ }
+ },
+
+ "splitpane-splitter" :
+ {
+ initial : function(vTheme) {
+ return {
+ backgroundColor : "threedface"
+ }
+ },
+
+ state : function(vTheme, vStates)
+ {
+ return {
+ cursor : vStates.horizontal ? "col-resize" : "row-resize"
+ };
+ }
+ },
+
+ "splitpane-slider" :
+ {
+ initial : function(vTheme)
+ {
+ return {
+ opacity: 0.5,
+ zIndex : 1e8
+ }
+ },
+
+ state : function(vTheme, vStates)
+ {
+ return {
+ backgroundColor: vStates.dragging ? "threeddarkshadow" : "threedface"
+ }
+ }
+ },
+
+ "splitpane-knob" :
+ {
+ state : function(vTheme, vStates)
+ {
+ var vReturn = {
+ opacity: vStates.dragging ? 0.5 : 1.0
+ }
+
+ if (vStates.horizontal)
+ {
+ vReturn.top = "33%";
+ vReturn.left = null;
+ vReturn.marginLeft = -6;
+ vReturn.marginTop = 0;
+ vReturn.cursor = "col-resize";
+ }
+ else if (vStates.vertical)
+ {
+ vReturn.top = null;
+ vReturn.left = "33%";
+ vReturn.marginTop = -6;
+ vReturn.marginLeft = 0;
+ vReturn.cursor = "row-resize";
+ }
+
+ return vReturn;
+ }
+ }
+
+
+
+
+ /*
+ ---------------------------------------------------------------------------
+ END
+ ---------------------------------------------------------------------------
+ */
+}, qx.Super.prototype._appearances);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.AppearanceManager.getInstance().registerAppearanceTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/System.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/System.js
new file mode 100644
index 0000000000..54d3d996a3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/System.js
@@ -0,0 +1,54 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(theme_color)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.color.System", qx.renderer.theme.ColorTheme,
+function() {
+ qx.renderer.theme.ColorTheme.call(this, "Operating System Default");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ColorManager.getInstance().registerColorTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsClassic.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsClassic.js
new file mode 100644
index 0000000000..1a5d32914b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsClassic.js
@@ -0,0 +1,98 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(theme_color)
+
+************************************************************************ */
+
+
+qx.OO.defineClass("qx.theme.color.WindowsClassic", qx.renderer.theme.ColorTheme,
+function() {
+ qx.renderer.theme.ColorTheme.call(this, "Windows Classic");
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFINE COLORS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._colors = qx.lang.Object.carefullyMergeWith({
+ activeborder : [ 212,208,200 ],
+ activecaption : [ 10,36,106 ],
+ appworkspace : [ 128,128,128 ],
+ background : [ 58,110,165 ],
+ buttonface : [ 212,208,200 ],
+ buttonhighlight : [ 255,255,255 ],
+ buttonshadow : [ 128,128,128 ],
+ buttontext : [ 0,0,0 ],
+ captiontext : [ 255,255,255 ],
+ graytext : [ 128,128,128 ],
+ highlight : [ 10,36,106 ],
+ highlighttext : [ 255,255,255 ],
+ inactiveborder : [ 212,208,200 ],
+ inactivecaption : [ 128,128,128 ],
+ inactivecaptiontext : [ 212,208,200 ],
+ infobackground : [ 255,255,225 ],
+ infotext : [ 0,0,0 ],
+ menu : [ 212,208,200 ],
+ menutext : [ 0,0,0 ],
+ scrollbar : [ 212,208,200 ],
+ threeddarkshadow : [ 64,64,64 ],
+ threedface : [ 212,208,200 ],
+ threedhighlight : [ 255,255,255 ],
+ threedlightshadow : [ 212,208,200 ],
+ threedshadow : [ 128,128,128 ],
+ window : [ 255,255,255 ],
+ windowframe : [ 0,0,0 ],
+ windowtext : [ 0,0,0 ]
+}, qx.Super.prototype._colors);
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ColorManager.getInstance().registerColorTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaBlue.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaBlue.js
new file mode 100644
index 0000000000..a7737e8422
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaBlue.js
@@ -0,0 +1,96 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(theme_color)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.color.WindowsLunaBlue", qx.renderer.theme.ColorTheme,
+function() {
+ qx.renderer.theme.ColorTheme.call(this, "Windows Luna Blue");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFINE COLORS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._colors = qx.lang.Object.carefullyMergeWith({
+ activeborder : [ 212,208,200 ],
+ activecaption : [ 0,84,227 ],
+ appworkspace : [ 128,128,128 ],
+ background : [ 0,78,152 ],
+ buttonface : [ 236,233,216 ],
+ buttonhighlight : [ 255,255,255 ],
+ buttonshadow : [ 172,168,153 ],
+ buttontext : [ 0,0,0 ],
+ captiontext : [ 255,255,255 ],
+ graytext : [ 172,168,153 ],
+ highlight : [ 49,106,197 ],
+ highlighttext : [ 255,255,255 ],
+ inactiveborder : [ 212,208,200 ],
+ inactivecaption : [ 122,150,223 ],
+ inactivecaptiontext : [ 216,228,248 ],
+ infobackground : [ 255,255,225 ],
+ infotext : [ 0,0,0 ],
+ menu : [ 255,255,255 ],
+ menutext : [ 0,0,0 ],
+ scrollbar : [ 212,208,200 ],
+ threeddarkshadow : [ 113,111,100 ],
+ threedface : [ 236,233,216 ],
+ threedhighlight : [ 255,255,255 ],
+ threedlightshadow : [ 241,239,226 ],
+ threedshadow : [ 172,168,153 ],
+ window : [ 255,255,255 ],
+ windowframe : [ 0,0,0 ],
+ windowtext : [ 0,0,0 ]
+}, qx.Super.prototype._colors);
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ColorManager.getInstance().registerColorTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaGreen.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaGreen.js
new file mode 100644
index 0000000000..b6af5d25f1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaGreen.js
@@ -0,0 +1,94 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(theme_color)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.color.WindowsLunaGreen", qx.renderer.theme.ColorTheme,
+function() {
+ qx.renderer.theme.ColorTheme.call(this, "Windows Luna Green");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFINE COLORS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._colors = qx.lang.Object.carefullyMergeWith({
+ activeborder : [ 212,208,200 ],
+ activecaption : [ 139,161,105 ],
+ appworkspace : [ 128,128,128 ],
+ background : [ 157,172,189 ],
+ buttonface : [ 236,233,216 ],
+ buttonhighlight : [ 255,255,255 ],
+ buttonshadow : [ 172,168,153 ],
+ buttontext : [ 0,0,0 ],
+ captiontext : [ 255,255,255 ],
+ graytext : [ 172,168,153 ],
+ highlight : [ 147,160,112 ],
+ highlighttext : [ 255,255,255 ],
+ inactiveborder : [ 212,208,200 ],
+ inactivecaption : [ 212,214,186 ],
+ inactivecaptiontext : [ 255,255,255 ],
+ infobackground : [ 255,255,225 ],
+ infotext : [ 0,0,0 ],
+ menu : [ 255,255,255 ],
+ menutext : [ 0,0,0 ],
+ scrollbar : [ 212,208,200 ],
+ threeddarkshadow : [ 113,111,100 ],
+ threedface : [ 236,233,216 ],
+ threedhighlight : [ 255,255,255 ],
+ threedlightshadow : [ 241,239,226 ],
+ threedshadow : [ 172,168,153 ],
+ window : [ 255,255,255 ],
+ windowframe : [ 0,0,0 ],
+ windowtext : [ 0,0,0 ]
+}, qx.Super.prototype._colors);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ColorManager.getInstance().registerColorTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaSilver.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaSilver.js
new file mode 100644
index 0000000000..3ccb52fd9f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsLunaSilver.js
@@ -0,0 +1,94 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(theme_color)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.color.WindowsLunaSilver", qx.renderer.theme.ColorTheme,
+function() {
+ qx.renderer.theme.ColorTheme.call(this, "Windows Luna Silver");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFINE COLORS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._colors = qx.lang.Object.carefullyMergeWith({
+ activeborder : [ 212,208,200 ],
+ activecaption : [ 192,192,192 ],
+ appworkspace : [ 128,128,128 ],
+ background : [ 88,87,104 ],
+ buttonface : [ 224,223,227 ],
+ buttonhighlight : [ 255,255,255 ],
+ buttonshadow : [ 157,157,161 ],
+ buttontext : [ 0,0,0 ],
+ captiontext : [ 14,16,16 ],
+ graytext : [ 172,168,153 ],
+ highlight : [ 178,180,191 ],
+ highlighttext : [ 0,0,0 ],
+ inactiveborder : [ 212,208,200 ],
+ inactivecaption : [ 255,255,255 ],
+ inactivecaptiontext : [ 162,161,161 ],
+ infobackground : [ 255,255,225 ],
+ infotext : [ 0,0,0 ],
+ menu : [ 255,255,255 ],
+ menutext : [ 0,0,0 ],
+ scrollbar : [ 212,208,200 ],
+ threeddarkshadow : [ 113,111,100 ],
+ threedface : [ 224,223,227 ],
+ threedhighlight : [ 255,255,255 ],
+ threedlightshadow : [ 241,239,226 ],
+ threedshadow : [ 157,157,161 ],
+ window : [ 255,255,255 ],
+ windowframe : [ 0,0,0 ],
+ windowtext : [ 0,0,0 ]
+}, qx.Super.prototype._colors);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ColorManager.getInstance().registerColorTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsRoyale.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsRoyale.js
new file mode 100644
index 0000000000..b268b221c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/color/WindowsRoyale.js
@@ -0,0 +1,95 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(theme_color)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.color.WindowsRoyale", qx.renderer.theme.ColorTheme,
+function() {
+ qx.renderer.theme.ColorTheme.call(this, "Windows Royale");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFINE COLORS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._colors = qx.lang.Object.carefullyMergeWith({
+ activeborder : [ 212,208,200 ],
+ activecaption : [ 51,94,168 ],
+ appworkspace : [ 128,128,128 ],
+ background : [ 0,0,64 ],
+ buttonface : [ 235,233,237 ],
+ buttonhighlight : [ 255,255,255 ],
+ buttonshadow : [ 167,166,170 ],
+ buttontext : [ 0,0,0 ],
+ captiontext : [ 255,255,255 ],
+ graytext : [ 167,166,170 ],
+ highlight : [ 51,94,168 ],
+ highlighttext : [ 255,255,255 ],
+ inactiveborder : [ 212,208,200 ],
+ inactivecaption : [ 111,161,217 ],
+ inactivecaptiontext : [ 255,255,255 ],
+ infobackground : [ 255,255,225 ],
+ infotext : [ 0,0,0 ],
+ menu : [ 255,255,255 ],
+ menutext : [ 0,0,0 ],
+ scrollbar : [ 212,208,200 ],
+ threeddarkshadow : [ 133,135,140 ],
+ threedface : [ 235,233,237 ],
+ threedhighlight : [ 255,255,255 ],
+ threedlightshadow : [ 220,223,228 ],
+ threedshadow : [ 167,166,170 ],
+ window : [ 255,255,255 ],
+ windowframe : [ 0,0,0 ],
+ windowtext : [ 0,0,0 ]
+}, qx.Super.prototype._colors);
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ColorManager.getInstance().registerColorTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/CrystalSvg.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/CrystalSvg.js
new file mode 100644
index 0000000000..52dd581b52
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/CrystalSvg.js
@@ -0,0 +1,68 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(theme_icon)
+#resource(images:icon/crystalsvg)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.icon.CrystalSvg", qx.renderer.theme.IconTheme,
+function() {
+ qx.renderer.theme.IconTheme.call(this, "Crystal SVG");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("imageUri", qx.Settings.getValueOfClass("qx.manager.object.AliasManager", "resourceUri") + "/icon/crystalsvg");
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ImageManager.getInstance().registerIconTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/Nuvola.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/Nuvola.js
new file mode 100644
index 0000000000..da55824fee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/icon/Nuvola.js
@@ -0,0 +1,66 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(theme_icon)
+#resource(images:icon/nuvola)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.icon.Nuvola", qx.renderer.theme.IconTheme,
+function() {
+ qx.renderer.theme.IconTheme.call(this, "Nuvola");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("imageUri", qx.Settings.getValueOfClass("qx.manager.object.AliasManager", "resourceUri") + "/icon/nuvola");
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ImageManager.getInstance().registerIconTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/widget/Windows.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/widget/Windows.js
new file mode 100644
index 0000000000..c94fd1d418
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/theme/widget/Windows.js
@@ -0,0 +1,68 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(theme_widget)
+#resource(images:widget/windows)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.theme.widget.Windows", qx.renderer.theme.WidgetTheme,
+function() {
+ qx.renderer.theme.WidgetTheme.call(this, "Windows");
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("imageUri", qx.Settings.getValueOfClass("qx.manager.object.AliasManager", "resourceUri") + "/widget/windows");
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REGISTER TO MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.manager.object.ImageManager.getInstance().registerWidgetTheme(qx.Class);
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Range.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Range.js
new file mode 100644
index 0000000000..848550b7ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Range.js
@@ -0,0 +1,87 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * This manager is used by all objects which needs ranges like qx.ui.form.Spinner, ...
+ *
+ * @event change {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.type.Range", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+});
+
+/** current value of the Range object */
+qx.OO.addProperty({ name : "value", type : "number", defaultValue : 0 });
+
+/** minimal value of the Range object */
+qx.OO.addProperty({ name : "min", type : "number", defaultValue : 0 });
+
+/** maximal value of the Range object */
+qx.OO.addProperty({ name : "max", type : "number", defaultValue : 100 });
+
+/** Step size for increments/decrements of the value property */
+qx.OO.addProperty({ name : "step", type : "number", defaultValue : 1 });
+
+qx.Proto._checkValue = function(propValue) {
+ return Math.max(this.getMin(), Math.min(this.getMax(), Math.floor(propValue)));
+}
+
+qx.Proto._modifyValue = function(propValue, propOldValue, propData)
+{
+ if (this.hasEventListeners("change")) {
+ this.dispatchEvent(new qx.event.type.Event("change"), true);
+ }
+
+ return true;
+}
+
+qx.Proto._checkMax = function(propValue) {
+ return Math.floor(propValue);
+}
+
+qx.Proto._modifyMax = function(propValue, propOldValue, propData)
+{
+ this.setValue(Math.min(this.getValue(), propValue));
+
+ if (this.hasEventListeners("change")) {
+ this.dispatchEvent(new qx.event.type.Event("change"), true);
+ }
+
+ return true;
+}
+
+qx.Proto._checkMin = function(propValue) {
+ return Math.floor(propValue);
+}
+
+qx.Proto._modifyMin = function(propValue, propOldValue, propData)
+{
+ this.setValue(Math.max(this.getValue(), propValue));
+
+ if (this.hasEventListeners("change")) {
+ this.dispatchEvent(new qx.event.type.Event("change"), true);
+ }
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Selection.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Selection.js
new file mode 100644
index 0000000000..61f0be7ef1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Selection.js
@@ -0,0 +1,120 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+
+************************************************************************ */
+
+/*!
+ Helper for qx.manager.selection.SelectionManager, contains data for selections
+*/
+qx.OO.defineClass("qx.type.Selection", qx.core.Object,
+function(vManager)
+{
+ qx.core.Object.call(this);
+
+ this._manager = vManager;
+ this.removeAll();
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(oItem) {
+ this._storage[this.getItemHashCode(oItem)] = oItem;
+}
+
+qx.Proto.remove = function(oItem) {
+ delete this._storage[this.getItemHashCode(oItem)];
+}
+
+qx.Proto.removeAll = function() {
+ this._storage = {};
+}
+
+qx.Proto.contains = function(oItem) {
+ return this.getItemHashCode(oItem) in this._storage;
+}
+
+qx.Proto.toArray = function()
+{
+ var res = [];
+
+ for (var key in this._storage) {
+ res.push(this._storage[key]);
+ }
+
+ return res;
+}
+
+qx.Proto.getFirst = function()
+{
+ for (var key in this._storage) {
+ return this._storage[key];
+ }
+}
+
+qx.Proto.getChangeValue = function()
+{
+ var sb = [];
+
+ for (var hc in this._storage) {
+ sb.push(hc);
+ }
+
+ sb.sort();
+ return sb.join(";");
+}
+
+qx.Proto.getItemHashCode = function(oItem) {
+ return this._manager.getItemHashCode(oItem);
+}
+
+qx.Proto.isEmpty = function() {
+ return qx.lang.Object.isEmpty(this._storage);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._storage = null;
+ this._manager = null;
+
+ qx.core.Object.prototype.dispose.call(this);
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/StringBuilder.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/StringBuilder.js
new file mode 100644
index 0000000000..c31102c8b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/StringBuilder.js
@@ -0,0 +1,146 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#require(qx.sys.Client)
+
+************************************************************************ */
+
+/**
+ * A string builder class
+ * <p>
+ * += operator is faster in Firefox and Opera.
+ * Array push/join is faster in Internet Explorer
+ * </p><p>
+ * Even with this wrapper, which costs some time, this is
+ * faster in Firefox than the alternative Array concat in
+ * all browsers (which is in relation to IE's performance issues
+ * only marginal). The IE performance loss caused by this
+ * wrapper is not relevant.
+ * </p><p>
+ * So this class seems to be the best compromise to handle
+ * string concatination.</p>
+ */
+qx.OO.defineClass("qx.type.StringBuilder", qx.core.Object,
+function()
+{
+ qx.core.Object.call(this);
+
+ this.init();
+ this.add.apply(this, arguments);
+});
+
+
+/**
+ * Resets the contents of the Stringbuilder
+ * equivalent to <pre>str = ""; </pre>
+ */
+qx.Proto.clear = function() {}
+
+/**
+ * Returns the contents of the concatenated string
+ *
+ * @return (string) string content
+ */
+qx.Proto.get = function() {}
+
+/**
+ * Append a variable number of string arguments
+ *
+ * @param varargs (string) variable number os strings to be added
+ */
+qx.Proto.add = function(varargs) {}
+
+/**
+ * Initializes the contents of the Stringbuilder
+ * equivalent to <pre>str = ""; </pre>
+ */
+qx.Proto.init = function() {}
+
+/** Destructor */
+qx.Proto.dispose = function() {}
+
+/**
+ * Returns the contents of the concatenated string
+ *
+ * @return (string) string content
+ */
+qx.Proto.toString = function() {}
+
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.clear = function() {
+ this._array = [];
+ }
+
+ qx.Proto.get = function() {
+ return this._array.join("");
+ }
+
+ qx.Proto.add = function() {
+ this._array.push.apply(this._array, arguments);
+ }
+
+ qx.Proto.init = function() {
+ this._array = [];
+ }
+
+ qx.Proto.dispose = function()
+ {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._array = null;
+
+ qx.core.Object.prototype.dispose.call(this);
+ }
+}
+else
+{
+ qx.Proto.clear = function() {
+ this._string = "";
+ }
+
+ qx.Proto.get = function() {
+ return this._string;
+ }
+
+ qx.Proto.add = function() {
+ this._string += Array.prototype.join.call(arguments, "");
+ }
+
+ qx.Proto.init = function() {
+ this._string = "";
+ }
+
+ qx.Proto.dispose = function()
+ {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._string = null;
+
+ qx.core.Object.prototype.dispose.call(this);
+ }
+}
+
+qx.Proto.toString = qx.Proto.get;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Version.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Version.js
new file mode 100755
index 0000000000..e0ce4ec53a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/type/Version.js
@@ -0,0 +1,118 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/*!
+ This class contains a version string and can extract
+ major, minor and revision flags from this string. It can also
+ compare a incoming version object with the stored version string
+ and checks if this version is smaller or identical than the stored
+ one.
+
+ Flash detection and embed (http://blog.deconcept.com/flashobject) (non qooxdoo Version by Geoff Stearns)
+ Copyright 2005 Geoff Stearns. Released under the MIT License (http://www.opensource.org/licenses/mit-license.php).
+
+ Modified for qooxdoo by Sebastian Werner. Based on version 1.2.3. Relicensed under LGPL in assent of Geoff Stearns.
+*/
+
+qx.OO.defineClass("qx.type.Version", qx.core.Object,
+function(arrVersion)
+{
+ qx.core.Object.call(this);
+
+ if (typeof arrVersion === "string") {
+ arrVersion = arrVersion.split(".");
+ }
+
+ this._major = parseInt(arrVersion[0]) || 0;
+ this._minor = parseInt(arrVersion[1]) || 0;
+ this._rev = parseInt(arrVersion[2]) || 0;
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA FIELDS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._major = 0;
+qx.Proto._minor = 0;
+qx.Proto._rev = 0;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ USER VERSION ACCESS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.versionIsValid = function(fv)
+{
+ if (this.getMajor() < fv.getMajor()) return false;
+ if (this.getMajor() > fv.getMajor()) return true;
+
+ if (this.getMinor() < fv.getMinor()) return false;
+ if (this.getMinor() > fv.getMinor()) return true;
+
+ if (this.getRev() < fv.getRev()) return false;
+
+ return true;
+}
+
+qx.Proto.getMajor = function() {
+ return this._major;
+}
+
+qx.Proto.getMinor = function() {
+ return this._minor;
+}
+
+qx.Proto.getRev = function() {
+ return this._rev;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._major = this._minor = this._rev = null;
+
+ qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Atom.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Atom.js
new file mode 100644
index 0000000000..5a1c0ae97f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Atom.js
@@ -0,0 +1,397 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#optional(qx.ui.embed.Flash)
+
+************************************************************************ */
+
+/*!
+ A multi-prupose widget used by many more complex widgets.
+
+ The intended purpose of qx.ui.basic.Atom is to easily align the common icon-text combination in different ways.
+ This is useful for all types of buttons, menuentires, tooltips, ...
+*/
+qx.OO.defineClass("qx.ui.basic.Atom", qx.ui.layout.BoxLayout,
+function(vLabel, vIcon, vIconWidth, vIconHeight, vFlash)
+{
+ qx.ui.layout.BoxLayout.call(this);
+
+ if (this.getOrientation() == null) {
+ this.setOrientation("horizontal");
+ }
+
+ // Prohibit selection
+ this.setSelectable(false);
+
+ // Disable flex support
+ this.getLayoutImpl().setEnableFlexSupport(false);
+
+ // Apply constructor arguments
+ if (qx.util.Validation.isValidString(vLabel)) {
+ this.setLabel(vLabel);
+ } else {
+ this.setLabel("");
+ }
+
+ // Simple flash wrapper
+ if (qx.OO.isAvailable("qx.ui.embed.Flash") && qx.util.Validation.isValidString(vFlash) && qx.util.Validation.isValidNumber(vIconWidth) && qx.util.Validation.isValidNumber(vIconHeight) && qx.ui.embed.Flash.getPlayerVersion().getMajor() > 0)
+ {
+ this._flashMode = true;
+
+ this.setIcon(vFlash);
+
+ // flash needs explicit dimensions!
+ this.setIconWidth(vIconWidth);
+ this.setIconHeight(vIconHeight);
+ }
+ else if (qx.util.Validation.isValidString(vIcon))
+ {
+ this.setIcon(vIcon);
+
+ if (qx.util.Validation.isValidNumber(vIconWidth)) {
+ this.setIconWidth(vIconWidth);
+ }
+
+ if (qx.util.Validation.isValidNumber(vIconHeight)) {
+ this.setIconHeight(vIconHeight);
+ }
+ }
+});
+
+qx.ui.basic.Atom.SHOW_LABEL = "label";
+qx.ui.basic.Atom.SHOW_ICON = "icon";
+qx.ui.basic.Atom.SHOW_BOTH = "both";
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The label/caption/text of the qx.ui.basic.Atom instance
+*/
+qx.OO.addProperty({ name : "label", type : "string" });
+
+/*!
+ Any URI String supported by qx.ui.basic.Image to display a icon
+*/
+qx.OO.addProperty({ name : "icon", type : "string" });
+
+/**
+ * Any URI String supported by qx.ui.basic.Image to display a disabled icon.
+ * <p>
+ * If not set the normal icon is shown transparently.
+ */
+qx.OO.addProperty({ name : "disabledIcon", type : "string" });
+
+/*!
+ Configure the visibility of the sub elements/widgets.
+ Possible values: both, text, icon, none
+*/
+qx.OO.addProperty({ name : "show", type : "string", defaultValue : "both", possibleValues : [ "both", "label", "icon", "none", null ] });
+
+/*!
+ The position of the icon in relation to the text.
+ Only useful/needed if text and icon is configured and 'show' is configured as 'both' (default)
+*/
+qx.OO.addProperty({ name : "iconPosition", type : "string", defaultValue : "left", possibleValues : [ "top", "right", "bottom", "left" ] });
+
+/*!
+ The width of the icon.
+ If configured, this makes qx.ui.basic.Atom a little bit faster as it does not need to wait until the image loading is finished.
+*/
+qx.OO.addProperty({ name : "iconWidth", type : "number" });
+
+/*!
+ The height of the icon
+ If configured, this makes qx.ui.basic.Atom a little bit faster as it does not need to wait until the image loading is finished.
+*/
+qx.OO.addProperty({ name : "iconHeight", type : "number" });
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "atom" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SUB WIDGETS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._flashMode = false;
+
+qx.Proto._labelObject = null;
+qx.Proto._iconObject = null;
+
+qx.Proto._createLabel = function()
+{
+ var l = this._labelObject = new qx.ui.basic.Label(this.getLabel());
+
+ l.setAnonymous(true);
+ l.setEnabled(this.getEnabled());
+ l.setSelectable(false);
+
+ this.addAt(l, this._iconObject ? 1 : 0);
+}
+
+qx.Proto._createIcon = function()
+{
+ if (this._flashMode && qx.OO.isAvailable("qx.ui.embed.Flash"))
+ {
+ var i = this._iconObject = new qx.ui.embed.Flash(this.getIcon());
+ }
+ else
+ {
+ var i = this._iconObject = new qx.ui.basic.Image();
+ }
+
+ i.setAnonymous(true);
+
+ this._updateIcon();
+
+ this.addAt(i, 0);
+}
+
+qx.Proto._updateIcon = function() {
+ // NOTE: We have to check whether the properties "icon" and "disabledIcon"
+ // exist, because some child classes remove them.
+ if (this._iconObject && this.getIcon && this.getDisabledIcon) {
+ var disabledIcon = this.getDisabledIcon();
+ if (disabledIcon) {
+ if (this.getEnabled()) {
+ this._iconObject.setSource(this.getIcon());
+ } else {
+ this._iconObject.setSource(disabledIcon);
+ }
+ this._iconObject.setEnabled(true);
+ } else {
+ this._iconObject.setSource(this.getIcon());
+ this._iconObject.setEnabled(this.getEnabled());
+ }
+ }
+}
+
+qx.Proto.getLabelObject = function() {
+ return this._labelObject;
+}
+
+qx.Proto.getIconObject = function() {
+ return this._iconObject;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ this._updateIcon();
+
+ if (this._labelObject) {
+ this._labelObject.setEnabled(propValue);
+ }
+
+ return qx.ui.layout.BoxLayout.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+}
+
+qx.Proto._modifyIconPosition = function(propValue, propOldValue, propData)
+{
+ switch(propValue)
+ {
+ case "top":
+ case "bottom":
+ this.setOrientation("vertical");
+ this.setReverseChildrenOrder(propValue == "bottom");
+ break;
+
+ default:
+ this.setOrientation("horizontal");
+ this.setReverseChildrenOrder(propValue == "right");
+ break;
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShow = function(propValue, propOldValue, propData)
+{
+ this._handleIcon();
+ this._handleLabel();
+
+ return true;
+}
+
+qx.Proto._modifyLabel = function(propValue, propOldValue, propData)
+{
+ if (this._labelObject) {
+ this._labelObject.setHtml(propValue);
+ }
+
+ this._handleLabel();
+
+ return true;
+}
+
+qx.Proto._modifyIcon = function(propValue, propOldValue, propData)
+{
+ this._updateIcon();
+ this._handleIcon();
+
+ return true;
+}
+
+qx.Proto._modifyDisabledIcon = function(propValue, propOldValue, propData)
+{
+ this._updateIcon();
+ this._handleIcon();
+
+ return true;
+}
+
+qx.Proto._modifyIconWidth = function(propValue, propOldValue, propData)
+{
+ this._iconObject.setWidth(propValue);
+ return true;
+}
+
+qx.Proto._modifyIconHeight = function(propValue, propOldValue, propData)
+{
+ this._iconObject.setHeight(propValue);
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._iconIsVisible = false;
+qx.Proto._labelIsVisible = false;
+
+qx.Proto._handleLabel = function()
+{
+ switch(this.getShow())
+ {
+ case qx.ui.basic.Atom.SHOW_LABEL:
+ case qx.ui.basic.Atom.SHOW_BOTH:
+ this._labelIsVisible = qx.util.Validation.isValidString(this.getLabel());
+ break;
+
+ default:
+ this._labelIsVisible = false;
+ }
+
+ if (this._labelIsVisible)
+ {
+ this._labelObject ? this._labelObject.setDisplay(true) : this._createLabel();
+ }
+ else if (this._labelObject)
+ {
+ this._labelObject.setDisplay(false);
+ }
+}
+
+qx.Proto._handleIcon = function()
+{
+ switch(this.getShow())
+ {
+ case qx.ui.basic.Atom.SHOW_ICON:
+ case qx.ui.basic.Atom.SHOW_BOTH:
+ this._iconIsVisible = qx.util.Validation.isValidString(this.getIcon());
+ break;
+
+ default:
+ this._iconIsVisible = false;
+ }
+
+ if (this._iconIsVisible)
+ {
+ this._iconObject ? this._iconObject.setDisplay(true) : this._createIcon();
+ }
+ else if (this._iconObject)
+ {
+ this._iconObject.setDisplay(false);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLONE
+---------------------------------------------------------------------------
+*/
+
+// Omit recursive cloning
+qx.Proto._cloneRecursive = qx.util.Return.returnTrue;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._iconObject)
+ {
+ this._iconObject.dispose();
+ this._iconObject = null;
+ }
+
+ if (this._labelObject)
+ {
+ this._labelObject.dispose();
+ this._labelObject = null;
+ }
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/HorizontalSpacer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/HorizontalSpacer.js
new file mode 100644
index 0000000000..9db8f12064
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/HorizontalSpacer.js
@@ -0,0 +1,31 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.basic.HorizontalSpacer", qx.ui.basic.Terminator,
+function()
+{
+ qx.ui.basic.Terminator.call(this);
+
+ this.setWidth("1*");
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Image.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Image.js
new file mode 100644
index 0000000000..0cc25a9d5c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Image.js
@@ -0,0 +1,611 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#resource(core:static/image)
+
+************************************************************************ */
+
+/**
+ * This widget is for all images in qooxdoo projects.
+ *
+ * @event error {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.basic.Image", qx.ui.basic.Terminator,
+function(vSource, vWidth, vHeight)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ // Reset Alt and Title
+ this.setHtmlProperty("alt", "");
+ this.setHtmlProperty("title", "");
+
+ // Apply constructor arguments
+ this.setSource(qx.util.Validation.isValid(vSource) ? vSource : "static/image/blank.gif");
+
+ // Dimensions
+ this.setWidth(qx.util.Validation.isValid(vWidth) ? vWidth : "auto");
+ this.setHeight(qx.util.Validation.isValid(vHeight) ? vHeight : "auto");
+
+ // Prohibit selection
+ this.setSelectable(false);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The source uri of the image.
+*/
+qx.OO.addProperty({ name : "source", type : "string" });
+
+/*!
+ The assigned preloader instance of the image.
+*/
+qx.OO.addProperty({ name : "preloader", type : "object" });
+
+/*!
+ The loading status.
+
+ True if the image is loaded correctly. False if no image is loaded
+ or the one that should be loaded is currently loading or not available.
+*/
+qx.OO.addProperty({ name : "loaded", type : "boolean", defaultValue : false });
+
+/*!
+ Should the image be maxified in it's own container?
+*/
+qx.OO.addProperty({ name : "resizeToInner", type : "boolean", defaultValue : false });
+
+/*!
+ Appearance of the widget
+*/
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "image" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT MAPPERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onload = function() {
+ this.setLoaded(true);
+}
+
+qx.Proto._onerror = function()
+{
+ this.debug("Could not load: " + this.getSource());
+
+ this.setLoaded(false);
+
+ if (this.hasEventListeners("error")) {
+ this.dispatchEvent(new qx.event.type.Event("error"), true);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAYBLE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeAppear = function()
+{
+ var vSource = this.getSource();
+
+ if (qx.util.Validation.isValidString(vSource)) {
+ qx.manager.object.ImageManager.getInstance()._sources[vSource]++;
+ }
+
+ return qx.ui.basic.Terminator.prototype._beforeAppear.call(this);
+}
+
+qx.Proto._beforeDisappear = function()
+{
+ var vSource = this.getSource();
+
+ if (qx.util.Validation.isValidString(vSource))
+ {
+ if (qx.manager.object.ImageManager.getInstance()._sources[vSource] <= 1)
+ {
+ delete qx.manager.object.ImageManager.getInstance()._sources[vSource];
+ }
+ else
+ {
+ qx.manager.object.ImageManager.getInstance()._sources[vSource]--;
+ }
+ }
+
+ return qx.ui.basic.Terminator.prototype._beforeDisappear.call(this);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifySource = function(propValue, propOldValue, propData)
+{
+ if (propValue && typeof qx.manager.object.ImageManager.getInstance()._sources[propValue] === "undefined") {
+ qx.manager.object.ImageManager.getInstance()._sources[propValue] = 0;
+ }
+
+ if (propOldValue)
+ {
+ if (qx.manager.object.ImageManager.getInstance()._sources[propOldValue] <= 1)
+ {
+ delete qx.manager.object.ImageManager.getInstance()._sources[propOldValue];
+ }
+ else
+ {
+ qx.manager.object.ImageManager.getInstance()._sources[propOldValue]--;
+ }
+ }
+
+ if (this.isCreated())
+ {
+ if (propValue)
+ {
+ this.setPreloader(qx.manager.object.ImagePreloaderManager.getInstance().create(qx.manager.object.AliasManager.getInstance().resolvePath(propValue)));
+ }
+ else if (propOldValue)
+ {
+ this._resetContent();
+ this.setPreloader(null);
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._modifyPreloader = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ // remove event connection
+ propOldValue.removeEventListener("load", this._onload, this);
+ propOldValue.removeEventListener("error", this._onerror, this);
+ }
+
+ if (propValue)
+ {
+ // Register to image manager
+ qx.manager.object.ImageManager.getInstance().add(this);
+
+ // Omit here, otherwise the later setLoaded(true)
+ // will not be executed (prevent recursion)
+
+ // Changed: Use forceLoaded instead of setLoaded => should be faster
+ this.forceLoaded(false);
+
+ if (propValue.isErroneous())
+ {
+ this._onerror();
+ }
+ else if (propValue.isLoaded())
+ {
+ this.setLoaded(true);
+ }
+ else
+ {
+ propValue.addEventListener("load", this._onload, this);
+ propValue.addEventListener("error", this._onerror, this);
+ }
+ }
+ else
+ {
+ // Remove from image manager
+ qx.manager.object.ImageManager.getInstance().remove(this);
+
+ this.setLoaded(false);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyLoaded = function(propValue, propOldValue, propData)
+{
+ if (propValue && this.isCreated())
+ {
+ this._applyContent();
+ }
+ else if (!propValue)
+ {
+ this._invalidatePreferredInnerWidth();
+ this._invalidatePreferredInnerHeight();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyElement = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ if (!this._image)
+ {
+ try
+ {
+ // Create Image-Node
+ // Webkit has problems with "new Image". Maybe related to "new Function" with
+ // is also not working correctly.
+ if (qx.sys.Client.getInstance().isWebkit())
+ {
+ this._image = document.createElement("img");
+ }
+ else
+ {
+ this._image = new Image;
+ }
+
+ // Possible alternative for MSHTML for PNG images
+ // But it seems not to be faster
+ // this._image = document.createElement("div");
+
+ // this costs much performance, move setup to blank gif to error handling
+ // is this SSL save?
+ // this._image.src = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+
+ this._image.style.border = "0 none";
+ this._image.style.verticalAlign = "top";
+ }
+ catch(ex)
+ {
+ this.error("Failed while creating image #1", ex);
+ }
+
+ if (!qx.sys.Client.getInstance().isMshtml()) {
+ this._applyEnabled();
+ }
+ }
+
+ propValue.appendChild(this._image);
+ }
+
+ // call widget implmentation
+ qx.ui.basic.Terminator.prototype._modifyElement.call(this, propValue, propOldValue, propData);
+
+ if (propValue)
+ {
+ try
+ {
+ // initialisize preloader
+ var vSource = this.getSource();
+ if (qx.util.Validation.isValidString(vSource)) {
+ this.setPreloader(qx.manager.object.ImagePreloaderManager.getInstance().create(qx.manager.object.AliasManager.getInstance().resolvePath(vSource)));
+ }
+ }
+ catch(ex)
+ {
+ this.error("Failed while creating image #2", ex);
+ }
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLIENT OPTIMIZED MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._postApply = function()
+{
+ if (!this.getLoaded()) {
+ this._updateContent(qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif"));
+ return;
+ }
+
+ this._postApplyDimensions();
+ this._updateContent();
+}
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+ {
+ if (this._image) {
+ this._applyEnabled();
+ }
+
+ return qx.ui.basic.Terminator.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+ }
+
+ qx.Proto._updateContent = function(vSource)
+ {
+ var i = this._image;
+ var pl = this.getPreloader();
+
+ if (pl.getIsPng() && this.getEnabled())
+ {
+ i.src = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ i.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + (vSource || pl.getSource()) + "',sizingMethod='scale')";
+ }
+ else
+ {
+ i.src = vSource || pl.getSource();
+ i.style.filter = this.getEnabled() ? "" : "Gray() Alpha(Opacity=30)";
+ }
+ }
+
+ qx.Proto._resetContent = function()
+ {
+ var i = this._image;
+
+ i.src = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ i.style.filter = "";
+ }
+
+ qx.Proto._applyEnabled = qx.Proto._postApply;
+}
+else
+{
+ qx.Proto._updateContent = function(vSource) {
+ this._image.src = vSource || this.getPreloader().getSource();
+ }
+
+ qx.Proto._resetContent = function() {
+ this._image.src = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ }
+
+ qx.Proto._applyEnabled = function()
+ {
+ if (this._image)
+ {
+ var o = this.getEnabled() ? "" : 0.3;
+ var s = this._image.style;
+
+ s.opacity = s.KhtmlOpacity = s.MozOpacity = o;
+ }
+ }
+
+ qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+ {
+ if (this._image) {
+ this._applyEnabled();
+ }
+
+ return qx.ui.basic.Terminator.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS: INNER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computePreferredInnerWidth = function()
+{
+ if (this.getLoaded())
+ {
+ return this.getPreloader().getWidth();
+ }
+ else if (qx.util.Validation.isValidString(this.getSource()))
+ {
+ var vPreloader = qx.manager.object.ImagePreloaderManager.getInstance().get(qx.manager.object.AliasManager.getInstance().resolvePath(this.getSource()));
+
+ if (vPreloader && vPreloader.isLoaded()) {
+ return vPreloader.getWidth();
+ }
+ }
+
+ return 0;
+}
+
+qx.Proto._computePreferredInnerHeight = function()
+{
+ if (this.getLoaded())
+ {
+ return this.getPreloader().getHeight();
+ }
+ else if (qx.util.Validation.isValidString(this.getSource()))
+ {
+ var vPreloader = qx.manager.object.ImagePreloaderManager.getInstance().get(qx.manager.object.AliasManager.getInstance().resolvePath(this.getSource()));
+
+ if (vPreloader && vPreloader.isLoaded()) {
+ return vPreloader.getHeight();
+ }
+ }
+
+ return 0;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPLY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyContent = function()
+{
+ qx.ui.basic.Terminator.prototype._applyContent.call(this);
+
+ // Images load asyncron, so we need to force flushing here
+ // to get an up-to-date view when an image is loaded.
+ qx.ui.core.Widget.flushGlobalQueues();
+}
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._postApplyDimensions = function()
+ {
+ try
+ {
+ var vImageStyle = this._image.style;
+
+ if (this.getResizeToInner())
+ {
+ vImageStyle.pixelWidth = this.getInnerWidth();
+ vImageStyle.pixelHeight = this.getInnerHeight();
+ }
+ else
+ {
+ vImageStyle.pixelWidth = this.getPreferredInnerWidth();
+ vImageStyle.pixelHeight = this.getPreferredInnerHeight();
+ }
+ }
+ catch(ex)
+ {
+ this.error("postApplyDimensions failed", ex);
+ }
+ }
+}
+else
+{
+ qx.Proto._postApplyDimensions = function()
+ {
+ try
+ {
+ var vImageNode = this._image;
+
+ if (this.getResizeToInner())
+ {
+ vImageNode.width = this.getInnerWidth();
+ vImageNode.height = this.getInnerHeight();
+ }
+ else
+ {
+ vImageNode.width = this.getPreferredInnerWidth();
+ vImageNode.height = this.getPreferredInnerHeight();
+ }
+ }
+ catch(ex)
+ {
+ this.error("postApplyDimensions failed", ex);
+ }
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHANGES IN DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._changeInnerWidth = function(vNew, vOld)
+ {
+ if (this.getResizeToInner()) {
+ this._image.style.pixelWidth = vNew;
+ }
+ }
+
+ qx.Proto._changeInnerHeight = function(vNew, vOld)
+ {
+ if (this.getResizeToInner()) {
+ this._image.style.pixelHeight = vNew;
+ }
+ }
+}
+else
+{
+ qx.Proto._changeInnerWidth = function(vNew, vOld)
+ {
+ if (this.getResizeToInner()) {
+ this._image.width = vNew;
+ }
+ }
+
+ qx.Proto._changeInnerHeight = function(vNew, vOld)
+ {
+ if (this.getResizeToInner()) {
+ this._image.height = vNew;
+ }
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ var vPreloader = this.getPreloader();
+ if (vPreloader)
+ {
+ // remove event connection
+ vPreloader.removeEventListener("load", this._onload, this);
+ vPreloader.removeEventListener("error", this._onerror, this);
+
+ this.forcePreloader(null);
+ }
+
+ if (this._image)
+ {
+ // Remove leaking filter attribute before leaving page
+ this._image.style.filter = "";
+ this._image = null;
+ }
+
+ qx.manager.object.ImageManager.getInstance().remove(this);
+
+ return qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Inline.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Inline.js
new file mode 100644
index 0000000000..f6c59cf486
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Inline.js
@@ -0,0 +1,37 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.basic.Inline", qx.ui.layout.CanvasLayout,
+function(vId)
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ this.setStyleProperty("position", "relative");
+
+ if (qx.util.Validation.isValidString(vId)) {
+ this.setInlineNodeId(vId);
+ }
+});
+
+qx.OO.addProperty({ name : "inlineNodeId", type : "string" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Label.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Label.js
new file mode 100644
index 0000000000..a284649d98
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Label.js
@@ -0,0 +1,546 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#require(qx.renderer.font.FontCache)
+#after(qx.renderer.font.FontObject)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.basic.Label", qx.ui.basic.Terminator,
+function(vHtml, vMnemonic)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ // Apply constructor arguments
+ if (qx.util.Validation.isValidString(vHtml)) {
+ this.setHtml(vHtml);
+ }
+
+ if (qx.util.Validation.isValidString(vMnemonic)) {
+ this.setMnemonic(vMnemonic);
+ }
+
+ // Prohibit stretching through layout handler
+ this.setAllowStretchX(false);
+ this.setAllowStretchY(false);
+
+ // Auto Sized
+ this.auto();
+});
+
+qx.Class._measureNodes = {};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "label" });
+
+/*!
+ Any text string which can contain HTML, too
+*/
+qx.OO.addProperty({ name : "html", type : "string" });
+
+/*!
+ The alignment of the text.
+*/
+qx.OO.addProperty({ name : "textAlign", type : "string", defaultValue : "left", possibleValues : [ "left", "center", "right", "justify" ] });
+
+/*!
+ The styles which should be copied
+*/
+qx.OO.addProperty({ name : "fontPropertiesProfile", type : "string", defaultValue : "default", possibleValues : [ "none", "default", "extended", "multiline", "extendedmultiline", "all" ] });
+
+/*!
+ A single character which will be underlined inside the text.
+*/
+qx.OO.addProperty({ name : "mnemonic", type : "string" });
+
+/*!
+ The font property describes how to paint the font on the widget.
+*/
+qx.OO.addProperty({ name : "font", type : "object", instance : "qx.renderer.font.Font", convert : qx.renderer.font.FontCache, allowMultipleArguments : true });
+
+/*!
+ Wrap the text?
+*/
+qx.OO.addProperty({ name : "wrap", type : "boolean", defaultValue : true });
+
+
+
+
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ DATA
+---------------------------------------------------------------------------
+*/
+
+qx.ui.basic.Label.SYMBOL_ELLIPSIS = String.fromCharCode(8230);
+qx.ui.basic.Label.SUPPORT_NATIVE_ELLIPSIS = qx.sys.Client.getInstance().isMshtml();
+
+// these are the properties what will be copied to the measuring frame.
+qx.ui.basic.Label._fontProperties =
+{
+ "none" : [],
+
+ "default" : ["fontFamily", "fontSize", "fontStyle", "fontWeight", "textDecoration"],
+ "extended" : ["fontFamily", "fontSize", "fontStyle", "fontWeight", "letterSpacing", "textDecoration", "textTransform", "whiteSpace", "wordSpacing"],
+
+ "multiline" : ["fontFamily", "fontSize", "fontStyle", "fontWeight", "textDecoration", "lineHeight", "wordWrap"],
+ "extendedmultiline" : ["fontFamily", "fontSize", "fontStyle", "fontWeight", "letterSpacing", "textDecoration", "textTransform", "whiteSpace", "wordSpacing", "lineHeight", "wordBreak", "wordWrap", "quotes"],
+
+ "all" : ["fontFamily", "fontSize", "fontStyle", "fontVariant", "fontWeight", "letterSpacing", "lineBreak", "lineHeight", "quotes", "textDecoration", "textIndent", "textShadow", "textTransform", "textUnderlinePosition", "whiteSpace", "wordBreak", "wordSpacing", "wordWrap"]
+}
+
+qx.ui.basic.Label.htmlToText = function(s) {
+ return String(s).replace(/\s+|<([^>])+>|&amp;|&lt;|&gt;|&quot;|&nbsp;|&#[0-9]+;|&#x[0-9a-fA-F];]/gi, qx.ui.basic.Label._htmlToText);
+}
+
+qx.ui.basic.Label._htmlToText = function(s)
+{
+ switch(s)
+ {
+ case "&amp;":
+ return "&";
+
+ case "&lt;":
+ return "<";
+
+ case "&gt;":
+ return ">";
+
+ case "&quot;":
+ return '"';
+
+ case "&nbsp;":
+ return String.fromCharCode(160);
+
+ default:
+ if (s.substring(0, 3) == "&#x") {
+ return String.fromCharCode(parseInt("0x" + s.substring(3, s.length - 1)));
+ }
+ else if (s.substring(0, 2) == "&#") {
+ return String.fromCharCode(s.substring(2, s.length - 1));
+ }
+ else if (/\s+/.test(s)) {
+ return " ";
+ }
+ else if (/^<BR/gi.test(s)) {
+ return "\n";
+ }
+
+ return "";
+ }
+}
+
+qx.ui.basic.Label.textToHtml = function(s) {
+ return String(s).replace(/&|<|>|\n|\u00A0/g, qx.ui.basic.Label._textToHtml);
+}
+
+qx.ui.basic.Label._textToHtml = function(s)
+{
+ switch(s)
+ {
+ case "&":
+ return "&amp;";
+
+ case "<":
+ return "&lt;";
+
+ case ">":
+ return "&gt;";
+
+ case "\n":
+ return "<br/>";
+
+ default:
+ return " ";
+ }
+}
+
+qx.ui.basic.Label.createMeasureNode = function(vId)
+{
+ var vNode = qx.ui.basic.Label._measureNodes[vId];
+
+ if (!vNode)
+ {
+ vNode = document.createElement("div");
+ var vStyle = vNode.style;
+
+ vStyle.width = vStyle.height = "auto";
+ vStyle.visibility = "hidden";
+ vStyle.position = "absolute";
+ vStyle.zIndex = "-1";
+
+ document.body.appendChild(vNode);
+
+ qx.ui.basic.Label._measureNodes[vId] = vNode;
+ }
+
+ return vNode;
+}
+
+
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._htmlMode = false;
+qx.Proto._hasMnemonic = false;
+qx.Proto._mnemonicHtml = "";
+qx.Proto._mnemonicTest = null;
+
+qx.Proto._modifyHtml = function(propValue, propOldValue, propData)
+{
+ this._htmlMode = qx.util.Validation.isValidString(propValue) && propValue.match(/<.*>/) ? true : false;
+
+ if (this._isCreated) {
+ this._applyContent();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyTextAlign = function(propValue, propOldValue, propData)
+{
+ this.setStyleProperty("textAlign", propValue);
+ return true;
+}
+
+qx.Proto._modifyMnemonic = function(propValue, propOldValue, propData)
+{
+ this._hasMnemonic = qx.util.Validation.isValidString(propValue) && propValue.length == 1;
+
+ this._mnemonicHtml = this._hasMnemonic ? "(<span style=\"text-decoration:underline\">" + propValue + "</span>)" : "";
+ this._mnemonicTest = this._hasMnemonic ? new RegExp("^(((<([^>]|" + propValue + ")+>)|(&([^;]|" + propValue + ")+;)|[^&" + propValue + "])*)(" + propValue + ")", "i") : null;
+
+ return true;
+}
+
+qx.Proto._modifyFont = function(propValue, propOldValue, propData)
+{
+ this._invalidatePreferredInnerDimensions();
+
+ if (propValue) {
+ propValue._applyWidget(this);
+ } else if (propOldValue) {
+ propOldValue._resetWidget(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyWrap = function(propValue, propOldValue, propData)
+{
+ this.setStyleProperty("whiteSpace", propValue ? "normal" : "nowrap");
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HELPER FOR PREFERRED DIMENSION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computeObjectNeededDimensions = function()
+{
+ // copy styles
+ var vNode = this._copyStyles();
+
+ // prepare html
+ var vHtml = this.getHtml();
+
+ // test for mnemonic and fix content
+ if (this._hasMnemonic && !this._mnemonicTest.test(vHtml)) {
+ vHtml += this._mnemonicHtml;
+ }
+
+ // apply html
+ vNode.innerHTML = vHtml;
+
+ // store values
+ this._cachedPreferredInnerWidth = vNode.scrollWidth;
+ this._cachedPreferredInnerHeight = vNode.scrollHeight;
+}
+
+qx.Proto._copyStyles = function()
+{
+ var vProps = this.getFontPropertiesProfile();
+ var vNode = qx.ui.basic.Label.createMeasureNode(vProps);
+ var vUseProperties=qx.ui.basic.Label._fontProperties[vProps];
+ var vUsePropertiesLength=vUseProperties.length-1;
+ var vProperty=vUseProperties[vUsePropertiesLength--];
+
+ var vStyle = vNode.style;
+ var vTemp;
+
+ if (!vProperty) {
+ return vNode;
+ }
+
+ do {
+ vStyle[vProperty] = qx.util.Validation.isValid(vTemp = this.getStyleProperty([vProperty])) ? vTemp : "";
+ } while(vProperty=vUseProperties[vUsePropertiesLength--]);
+
+ return vNode;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computePreferredInnerWidth = function()
+{
+ this._computeObjectNeededDimensions();
+ return this._cachedPreferredInnerWidth;
+}
+
+qx.Proto._computePreferredInnerHeight = function()
+{
+ this._computeObjectNeededDimensions();
+ return this._cachedPreferredInnerHeight;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT APPLY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._postApply = function()
+{
+ var vHtml = this.getHtml();
+ var vElement = this._getTargetNode();
+ var vMnemonicMode = 0;
+
+ if (qx.util.Validation.isInvalidString(vHtml)) {
+ vElement.innerHTML = "";
+ return;
+ }
+
+ if (this._hasMnemonic) {
+ vMnemonicMode = this._mnemonicTest.test(vHtml) ? 1 : 2;
+ }
+
+ // works only with text, don't use when wrap is enabled
+ if (!this._htmlMode && !this.getWrap())
+ {
+ switch(this._computedWidthType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ case qx.ui.core.Widget.TYPE_PERCENT:
+
+ //carstenl: enabled truncation code for flex sizing, too. Appears to work except for the
+ // truncation code (gecko version), which I have disabled (see below).
+ case qx.ui.core.Widget.TYPE_FLEX:
+ var vNeeded = this.getPreferredInnerWidth();
+ var vInner = this.getInnerWidth();
+
+ if (vInner < vNeeded)
+ {
+ vElement.style.overflow = "hidden";
+
+ if (qx.ui.basic.Label.SUPPORT_NATIVE_ELLIPSIS)
+ {
+ vElement.style.textOverflow = "ellipsis";
+ vHtml += this._mnemonicHtml;
+ }
+ else
+ {
+ var vMeasureNode = this._copyStyles();
+
+ var vSplitString = vHtml.split(" ");
+ var vSplitLength = vSplitString.length;
+
+ var vWordIterator = 0;
+ var vCharaterIterator = 0;
+
+ var vPost = qx.ui.basic.Label.SYMBOL_ELLIPSIS;
+
+ var vUseInnerText = true;
+ if (vMnemonicMode == 2)
+ {
+ var vPost = this._mnemonicHtml + vPost;
+ vUseInnerText = false;
+ }
+
+ // Measure Words (if more than one)
+ if (vSplitLength > 1)
+ {
+ var vSplitTemp = [];
+
+ for (vWordIterator=0; vWordIterator<vSplitLength; vWordIterator++)
+ {
+ vSplitTemp.push(vSplitString[vWordIterator]);
+
+ var vLabelText = vSplitTemp.join(" ") + vPost;
+ if (vUseInnerText) {
+ qx.dom.Element.setTextContent(vMeasureNode, vLabelText);
+ } else {
+ vMeasureNode.innerHTML = vLabelText;
+ }
+
+ if ((vMeasureNode.scrollWidth > vInner)
+ /* carstenl: The following code (truncate the text to fit in the available
+ * space, append ellipsis to indicate truncation) did not reliably
+ * work in my tests. Problem was that sometimes the measurer returned
+ * insanely high values for short texts, like "I..." requiring 738 px.
+ *
+ * I don't have time to examine this code in detail. Since all of my
+ * tests used flex width and the truncation code never was intended
+ * for this, I am disabling truncation if flex is active.
+ */
+ && (this._computedWidthType != qx.ui.core.Widget.TYPE_FLEX)){
+ break;
+ }
+ }
+
+ // Remove last word which does not fit
+ vSplitTemp.pop();
+
+ // Building new temportary array
+ vSplitTemp = [ vSplitTemp.join(" ") ];
+
+ // Extracting remaining string
+ vCharaterString = vHtml.replace(vSplitTemp[0], "");
+ }
+ else
+ {
+ var vSplitTemp = [];
+ vCharaterString = vHtml;
+ }
+
+ var vCharaterLength = vCharaterString.length;
+
+ // Measure Chars
+ for (var vCharaterIterator=0; vCharaterIterator<vCharaterLength; vCharaterIterator++)
+ {
+ vSplitTemp.push(vCharaterString.charAt(vCharaterIterator));
+
+ var vLabelText = vSplitTemp.join("") + vPost;
+ if (vUseInnerText) {
+ qx.dom.Element.setTextContent(vMeasureNode, vLabelText);
+ } else {
+ vMeasureNode.innerHTML = vLabelText;
+ }
+
+ if (vMeasureNode.scrollWidth > vInner) {
+ break;
+ }
+ }
+
+ // Remove last char which does not fit
+ vSplitTemp.pop();
+
+ // Add mnemonic and ellipsis symbol
+ vSplitTemp.push(vPost);
+
+ // Building Final HTML String
+ vHtml = vSplitTemp.join("");
+ }
+
+ break;
+ }
+ else
+ {
+ vHtml += this._mnemonicHtml;
+ }
+
+ // no break here
+
+ default:
+ vElement.style.overflow = "";
+
+ if (qx.ui.basic.Label.SUPPORT_NATIVE_ELLIPSIS) {
+ vElement.style.textOverflow = "";
+ }
+ }
+ }
+
+ if (vMnemonicMode == 1)
+ {
+ // re-test: needed to make ellipsis handling correct
+ this._mnemonicTest.test(vHtml);
+ vHtml = RegExp.$1 + "<span style=\"text-decoration:underline\">" + RegExp.$7 + "</span>" + RegExp.rightContext;
+ }
+
+ return this._postApplyHtml(vElement, vHtml, vMnemonicMode);
+}
+
+
+qx.Proto._postApplyHtml = function(vElement, vHtml, vMnemonicMode)
+{
+ if (this._htmlMode || vMnemonicMode > 0)
+ {
+ vElement.innerHTML = vHtml;
+ }
+ else
+ {
+ try {
+ qx.dom.Element.setTextContent(vElement, vHtml);
+ } catch(ex) {
+ vElement.innerHTML = vHtml;
+ }
+ }
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Terminator.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Terminator.js
new file mode 100644
index 0000000000..2b77bb883c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/Terminator.js
@@ -0,0 +1,187 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/*!
+ This widget is the last widget of the current child chain.
+*/
+qx.OO.defineClass("qx.ui.basic.Terminator", qx.ui.core.Widget,
+function() {
+ qx.ui.core.Widget.call(this);
+});
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPLY PADDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyPaddingX = function(vParent, vChanges, vStyle)
+{
+ if (vChanges.paddingLeft) {
+ this._applyRuntimePaddingLeft(this.getPaddingLeft());
+ }
+
+ if (vChanges.paddingRight) {
+ this._applyRuntimePaddingRight(this.getPaddingRight());
+ }
+}
+
+qx.Proto._applyPaddingY = function(vParent, vChanges, vStyle)
+{
+ if (vChanges.paddingTop) {
+ this._applyRuntimePaddingTop(this.getPaddingTop());
+ }
+
+ if (vChanges.paddingBottom) {
+ this._applyRuntimePaddingBottom(this.getPaddingBottom());
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPLY CONTENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyContent = function()
+{
+ // Small optimization: Only add innerPreferred jobs
+ // if we don't have a static width
+ if (this._computedWidthTypePixel) {
+ this._cachedPreferredInnerWidth = null;
+ } else {
+ this._invalidatePreferredInnerWidth();
+ }
+
+ // Small optimization: Only add innerPreferred jobs
+ // if we don't have a static height
+ if (this._computedHeightTypePixel) {
+ this._cachedPreferredInnerHeight = null;
+ } else {
+ this._invalidatePreferredInnerHeight();
+ }
+
+ // add load job
+ if (this._initialLayoutDone) {
+ this.addToJobQueue("load");
+ }
+}
+
+qx.Proto._layoutPost = function(vChanges) {
+ if (vChanges.initial || vChanges.load || vChanges.width || vChanges.height) {
+ this._postApply();
+ }
+}
+
+qx.Proto._postApply = qx.util.Return.returnTrue;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BOX DIMENSION HELPERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computeBoxWidthFallback = qx.Proto.getPreferredBoxWidth;
+qx.Proto._computeBoxHeightFallback = qx.Proto.getPreferredBoxHeight;
+
+qx.Proto._computePreferredInnerWidth = qx.util.Return.returnZero;
+qx.Proto._computePreferredInnerHeight = qx.util.Return.returnZero;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS TO GIVE THE LAYOUTERS INFORMATIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._isWidthEssential = function()
+{
+ if (!this._computedLeftTypeNull && !this._computedRightTypeNull) {
+ return true;
+ }
+
+ if (!this._computedWidthTypeNull && !this._computedWidthTypeAuto) {
+ return true;
+ }
+
+ if (!this._computedMinWidthTypeNull && !this._computedMinWidthTypeAuto) {
+ return true;
+ }
+
+ if (!this._computedMaxWidthTypeNull && !this._computedMaxWidthTypeAuto) {
+ return true;
+ }
+
+ if (this._borderElement) {
+ return true;
+ }
+
+ return false;
+}
+
+qx.Proto._isHeightEssential = function()
+{
+ if (!this._computedTopTypeNull && !this._computedBottomTypeNull) {
+ return true;
+ }
+
+ if (!this._computedHeightTypeNull && !this._computedHeightTypeAuto) {
+ return true;
+ }
+
+ if (!this._computedMinHeightTypeNull && !this._computedMinHeightTypeAuto) {
+ return true;
+ }
+
+ if (!this._computedMaxHeightTypeNull && !this._computedMaxHeightTypeAuto) {
+ return true;
+ }
+
+ if (this._borderElement) {
+ return true;
+ }
+
+ return false;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/VerticalSpacer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/VerticalSpacer.js
new file mode 100644
index 0000000000..6887c9d3fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/basic/VerticalSpacer.js
@@ -0,0 +1,31 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.basic.VerticalSpacer", qx.ui.basic.Terminator,
+function()
+{
+ qx.ui.basic.Terminator.call(this);
+
+ this.setHeight("1*");
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorPopup.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorPopup.js
new file mode 100644
index 0000000000..523a98df8f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorPopup.js
@@ -0,0 +1,387 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+
+************************************************************************ */
+
+/*!
+ A color popup
+*/
+qx.OO.defineClass("qx.ui.component.ColorPopup", qx.ui.popup.Popup,
+function(tables)
+{
+ qx.ui.popup.Popup.call(this);
+
+ this.setPadding(4);
+ this.auto();
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ this.setBackgroundColor("threedface");
+
+ this._tables = tables;
+
+ this._createLayout();
+ this._createAutoBtn();
+ this._createBoxes();
+ this._createPreview();
+ this._createSelectorBtn();
+
+ this.addEventListener("beforeAppear", this._onBeforeAppear);
+});
+
+qx.OO.addProperty({ name : "value", type : "object", instance : "qx.renderer.color.Color" });
+
+qx.OO.addProperty({ name : "red", type : "number", defaultValue : 0 });
+qx.OO.addProperty({ name : "green", type : "number", defaultValue : 0 });
+qx.OO.addProperty({ name : "blue", type : "number", defaultValue : 0 });
+
+qx.Proto._minZIndex = 1e5;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATOR SUBS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createLayout = function()
+{
+ this._layout = new qx.ui.layout.VerticalBoxLayout;
+ this._layout.setLocation(0, 0);
+ this._layout.auto();
+ this._layout.setSpacing(2);
+
+ this.add(this._layout);
+}
+
+qx.Proto._createAutoBtn = function()
+{
+ this._automaticBtn = new qx.ui.form.Button("Automatic");
+ this._automaticBtn.setWidth(null);
+ this._automaticBtn.setAllowStretchX(true);
+ this._automaticBtn.addEventListener("execute", this._onAutomaticBtnExecute, this);
+
+ this._layout.add(this._automaticBtn);
+}
+
+qx.Proto._recentTableId = "recent";
+qx.Proto._fieldWidth = 14;
+qx.Proto._fieldHeight = 14;
+qx.Proto._fieldNumber = 12;
+
+qx.Proto._createBoxes = function()
+{
+ this._boxes = {};
+
+ var tables = this._tables;
+ var table, box, boxLayout, field;
+
+ for (var tableId in tables)
+ {
+ table = tables[tableId];
+
+ box = new qx.ui.groupbox.GroupBox(table.label);
+ box.setHeight("auto");
+
+ this._boxes[tableId] = box;
+ this._layout.add(box);
+
+ boxLayout = new qx.ui.layout.HorizontalBoxLayout;
+ boxLayout.setLocation(0, 0);
+ boxLayout.setSpacing(1);
+ boxLayout.auto();
+ box.add(boxLayout);
+
+ for (var i=0; i<this._fieldNumber; i++)
+ {
+ field = new qx.ui.basic.Terminator;
+
+ field.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ field.setBackgroundColor(table.values[i] || null);
+ field.setDimension(this._fieldWidth, this._fieldHeight);
+
+ field.addEventListener("mousedown", this._onFieldMouseDown, this);
+ field.addEventListener("mouseover", this._onFieldMouseOver, this);
+
+ boxLayout.add(field);
+ }
+ }
+}
+
+qx.Proto._createPreview = function()
+{
+ this._previewBox = new qx.ui.groupbox.GroupBox("Preview (Old/New)");
+ this._previewLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._selectedPreview = new qx.ui.basic.Terminator;
+ this._currentPreview = new qx.ui.basic.Terminator;
+
+ this._previewLayout.setHeight("auto");
+ this._previewLayout.setWidth("100%");
+ this._previewLayout.setSpacing(4);
+ this._previewLayout.add(this._selectedPreview, this._currentPreview);
+
+ this._previewBox.setHeight("auto");
+ this._previewBox.add(this._previewLayout);
+
+ this._layout.add(this._previewBox);
+
+ this._selectedPreview.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ this._selectedPreview.setWidth("1*");
+ this._selectedPreview.setHeight(24);
+
+ this._currentPreview.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ this._currentPreview.setWidth("1*");
+ this._currentPreview.setHeight(24);
+}
+
+qx.Proto._createSelectorBtn = function()
+{
+ this._selectorButton = new qx.ui.form.Button("Open ColorSelector");
+ this._selectorButton.setWidth(null);
+ this._selectorButton.setAllowStretchX(true);
+ this._selectorButton.addEventListener("execute", this._onSelectorButtonExecute, this);
+
+ this._layout.add(this._selectorButton);
+}
+
+qx.Proto._createColorSelector = function()
+{
+ if (this._colorSelector) {
+ return;
+ }
+
+ this._colorSelectorWindow = new qx.ui.window.Window("Color Selector");
+ this._colorSelectorWindow.setMinWidth(null);
+ this._colorSelectorWindow.setMinHeight(null);
+ this._colorSelectorWindow.setResizeable(false);
+ this._colorSelectorWindow.auto();
+
+ this._colorSelector = new qx.ui.component.ColorSelector;
+ this._colorSelector.setBorder(null);
+ this._colorSelector.setLocation(0, 0);
+ this._colorSelector.addEventListener("dialogok", this._onColorSelectorOk, this);
+ this._colorSelector.addEventListener("dialogcancel", this._onColorSelectorCancel, this);
+
+ this._colorSelectorWindow.add(this._colorSelector);
+ this._colorSelectorWindow.addToDocument();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyValue = function(propValue, propOldValue, propData)
+{
+ if (propValue === null)
+ {
+ this.setRed(null);
+ this.setGreen(null);
+ this.setBlue(null);
+ }
+ else
+ {
+ this.setRed(propValue.getRed());
+ this.setGreen(propValue.getGreen());
+ this.setBlue(propValue.getBlue());
+ };
+
+ this._selectedPreview.setBackgroundColor(propValue);
+ this._rotatePreviousColors();
+
+ return true;
+}
+
+qx.Proto._rotatePreviousColors = function()
+{
+ var vRecentTable = this._tables[this._recentTableId].values;
+ var vRecentBox = this._boxes[this._recentTableId];
+
+ if (!vRecentTable) {
+ return;
+ }
+
+ var newValue = this.getValue();
+
+ if (!newValue) {
+ return;
+ }
+
+ // use style compatible value (like the incoming value from the user or as RGB value string)
+ newValue = newValue.getStyle();
+
+ // Modifying incoming table
+ var vIndex = vRecentTable.indexOf(newValue);
+
+ if (vIndex != -1) {
+ qx.lang.Array.removeAt(vRecentTable, vIndex);
+ } else if (vRecentTable.length == this._fieldNumber) {
+ vRecentTable.shift();
+ }
+
+ vRecentTable.push(newValue);
+
+ // Sync to visible fields
+ var vFields = vRecentBox.getFrameObject().getFirstChild().getChildren();
+ for (var i=0; i<vFields.length; i++) {
+ vFields[i].setBackgroundColor(vRecentTable[i] || null);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onFieldMouseDown = function(e) {
+ this.setValue(this._currentPreview.getBackgroundColor());
+}
+
+qx.Proto._onFieldMouseOver = function(e) {
+ this._currentPreview.setBackgroundColor(e.getTarget().getBackgroundColor());
+}
+
+qx.Proto._onAutomaticBtnExecute = function(e) {
+ this.setValue(null);
+ this.hide();
+}
+
+qx.Proto._onSelectorButtonExecute = function(e)
+{
+ this._createColorSelector();
+
+ this._colorSelectorWindow.setTop(qx.dom.Location.getPageBoxTop(this._selectorButton.getElement()) + 10);
+ this._colorSelectorWindow.setLeft(qx.dom.Location.getPageBoxLeft(this._selectorButton.getElement()) + 100);
+
+ this.hide();
+
+ this._colorSelectorWindow.open();
+}
+
+qx.Proto._onColorSelectorOk = function(e)
+{
+ var sel = this._colorSelector;
+ this.setValue(qx.renderer.color.ColorCache([sel.getRed(), sel.getGreen(), sel.getBlue()]));
+ this._colorSelectorWindow.close();
+}
+
+qx.Proto._onColorSelectorCancel = function(e) {
+ this._colorSelectorWindow.close();
+}
+
+qx.Proto._onBeforeAppear = function(e) {
+ this._currentPreview.setBackgroundColor(null);
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._tables = null;
+ this._boxes = null;
+
+ if (this._layout)
+ {
+ this._layout.dispose();
+ this._layout = null;
+ }
+
+ if (this._automaticBtn)
+ {
+ this._automaticBtn.dispose();
+ this._automaticBtn = null;
+ }
+
+ if (this._previewBox)
+ {
+ this._previewBox.dispose();
+ this._previewBox = null;
+ }
+
+ if (this._previewLayout)
+ {
+ this._previewLayout.dispose();
+ this._previewLayout = null;
+ }
+
+ if (this._selectedPreview)
+ {
+ this._selectedPreview.dispose();
+ this._selectedPreview = null;
+ }
+
+ if (this._currentPreview)
+ {
+ this._currentPreview.dispose();
+ this._currentPreview = null;
+ }
+
+ if (this._selectorButton)
+ {
+ this._selectorButton.dispose();
+ this._selectorButton = null;
+ }
+
+ if (this._colorSelectorWindow)
+ {
+ this._colorSelectorWindow.dispose();
+ this._colorSelectorWindow = null;
+ }
+
+ if (this._colorSelector)
+ {
+ this._colorSelector.dispose();
+ this._colorSelector = null;
+ }
+
+ return qx.ui.popup.Popup.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorSelector.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorSelector.js
new file mode 100644
index 0000000000..2a53f20a5d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/ColorSelector.js
@@ -0,0 +1,1312 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * A typical color selector as known from native applications.
+ *
+ * Includes support for RGB and HSB color areas.
+ *
+ * @event dialogok {qx.event.type.Event}
+ * @event dialogcancel {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.component.ColorSelector", qx.ui.layout.VerticalBoxLayout,
+function(vPreviousRed, vPreviousGreen, vPreviousBlue)
+{
+ qx.ui.layout.VerticalBoxLayout.call(this);
+
+ // ********************************************
+ // CREATE CHILDREN
+ // ********************************************
+
+ // 1. Base Structure (Vertical Split)
+ this._createControlBar();
+ this._createButtonBar();
+
+ // 2. Panes (Horizontal Split)
+ this._createControlPane();
+ this._createHueSaturationPane();
+ this._createBrightnessPane();
+
+ // 3. Control Pane Content
+ this._createPresetFieldSet();
+ this._createInputFieldSet();
+ this._createPreviewFieldSet();
+
+ // 4. Input FieldSet Content
+ this._createHexField();
+ this._createRgbSpinner();
+ this._createHsbSpinner();
+
+ // 5. Preview FieldSet Content
+ this._createPreviewContent();
+
+
+ // ********************************************
+ // INIT COLORS
+ // ********************************************
+
+ if (arguments.length == 3) {
+ this.setPreviousColor(vPreviousRed, vPreviousGreen, vPreviousBlue);
+ }
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "colorselector" });
+
+qx.OO.addProperty({ name : "red", type : "number", defaultValue : 255 });
+qx.OO.addProperty({ name : "green", type : "number", defaultValue : 255 });
+qx.OO.addProperty({ name : "blue", type : "number", defaultValue : 255 });
+
+qx.OO.addProperty({ name : "hue", type : "number", defaultValue : 0 });
+qx.OO.addProperty({ name : "saturation", type : "number", defaultValue : 0 });
+qx.OO.addProperty({ name : "brightness", type : "number", defaultValue : 100 });
+
+/*
+---------------------------------------------------------------------------
+ LOCALIZATION SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("labelOK", "OK");
+qx.Settings.setDefault("labelCancel", "Cancel");
+qx.Settings.setDefault("labelPresets", "Presets");
+qx.Settings.setDefault("labelDetails", "Details");
+qx.Settings.setDefault("labelPreview", "Preview (Old/New)");
+qx.Settings.setDefault("labelRGB", "RGB");
+qx.Settings.setDefault("labelHSB", "HSB");
+qx.Settings.setDefault("labelHex", "Hex");
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CONTEXT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._updateContext = null;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE #1: BASE STRUCTURE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createControlBar = function()
+{
+ this._controlBar = new qx.ui.layout.HorizontalBoxLayout;
+ this._controlBar.setHeight("auto");
+ this._controlBar.setParent(this);
+}
+
+qx.Proto._createButtonBar = function()
+{
+ this._btnbar = new qx.ui.layout.HorizontalBoxLayout;
+ this._btnbar.setHeight("auto");
+ this._btnbar.setSpacing(4);
+ this._btnbar.setHorizontalChildrenAlign("right");
+ this._btnbar.setPadding(2, 4);
+ this.add(this._btnbar);
+
+ this._btncancel = new qx.ui.form.Button(this.getSetting("labelCancel"), "icon/16/button-cancel.png");
+ this._btnok = new qx.ui.form.Button(this.getSetting("labelOK"), "icon/16/button-ok.png");
+
+ this._btncancel.addEventListener("execute", this._onButtonCancelExecute, this);
+ this._btnok.addEventListener("execute", this._onButtonOkExecute, this);
+
+ this._btnbar.add(this._btncancel, this._btnok);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE #2: PANES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createControlPane = function()
+{
+ this._controlPane = new qx.ui.layout.VerticalBoxLayout;
+ this._controlPane.setWidth("auto");
+ this._controlPane.setPadding(4);
+ this._controlPane.setPaddingBottom(7);
+ this._controlPane.setParent(this._controlBar);
+}
+
+qx.Proto._createHueSaturationPane = function()
+{
+ this._hueSaturationPane = new qx.ui.layout.CanvasLayout;
+ this._hueSaturationPane.setWidth("auto");
+ this._hueSaturationPane.setPadding(6, 4);
+ this._hueSaturationPane.setParent(this._controlBar);
+
+ this._hueSaturationPane.addEventListener("mousewheel", this._onHueSaturationPaneMouseWheel, this);
+
+ this._hueSaturationField = new qx.ui.basic.Image("widget/colorselector/huesaturation-field.jpg");
+ this._hueSaturationField.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ this._hueSaturationField.setMargin(5);
+ this._hueSaturationField.setParent(this._hueSaturationPane);
+
+ this._hueSaturationField.addEventListener("mousedown", this._onHueSaturationFieldMouseDown, this);
+
+ this._hueSaturationHandle = new qx.ui.basic.Image("widget/colorselector/huesaturation-handle.gif");
+ this._hueSaturationHandle.setLocation(0, 256);
+ this._hueSaturationHandle.setParent(this._hueSaturationPane);
+
+ this._hueSaturationHandle.addEventListener("mousedown", this._onHueSaturationHandleMouseDown, this);
+ this._hueSaturationHandle.addEventListener("mouseup", this._onHueSaturationHandleMouseUp, this);
+ this._hueSaturationHandle.addEventListener("mousemove", this._onHueSaturationHandleMouseMove, this);
+}
+
+qx.Proto._createBrightnessPane = function()
+{
+ this._brightnessPane = new qx.ui.layout.CanvasLayout;
+ this._brightnessPane.setWidth("auto");
+ this._brightnessPane.setPadding(6, 4);
+ this._brightnessPane.setParent(this._controlBar);
+
+ this._brightnessPane.addEventListener("mousewheel", this._onBrightnessPaneMouseWheel, this);
+
+ this._brightnessField = new qx.ui.basic.Image("widget/colorselector/brightness-field.jpg");
+ this._brightnessField.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ this._brightnessField.setMargin(5, 7);
+ this._brightnessField.setParent(this._brightnessPane);
+
+ this._brightnessField.addEventListener("mousedown", this._onBrightnessFieldMouseDown, this);
+
+ this._brightnessHandle = new qx.ui.basic.Image("widget/colorselector/brightness-handle.gif");
+ this._brightnessHandle.setLocation(0, 0);
+ this._brightnessHandle.setParent(this._brightnessPane);
+
+ this._brightnessHandle.addEventListener("mousedown", this._onBrightnessHandleMouseDown, this);
+ this._brightnessHandle.addEventListener("mouseup", this._onBrightnessHandleMouseUp, this);
+ this._brightnessHandle.addEventListener("mousemove", this._onBrightnessHandleMouseMove, this);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE #3: CONTROL PANE CONTENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createPresetFieldSet = function()
+{
+ this._presetFieldSet = new qx.ui.groupbox.GroupBox("Presets");
+ this._presetFieldSet.setHeight("auto");
+ this._presetFieldSet.setParent(this._controlPane);
+
+ this._presetGrid = new qx.ui.layout.GridLayout;
+ this._presetGrid.setHorizontalSpacing(2);
+ this._presetGrid.setVerticalSpacing(2);
+ this._presetGrid.setColumnCount(11);
+ this._presetGrid.setRowCount(4);
+ this._presetGrid.setColumnWidth(0, 18);
+ this._presetGrid.setColumnWidth(1, 18);
+ this._presetGrid.setColumnWidth(2, 18);
+ this._presetGrid.setColumnWidth(3, 18);
+ this._presetGrid.setColumnWidth(4, 18);
+ this._presetGrid.setColumnWidth(5, 18);
+ this._presetGrid.setColumnWidth(6, 18);
+ this._presetGrid.setColumnWidth(7, 18);
+ this._presetGrid.setColumnWidth(8, 18);
+ this._presetGrid.setColumnWidth(9, 18);
+
+ this._presetGrid.setRowHeight(0, 16);
+ this._presetGrid.setRowHeight(1, 16);
+ this._presetFieldSet.add(this._presetGrid);
+
+ this._presetTable = [ "maroon", "red", "orange", "yellow", "olive", "purple", "fuchsia", "lime", "green", "navy", "blue", "aqua", "teal", "black", "#333", "#666", "#999", "#BBB", "#EEE", "white" ];
+
+ var colorField;
+
+ for (var i=0; i<2; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ colorField = new qx.ui.basic.Terminator;
+ colorField.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ colorField.setBackgroundColor(this._presetTable[i*10+j]);
+ colorField.addEventListener("mousedown", this._onColorFieldClick, this);
+
+ this._presetGrid.add(colorField, j, i);
+ }
+ }
+}
+
+qx.Proto._createInputFieldSet = function()
+{
+ this._inputFieldSet = new qx.ui.groupbox.GroupBox(this.getSetting("labelDetails"));
+ this._inputFieldSet.setHeight("auto");
+ this._inputFieldSet.setParent(this._controlPane);
+
+ this._inputLayout = new qx.ui.layout.VerticalBoxLayout;
+ this._inputLayout.setHeight("auto");
+ this._inputLayout.setSpacing(10);
+ this._inputLayout.setParent(this._inputFieldSet.getFrameObject());
+}
+
+qx.Proto._createPreviewFieldSet = function()
+{
+ this._previewFieldSet = new qx.ui.groupbox.GroupBox(this.getSetting("labelPreview"));
+ this._previewFieldSet.setHeight("1*");
+ this._previewFieldSet.setParent(this._controlPane);
+
+ this._previewLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._previewLayout.setHeight("100%");
+ this._previewLayout.setLocation(0, 0);
+ this._previewLayout.setRight(0);
+ this._previewLayout.setSpacing(10);
+ this._previewLayout.setParent(this._previewFieldSet.getFrameObject());
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE #4: INPUT FIELDSET CONTENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createHexField = function()
+{
+ this._hexLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._hexLayout.setHeight("auto");
+ this._hexLayout.setSpacing(4);
+ this._hexLayout.setVerticalChildrenAlign("middle");
+ this._hexLayout.setParent(this._inputLayout);
+
+ this._hexLabel = new qx.ui.basic.Label(this.getSetting("labelHex"));
+ this._hexLabel.setWidth(25);
+ this._hexLabel.setParent(this._hexLayout);
+
+ this._hexHelper = new qx.ui.basic.Label("#");
+ this._hexHelper.setParent(this._hexLayout);
+
+ this._hexField = new qx.ui.form.TextField("FFFFFF");
+ this._hexField.setWidth(50);
+ this._hexField.setFont('11px "Bitstream Vera Sans Mono", monospace');
+ this._hexField.setParent(this._hexLayout);
+
+ this._hexField.addEventListener("changeValue", this._onHexFieldChange, this);
+}
+
+qx.Proto._createRgbSpinner = function()
+{
+ this._rgbSpinLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._rgbSpinLayout.setHeight("auto");
+ this._rgbSpinLayout.setSpacing(4);
+ this._rgbSpinLayout.setVerticalChildrenAlign("middle");
+ this._rgbSpinLayout.setParent(this._inputLayout);
+
+ this._rgbSpinLabel = new qx.ui.basic.Label(this.getSetting("labelRGB"));
+ this._rgbSpinLabel.setWidth(25);
+ this._rgbSpinLabel.setParent(this._rgbSpinLayout);
+
+ this._rgbSpinRed = new qx.ui.form.Spinner(0, 255, 255);
+ this._rgbSpinRed.setWidth(50);
+
+ this._rgbSpinGreen = new qx.ui.form.Spinner(0, 255, 255);
+ this._rgbSpinGreen.setWidth(50);
+
+ this._rgbSpinBlue = new qx.ui.form.Spinner(0, 255, 255);
+ this._rgbSpinBlue.setWidth(50);
+
+ this._rgbSpinLayout.add(this._rgbSpinRed, this._rgbSpinGreen, this._rgbSpinBlue);
+
+ this._rgbSpinRed.addEventListener("change", this._setRedFromSpinner, this);
+ this._rgbSpinGreen.addEventListener("change", this._setGreenFromSpinner, this);
+ this._rgbSpinBlue.addEventListener("change", this._setBlueFromSpinner, this);
+}
+
+qx.Proto._createHsbSpinner = function()
+{
+ this._hsbSpinLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._hsbSpinLayout.setHeight("auto");
+ this._hsbSpinLayout.setSpacing(4);
+ this._hsbSpinLayout.setVerticalChildrenAlign("middle");
+ this._hsbSpinLayout.setParent(this._inputLayout);
+
+ this._hsbSpinLabel = new qx.ui.basic.Label(this.getSetting("labelHSB"));
+ this._hsbSpinLabel.setWidth(25);
+ this._hsbSpinLayout.add(this._hsbSpinLabel);
+
+ this._hsbSpinHue = new qx.ui.form.Spinner(0, 0, 360);
+ this._hsbSpinHue.setWidth(50);
+
+ this._hsbSpinSaturation = new qx.ui.form.Spinner(0, 0, 100);
+ this._hsbSpinSaturation.setWidth(50);
+
+ this._hsbSpinBrightness = new qx.ui.form.Spinner(0, 100, 100);
+ this._hsbSpinBrightness.setWidth(50);
+
+ this._hsbSpinLayout.add(this._hsbSpinHue, this._hsbSpinSaturation, this._hsbSpinBrightness);
+
+ this._hsbSpinHue.addEventListener("change", this._setHueFromSpinner, this);
+ this._hsbSpinSaturation.addEventListener("change", this._setSaturationFromSpinner, this);
+ this._hsbSpinBrightness.addEventListener("change", this._setBrightnessFromSpinner, this);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE #5: PREVIEW CONTENT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createPreviewContent = function()
+{
+ this._oldColorPreview = new qx.ui.basic.Terminator;
+ this._oldColorPreview.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ this._oldColorPreview.setWidth("1*");
+ this._oldColorPreview.setBackgroundImage("static/image/dotted_white.gif");
+ this._oldColorPreview.setParent(this._previewLayout);
+
+ this._newColorPreview = new qx.ui.basic.Terminator;
+ this._newColorPreview.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ this._newColorPreview.setWidth("1*");
+ this._newColorPreview.setBackgroundColor("white");
+ this._newColorPreview.setParent(this._previewLayout);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RGB MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyRed = function(propValue, propOldValue, propData)
+{
+ if (this._updateContext === null) {
+ this._updateContext = "redModifier";
+ }
+
+ if (this._updateContext !== "rgbSpinner") {
+ this._rgbSpinRed.setValue(propValue);
+ }
+
+ if (this._updateContext !== "hexField") {
+ this._setHexFromRgb();
+ }
+
+ switch(this._updateContext)
+ {
+ case "rgbSpinner":
+ case "hexField":
+ case "redModifier":
+ this._setHueFromRgb();
+ }
+
+ this._setPreviewFromRgb();
+
+ if (this._updateContext === "redModifier") {
+ this._updateContext = null;
+ }
+
+ return true;
+}
+
+qx.Proto._modifyGreen = function(propValue, propOldValue, propData)
+{
+ if (this._updateContext === null) {
+ this._updateContext = "greenModifier";
+ }
+
+ if (this._updateContext !== "rgbSpinner") {
+ this._rgbSpinGreen.setValue(propValue);
+ }
+
+ if (this._updateContext !== "hexField") {
+ this._setHexFromRgb();
+ }
+
+ switch(this._updateContext)
+ {
+ case "rgbSpinner":
+ case "hexField":
+ case "greenModifier":
+ this._setHueFromRgb();
+ }
+
+ this._setPreviewFromRgb();
+
+ if (this._updateContext === "greenModifier") {
+ this._updateContext = null;
+ }
+
+ return true;
+}
+
+qx.Proto._modifyBlue = function(propValue, propOldValue, propData)
+{
+ if (this._updateContext === null) {
+ this._updateContext = "blueModifier";
+ }
+
+ if (this._updateContext !== "rgbSpinner") {
+ this._rgbSpinBlue.setValue(propValue);
+ }
+
+ if (this._updateContext !== "hexField") {
+ this._setHexFromRgb();
+ }
+
+ switch(this._updateContext)
+ {
+ case "rgbSpinner":
+ case "hexField":
+ case "blueModifier":
+ this._setHueFromRgb();
+ }
+
+ this._setPreviewFromRgb();
+
+ if (this._updateContext === "blueModifier") {
+ this._updateContext = null;
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HSB MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyHue = function(propValue, propOldValue, propData)
+{
+ if (this._updateContext === null) {
+ this._updateContext = "hueModifier";
+ }
+
+ if (this._updateContext !== "hsbSpinner") {
+ this._hsbSpinHue.setValue(propValue);
+ }
+
+ if (this._updateContext !== "hueSaturationField")
+ {
+ if (this._hueSaturationHandle.isCreated())
+ {
+ this._hueSaturationHandle._applyRuntimeLeft(Math.round(propValue / 1.40625) + this._hueSaturationPane.getPaddingLeft());
+ }
+ else
+ {
+ this._hueSaturationHandle.setLeft(Math.round(propValue / 1.40625));
+ }
+ }
+
+ switch(this._updateContext)
+ {
+ case "hsbSpinner":
+ case "hueSaturationField":
+ case "hueModifier":
+ this._setRgbFromHue();
+ }
+
+ if (this._updateContext === "hueModifier") {
+ this._updateContext = null;
+ }
+
+ return true;
+}
+
+qx.Proto._modifySaturation = function(propValue, propOldValue, propData)
+{
+ if (this._updateContext === null) {
+ this._updateContext = "saturationModifier";
+ }
+
+ if (this._updateContext !== "hsbSpinner") {
+ this._hsbSpinSaturation.setValue(propValue);
+ }
+
+ if (this._updateContext !== "hueSaturationField")
+ {
+ if (this._hueSaturationHandle.isCreated())
+ {
+ this._hueSaturationHandle._applyRuntimeTop(256 - Math.round(propValue * 2.56) + this._hueSaturationPane.getPaddingTop());
+ }
+ else
+ {
+ this._hueSaturationHandle.setTop(256 - Math.round(propValue * 2.56));
+ }
+ }
+
+ switch(this._updateContext)
+ {
+ case "hsbSpinner":
+ case "hueSaturationField":
+ case "saturationModifier":
+ this._setRgbFromHue();
+ }
+
+ if (this._updateContext === "saturationModifier") {
+ this._updateContext = null;
+ }
+
+ return true;
+}
+
+qx.Proto._modifyBrightness = function(propValue, propOldValue, propData)
+{
+ if (this._updateContext === null) {
+ this._updateContext = "brightnessModifier";
+ }
+
+ if (this._updateContext !== "hsbSpinner") {
+ this._hsbSpinBrightness.setValue(propValue);
+ }
+
+ if (this._updateContext !== "brightnessField")
+ {
+ var topValue = 256 - Math.round(propValue * 2.56);
+
+ if (this._brightnessHandle.isCreated())
+ {
+ this._brightnessHandle._applyRuntimeTop(topValue + this._brightnessPane.getPaddingTop());
+ }
+ else
+ {
+ this._brightnessHandle.setTop(topValue);
+ }
+ }
+
+ switch(this._updateContext)
+ {
+ case "hsbSpinner":
+ case "brightnessField":
+ case "brightnessModifier":
+ this._setRgbFromHue();
+ }
+
+ if (this._updateContext === "brightnessModifier") {
+ this._updateContext = null;
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BRIGHTNESS IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onBrightnessHandleMouseDown = function(e)
+{
+ // Activate Capturing
+ this._brightnessHandle.setCapture(true);
+
+ // Calculate subtract: Position of Brightness Field - Current Mouse Offset
+ this._brightnessSubtract = qx.dom.Location.getPageOuterTop(this._brightnessField.getElement()) + (e.getPageY() - qx.dom.Location.getPageBoxTop(this._brightnessHandle.getElement()));
+
+ // Block field event handling
+ e.setPropagationStopped(true);
+}
+
+qx.Proto._onBrightnessHandleMouseUp = function(e)
+{
+ // Disabling capturing
+ this._brightnessHandle.setCapture(false);
+}
+
+qx.Proto._onBrightnessHandleMouseMove = function(e)
+{
+ // Update if captured currently (through previous mousedown)
+ if (this._brightnessHandle.getCapture()) {
+ this._setBrightnessOnFieldEvent(e);
+ }
+}
+
+qx.Proto._onBrightnessFieldMouseDown = function(e)
+{
+ // Calculate substract: Half height of handler
+ this._brightnessSubtract = qx.dom.Location.getPageOuterTop(this._brightnessField.getElement()) + Math.round(qx.dom.Dimension.getBoxHeight(this._brightnessHandle.getElement()) / 2);
+
+ // Update
+ this._setBrightnessOnFieldEvent(e);
+
+ // Afterwards: Activate Capturing for handle
+ this._brightnessHandle.setCapture(true);
+}
+
+qx.Proto._onBrightnessPaneMouseWheel = function(e) {
+ this.setBrightness(qx.lang.Number.limit(this.getBrightness() + e.getWheelDelta(), 0, 100));
+}
+
+qx.Proto._setBrightnessOnFieldEvent = function(e)
+{
+ var vValue = qx.lang.Number.limit(e.getPageY() - this._brightnessSubtract, 0, 256);
+
+ this._updateContext = "brightnessField";
+
+ if (this._brightnessHandle.isCreated())
+ {
+ this._brightnessHandle._applyRuntimeTop(vValue + this._brightnessPane.getPaddingTop());
+ }
+ else
+ {
+ this._brightnessHandle.setTop(vValue);
+ }
+
+ this.setBrightness(100-Math.round(vValue / 2.56));
+
+ this._updateContext = null;
+}
+
+qx.Proto._onButtonOkExecute = function(e) {
+ this.createDispatchEvent("dialogok");
+}
+
+qx.Proto._onButtonCancelExecute = function(e) {
+ this.createDispatchEvent("dialogcancel");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HUE/SATURATION IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onHueSaturationHandleMouseDown = function(e)
+{
+ // Activate Capturing
+ this._hueSaturationHandle.setCapture(true);
+
+ // Calculate subtract: Position of HueSaturation Field - Current Mouse Offset
+ this._hueSaturationSubtractTop = qx.dom.Location.getPageOuterTop(this._hueSaturationField.getElement()) + (e.getPageY() - qx.dom.Location.getPageBoxTop(this._hueSaturationHandle.getElement()));
+ this._hueSaturationSubtractLeft = qx.dom.Location.getPageOuterLeft(this._hueSaturationField.getElement()) + (e.getPageX() - qx.dom.Location.getPageBoxLeft(this._hueSaturationHandle.getElement()));
+
+ // Block field event handling
+ e.setPropagationStopped(true);
+}
+
+qx.Proto._onHueSaturationHandleMouseUp = function(e)
+{
+ // Disabling capturing
+ this._hueSaturationHandle.setCapture(false);
+}
+
+qx.Proto._onHueSaturationHandleMouseMove = function(e)
+{
+ // Update if captured currently (through previous mousedown)
+ if (this._hueSaturationHandle.getCapture()) {
+ this._setHueSaturationOnFieldEvent(e);
+ }
+}
+
+qx.Proto._onHueSaturationFieldMouseDown = function(e)
+{
+ // Calculate substract: Half width/height of handler
+ this._hueSaturationSubtractTop = qx.dom.Location.getPageOuterTop(this._hueSaturationField.getElement()) + Math.round(qx.dom.Dimension.getBoxHeight(this._hueSaturationHandle.getElement()) / 2);
+ this._hueSaturationSubtractLeft = qx.dom.Location.getPageOuterLeft(this._hueSaturationField.getElement()) + Math.round(qx.dom.Dimension.getBoxWidth(this._hueSaturationHandle.getElement()) / 2);
+
+ // Update
+ this._setHueSaturationOnFieldEvent(e);
+
+ // Afterwards: Activate Capturing for handle
+ this._hueSaturationHandle.setCapture(true);
+}
+
+qx.Proto._onHueSaturationPaneMouseWheel = function(e) {
+ this.setSaturation(qx.lang.Number.limit(this.getSaturation() + e.getWheelDelta(), 0, 100));
+}
+
+qx.Proto._setHueSaturationOnFieldEvent = function(e)
+{
+ var vTop = qx.lang.Number.limit(e.getPageY() - this._hueSaturationSubtractTop, 0, 256);
+ var vLeft = qx.lang.Number.limit(e.getPageX() - this._hueSaturationSubtractLeft, 0, 256);
+
+ if (this._hueSaturationHandle.isCreated())
+ {
+ this._hueSaturationHandle._applyRuntimeTop(vTop + this._hueSaturationPane.getPaddingTop());
+ this._hueSaturationHandle._applyRuntimeLeft(vLeft + this._hueSaturationPane.getPaddingLeft());
+ }
+ else
+ {
+ this._hueSaturationHandle.setTop(vTop);
+ this._hueSaturationHandle.setLeft(vLeft);
+ }
+
+ this._updateContext = "hueSaturationField";
+
+ this.setSaturation(100-Math.round(vTop / 2.56));
+ this.setHue(Math.round(vLeft * 1.40625));
+
+ this._updateContext = null;
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RGB SPINNER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._setRedFromSpinner = function()
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ this._updateContext = "rgbSpinner";
+ this.setRed(this._rgbSpinRed.getValue());
+ this._updateContext = null;
+}
+
+qx.Proto._setGreenFromSpinner = function()
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ this._updateContext = "rgbSpinner";
+ this.setGreen(this._rgbSpinGreen.getValue());
+ this._updateContext = null;
+}
+
+qx.Proto._setBlueFromSpinner = function()
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ this._updateContext = "rgbSpinner";
+ this.setBlue(this._rgbSpinBlue.getValue());
+ this._updateContext = null;
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HSB SPINNER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._setHueFromSpinner = function()
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ this._updateContext = "hsbSpinner";
+ this.setHue(this._hsbSpinHue.getValue());
+ this._updateContext = null;
+}
+
+qx.Proto._setSaturationFromSpinner = function()
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ this._updateContext = "hsbSpinner";
+ this.setSaturation(this._hsbSpinSaturation.getValue());
+ this._updateContext = null;
+}
+
+qx.Proto._setBrightnessFromSpinner = function()
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ this._updateContext = "hsbSpinner";
+ this.setBrightness(this._hsbSpinBrightness.getValue());
+ this._updateContext = null;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HEX FIELD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onHexFieldChange = function(e)
+{
+ if (this._updateContext !== null) {
+ return;
+ }
+
+ var vValue = this._hexField.getValue().toLowerCase();
+
+ var vRed = 0;
+ var vGreen = 0;
+ var vBlue = 0;
+
+ switch(vValue.length)
+ {
+ case 3:
+ vRed = qx.renderer.color.Color.m_rgb[vValue.charAt(0)];
+ vGreen = qx.renderer.color.Color.m_rgb[vValue.charAt(1)];
+ vBlue = qx.renderer.color.Color.m_rgb[vValue.charAt(2)];
+
+ vRed = (vRed * 16) + vRed;
+ vGreen = (vGreen * 16) + vGreen;
+ vBlue = (vBlue * 16) + vBlue;
+
+ break;
+
+ case 6:
+ vRed = (qx.renderer.color.Color.m_rgb[vValue.charAt(0)] * 16) + qx.renderer.color.Color.m_rgb[vValue.charAt(1)];
+ vGreen = (qx.renderer.color.Color.m_rgb[vValue.charAt(2)] * 16) + qx.renderer.color.Color.m_rgb[vValue.charAt(3)];
+ vBlue = (qx.renderer.color.Color.m_rgb[vValue.charAt(4)] * 16) + qx.renderer.color.Color.m_rgb[vValue.charAt(5)];
+
+ break;
+
+ default:
+ return false;
+ }
+
+ this._updateContext = "hexField";
+
+ this.setRed(vRed);
+ this.setGreen(vGreen);
+ this.setBlue(vBlue);
+
+ this._updateContext = null;
+}
+
+qx.Proto._setHexFromRgb = function() {
+ this._hexField.setValue(qx.lang.String.pad(this.getRed().toString(16).toUpperCase(), 2) + qx.lang.String.pad(this.getGreen().toString(16).toUpperCase(), 2) + qx.lang.String.pad(this.getBlue().toString(16).toUpperCase(), 2));
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COLOR FIELD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onColorFieldClick = function(e)
+{
+ var vColor = e.getTarget().getBackgroundColor();
+
+ if (!vColor) {
+ return this.error("Missing backgroundColor value for field: " + e.getTarget());
+ }
+
+ this.setRed(vColor.getRed());
+ this.setGreen(vColor.getGreen());
+ this.setBlue(vColor.getBlue());
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RGB/HSB SYNC
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._setHueFromRgb = function()
+{
+ switch(this._updateContext)
+ {
+ case "hsbSpinner":
+ case "hueSaturationField":
+ case "brightnessField":
+ break;
+
+ default:
+ var vHsb = qx.util.ColorUtil.rgb2hsb(this.getRed(), this.getGreen(), this.getBlue());
+
+ this.setHue(vHsb.hue);
+ this.setSaturation(vHsb.saturation);
+ this.setBrightness(vHsb.brightness);
+ }
+}
+
+qx.Proto._setRgbFromHue = function()
+{
+ switch(this._updateContext)
+ {
+ case "rgbSpinner":
+ case "hexField":
+ break;
+
+ default:
+ var vRgb = qx.util.ColorUtil.hsb2rgb(this.getHue(), this.getSaturation(), this.getBrightness());
+
+ this.setRed(vRgb.red);
+ this.setGreen(vRgb.green);
+ this.setBlue(vRgb.blue);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREVIEW SYNC
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._setPreviewFromRgb = function()
+{
+ if (this._newColorPreview.isCreated())
+ {
+ // faster (omit qx.renderer.color.Color instances)
+ this._newColorPreview._style.backgroundColor = qx.renderer.color.Color.rgb2style(this.getRed(), this.getGreen(), this.getBlue());
+ }
+ else
+ {
+ this._newColorPreview.setBackgroundColor([this.getRed(), this.getGreen(), this.getBlue()]);
+ }
+}
+
+qx.Proto.setPreviousColor = function(vRed, vGreen, vBlue)
+{
+ this._oldColorPreview.setBackgroundImage(null);
+ this._oldColorPreview.setBackgroundColor([vRed, vGreen, vBlue]);
+
+ this.setRed(vRed);
+ this.setGreen(vGreen);
+ this.setBlue(vBlue);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._controlBar)
+ {
+ this._controlBar.dispose();
+ this._controlBar = null;
+ }
+
+ if (this._btnbar)
+ {
+ this._btnbar.dispose();
+ this._btnbar = null;
+ }
+
+ if (this._btncancel)
+ {
+ this._btncancel.dispose();
+ this._btncancel = null;
+ }
+
+ if (this._btnok)
+ {
+ this._btnok.dispose();
+ this._btnok = null;
+ }
+
+ if (this._controlPane)
+ {
+ this._controlPane.dispose();
+ this._controlPane = null;
+ }
+
+ if (this._hueSaturationPane)
+ {
+ this._hueSaturationPane.removeEventListener("mousewheel", this._onHueSaturationPaneMouseWheel, this);
+ this._hueSaturationPane.dispose();
+ this._hueSaturationPane = null;
+ }
+
+ if (this._hueSaturationField)
+ {
+ this._hueSaturationField.removeEventListener("mousedown", this._onHueSaturationFieldMouseDown, this);
+ this._hueSaturationField.dispose();
+ this._hueSaturationField = null;
+ }
+
+ if (this._hueSaturationHandle)
+ {
+ this._hueSaturationHandle.removeEventListener("mousedown", this._onHueSaturationHandleMouseDown, this);
+ this._hueSaturationHandle.removeEventListener("mouseup", this._onHueSaturationHandleMouseUp, this);
+ this._hueSaturationHandle.removeEventListener("mousemove", this._onHueSaturationHandleMouseMove, this);
+ this._hueSaturationHandle.dispose();
+ this._hueSaturationHandle = null;
+ }
+
+ if (this._brightnessPane)
+ {
+ this._brightnessPane.removeEventListener("mousewheel", this._onBrightnessPaneMouseWheel, this);
+ this._brightnessPane.dispose();
+ this._brightnessPane = null;
+ }
+
+ if (this._brightnessField)
+ {
+ this._brightnessField.removeEventListener("mousedown", this._onBrightnessFieldMouseDown, this);
+ this._brightnessField.dispose();
+ this._brightnessField = null;
+ }
+
+ if (this._brightnessHandle)
+ {
+ this._brightnessHandle.removeEventListener("mousedown", this._onBrightnessHandleMouseDown, this);
+ this._brightnessHandle.removeEventListener("mouseup", this._onBrightnessHandleMouseUp, this);
+ this._brightnessHandle.removeEventListener("mousemove", this._onBrightnessHandleMouseMove, this);
+ this._brightnessHandle.dispose();
+ this._brightnessHandle = null;
+ }
+
+ if (this._presetFieldSet)
+ {
+ this._presetFieldSet.dispose();
+ this._presetFieldSet = null;
+ }
+
+ if (this._presetGrid)
+ {
+ this._presetGrid.dispose();
+ this._presetGrid = null;
+ }
+
+ this._presetTable = null;
+
+ if (this._inputFieldSet)
+ {
+ this._inputFieldSet.dispose();
+ this._inputFieldSet = null;
+ }
+
+ if (this._inputLayout)
+ {
+ this._inputLayout.dispose();
+ this._inputLayout = null;
+ }
+
+ if (this._previewFieldSet)
+ {
+ this._previewFieldSet.dispose();
+ this._previewFieldSet = null;
+ }
+
+ if (this._previewLayout)
+ {
+ this._previewLayout.dispose();
+ this._previewLayout = null;
+ }
+
+ if (this._hexLayout)
+ {
+ this._hexLayout.dispose();
+ this._hexLayout = null;
+ }
+
+ if (this._hexLabel)
+ {
+ this._hexLabel.dispose();
+ this._hexLabel = null;
+ }
+
+ if (this._hexHelper)
+ {
+ this._hexHelper.dispose();
+ this._hexHelper = null;
+ }
+
+ if (this._hexField)
+ {
+ this._hexField.addEventListener("changeValue", this._onHexFieldChange, this);
+ this._hexField.dispose();
+ this._hexField = null;
+ }
+
+ if (this._rgbSpinLayout)
+ {
+ this._rgbSpinLayout.dispose();
+ this._rgbSpinLayout = null;
+ }
+
+ if (this._rgbSpinLabel)
+ {
+ this._rgbSpinLabel.dispose();
+ this._rgbSpinLabel = null;
+ }
+
+ if (this._rgbSpinRed)
+ {
+ this._rgbSpinRed.removeEventListener("change", this._setRedFromSpinner, this);
+ this._rgbSpinRed.dispose();
+ this._rgbSpinRed = null;
+ }
+
+ if (this._rgbSpinGreen)
+ {
+ this._rgbSpinGreen.removeEventListener("change", this._setGreenFromSpinner, this);
+ this._rgbSpinGreen.dispose();
+ this._rgbSpinGreen = null;
+ }
+
+ if (this._rgbSpinBlue)
+ {
+ this._rgbSpinBlue.removeEventListener("change", this._setBlueFromSpinner, this);
+ this._rgbSpinBlue.dispose();
+ this._rgbSpinBlue = null;
+ }
+
+ if (this._hsbSpinLayout)
+ {
+ this._hsbSpinLayout.dispose();
+ this._hsbSpinLayout = null;
+ }
+
+ if (this._hsbSpinLabel)
+ {
+ this._hsbSpinLabel.dispose();
+ this._hsbSpinLabel = null;
+ }
+
+ if (this._hsbSpinHue)
+ {
+ this._hsbSpinHue.removeEventListener("change", this._setHueFromSpinner, this);
+ this._hsbSpinHue.dispose();
+ this._hsbSpinHue = null;
+ }
+
+ if (this._hsbSpinSaturation)
+ {
+ this._hsbSpinSaturation.removeEventListener("change", this._setSaturationFromSpinner, this);
+ this._hsbSpinSaturation.dispose();
+ this._hsbSpinSaturation = null;
+ }
+
+ if (this._hsbSpinBrightness)
+ {
+ this._hsbSpinBrightness.removeEventListener("change", this._setBrightnessFromSpinner, this);
+ this._hsbSpinBrightness.dispose();
+ this._hsbSpinBrightness = null;
+ }
+
+ if (this._oldColorPreview)
+ {
+ this._oldColorPreview.dispose();
+ this._oldColorPreview = null;
+ }
+
+ if (this._newColorPreview)
+ {
+ this._newColorPreview.dispose();
+ this._newColorPreview = null;
+ }
+
+ return qx.ui.layout.VerticalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/DateChooser.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/DateChooser.js
new file mode 100644
index 0000000000..fdfb2af65e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/component/DateChooser.js
@@ -0,0 +1,518 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#require(qx.util.format.DateFormat)
+
+************************************************************************ */
+
+/**
+ * Shows calendar and allows choosing a date.
+ *
+ * @param date {Date ? null} The initial date to show. If <code>null</code>
+ * the current day (today) is shown.
+ *
+ * @event select {qx.event.type.DataEvent} Fired when a date was selected. The
+ * event holds the new selected date in its data property.
+ */
+qx.OO.defineClass("qx.ui.component.DateChooser", qx.ui.layout.BoxLayout,
+function(date) {
+ qx.ui.layout.BoxLayout.call(this);
+
+ this.setOrientation("vertical");
+
+ // Create the navigation bar
+ var navBar = new qx.ui.layout.BoxLayout;
+ navBar.set({ width:null, height:"auto", spacing:1 });
+
+ var lastYearBt = new qx.ui.toolbar.Button(null, "widget/datechooser/lastYear.png");
+ var lastMonthBt = new qx.ui.toolbar.Button(null, "widget/datechooser/lastMonth.png");
+ var monthYearLabel = new qx.ui.basic.Label;
+ var nextMonthBt = new qx.ui.toolbar.Button(null, "widget/datechooser/nextMonth.png");
+ var nextYearBt = new qx.ui.toolbar.Button(null, "widget/datechooser/nextYear.png");
+
+ lastYearBt.set({ show:'icon', toolTip:new qx.ui.popup.ToolTip("Last year"), spacing:0 });
+ lastMonthBt.set({ show:'icon', toolTip:new qx.ui.popup.ToolTip("Last month") });
+ nextMonthBt.set({ show:'icon', toolTip:new qx.ui.popup.ToolTip("Next month") });
+ nextYearBt.set({ show:'icon', toolTip:new qx.ui.popup.ToolTip("Next year") });
+
+ lastYearBt.setAppearance("datechooser-toolbar-button");
+ lastMonthBt.setAppearance("datechooser-toolbar-button");
+ nextMonthBt.setAppearance("datechooser-toolbar-button");
+ nextYearBt.setAppearance("datechooser-toolbar-button");
+
+ lastYearBt.addEventListener("click", this._onNavButtonClicked, this);
+ lastMonthBt.addEventListener("click", this._onNavButtonClicked, this);
+ nextMonthBt.addEventListener("click", this._onNavButtonClicked, this);
+ nextYearBt.addEventListener("click", this._onNavButtonClicked, this);
+
+ this._lastYearBt = lastYearBt;
+ this._lastMonthBt = lastMonthBt;
+ this._nextMonthBt = nextMonthBt;
+ this._nextYearBt = nextYearBt;
+
+ monthYearLabel.setAppearance("datechooser-monthyear");
+ monthYearLabel.set({ width:"1*" });
+
+ navBar.add(lastYearBt, lastMonthBt, monthYearLabel, nextMonthBt, nextYearBt);
+ this._monthYearLabel = monthYearLabel;
+ navBar.setHtmlAttribute("id", "navBar");
+
+ // Calculate the cell width and height
+ var testLabel = new qx.ui.basic.Label;
+ var testParent = new qx.ui.layout.CanvasLayout;
+ testParent.add(testLabel);
+ testLabel.setHtml("Xx");
+ testLabel.set({ paddingLeft : 5, paddingRight : 5 });
+ testLabel.setAppearance("datechooser-weekday");
+ var cellWidth = testLabel.getBoxWidth();
+ var cellHeight = testLabel.getBoxHeight();
+ testLabel.dispose();
+ testParent.dispose();
+
+ // Create the date pane
+ var datePane = new qx.ui.layout.GridLayout;
+ datePane.setAppearance("datechooser-datepane");
+ datePane.set({ width:"100%", height:"auto" });
+ datePane.setColumnCount(8);
+ datePane.setRowCount(7);
+ for (var i = 0; i < datePane.getColumnCount(); i++) {
+ datePane.setColumnWidth(i, cellWidth);
+ }
+ for (var i = 0; i < datePane.getRowCount(); i++) {
+ datePane.setRowHeight(i, cellHeight);
+ }
+
+ // Create the weekdays
+ // Add an empty label as spacer for the week numbers
+ var label = new qx.ui.basic.Label;
+ label.setAppearance("datechooser-week");
+ label.set({ width:"100%", height:"100%" });
+ label.addState("header");
+ datePane.add(label, 0, 0);
+
+ this._weekdayLabelArr = [];
+ for (var i = 0; i < 7; i++) {
+ var label = new qx.ui.basic.Label;
+ label.setAppearance("datechooser-weekday");
+ label.set({ width:"100%", height:"100%" });
+ datePane.add(label, i + 1, 0);
+ this._weekdayLabelArr.push(label);
+ }
+
+ // Add the days
+ this._dayLabelArr = [];
+ this._weekLabelArr = [];
+ for (var y = 0; y < 6; y++) {
+ // Add the week label
+ var label = new qx.ui.basic.Label;
+ label.setAppearance("datechooser-week");
+ label.set({ width:"100%", height:"100%" });
+ datePane.add(label, 0, y + 1);
+ this._weekLabelArr.push(label);
+
+ // Add the day labels
+ for (var x = 0; x < 7; x++) {
+ var label = new qx.ui.basic.Label;
+ label.setAppearance("datechooser-day");
+ label.set({ width:"100%", height:"100%" });
+ label.addEventListener("mousedown", this._onDayClicked, this);
+ label.addEventListener("dblclick", this._onDayDblClicked, this);
+ datePane.add(label, x + 1, y + 1);
+ this._dayLabelArr.push(label);
+ }
+ }
+
+ // Make focusable
+ this.setTabIndex(1);
+ this.addEventListener("keypress", this._onkeypress);
+
+ // Show the right date
+ var shownDate = (date != null) ? date : new Date();
+ this.showMonth(shownDate.getMonth(), shownDate.getFullYear());
+
+ // Add the main widgets
+ this.add(navBar);
+ this.add(datePane);
+
+});
+
+
+// ***** Properties *****
+
+/** The start of the week. 0 = sunday, 1 = monday, and so on. */
+qx.OO.addProperty({ name:"startOfWeek", type:"number", defaultValue:1 });
+/** The currently shown month. 0 = january, 1 = february, and so on. */
+qx.OO.addProperty({ name:"shownMonth", type:"number", defaultValue:null });
+/** The currently shown year. */
+qx.OO.addProperty({ name:"shownYear", type:"number", defaultValue:null });
+/** {Date} The currently selected date. */
+qx.OO.addProperty({ name:"date", type:"object", defaultValue:null });
+
+
+// property checker
+qx.Proto._checkDate = function(propValue, propData) {
+ // Use a clone of the date internally since date instances may be changed
+ return (propValue == null) ? null : new Date(propValue.getTime());
+}
+
+
+// property modifier
+qx.Proto._modifyDate = function(propValue, propOldValue, propData) {
+ var DateChooser = qx.ui.component.DateChooser;
+
+ if ((propValue != null) && (this.getShownMonth() != propValue.getMonth()
+ || this.getShownYear() != propValue.getFullYear()))
+ {
+ // The new date is in another month -> Show that month
+ this.showMonth(propValue.getMonth(), propValue.getFullYear());
+ } else {
+ // The new date is in the current month -> Just change the states
+ var newDay = (propValue == null) ? -1 : propValue.getDate();
+ for (var i = 0; i < 6 * 7; i++) {
+ var dayLabel = this._dayLabelArr[i];
+
+ if (dayLabel.hasState("otherMonth")) {
+ if (dayLabel.hasState("selected")) {
+ dayLabel.removeState("selected");
+ }
+ } else {
+ var day = parseInt(dayLabel.getHtml());
+ if (day == newDay) {
+ dayLabel.addState("selected");
+ } else if (dayLabel.hasState("selected")) {
+ dayLabel.removeState("selected");
+ }
+ }
+ }
+ }
+
+ return true;
+}
+
+
+/**
+ * Event handler. Called when a navigation button has been clicked.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onNavButtonClicked = function(evt) {
+ var year = this.getShownYear();
+ var month = this.getShownMonth();
+
+ switch(evt.getCurrentTarget()) {
+ case this._lastYearBt:
+ year--;
+ break;
+ case this._lastMonthBt:
+ month--;
+ if (month < 0) {
+ month = 11;
+ year--;
+ }
+ break;
+ case this._nextMonthBt:
+ month++;
+ if (month >= 12) {
+ month = 0;
+ year++;
+ }
+ break;
+ case this._nextYearBt:
+ year++;
+ break;
+ }
+
+ this.showMonth(month, year);
+}
+
+
+/**
+ * Event handler. Called when a day has been clicked.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onDayClicked = function(evt) {
+ var time = evt.getCurrentTarget().dateTime;
+ this.setDate(new Date(time));
+}
+
+qx.Proto._onDayDblClicked = function() {
+ this.createDispatchDataEvent("select", this.getDate());
+}
+
+/**
+ * Event handler. Called when a key was pressed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onkeypress = function(evt) {
+ var dayIncrement = null;
+ var monthIncrement = null;
+ var yearIncrement = null;
+ if (evt.getModifiers() == 0) {
+ switch(evt.getKeyIdentifier()) {
+ case "Left":
+ dayIncrement = -1;
+ break;
+ case "Right":
+ dayIncrement = 1;
+ break;
+ case "Up":
+ dayIncrement = -7;
+ break;
+ case "Down":
+ dayIncrement = 7;
+ break;
+ case "PageUp":
+ monthIncrement = -1;
+ break;
+ case "PageDown":
+ monthIncrement = 1;
+ break;
+ case "Escape":
+ if (this.getDate() != null) {
+ this.setDate(null);
+ return true;
+ }
+ break;
+ case "Enter":
+ case "Space":
+ if (this.getDate() != null) {
+ this.createDispatchDataEvent("select", this.getDate());
+ }
+ return;
+ }
+ } else if (evt.getShiftKey()) {
+ switch(evt.getKeyIdentifier()) {
+ case "PageUp":
+ yearIncrement = -1;
+ break;
+ case "PageDown":
+ yearIncrement = 1;
+ break;
+ }
+ }
+
+ if (dayIncrement != null || monthIncrement != null || yearIncrement != null) {
+ var date = this.getDate();
+ if (date != null) {
+ date = new Date(date.getTime()); // TODO: Do cloning in getter
+ }
+ if (date == null) {
+ date = new Date();
+ } else {
+ if (dayIncrement != null) date.setDate(date.getDate() + dayIncrement);
+ if (monthIncrement != null) date.setMonth(date.getMonth() + monthIncrement);
+ if (yearIncrement != null) date.setFullYear(date.getFullYear() + yearIncrement);
+ }
+ this.setDate(date);
+ }
+}
+
+
+// ***** Methods *****
+
+
+/**
+ * Returns whether a certain day of week belongs to the week end.
+ *
+ * @param dayOfWeek {int} the day to check. (0 = sunday, 1 = monday, ...,
+ * 6 = saturday)
+ * @return {boolean} whether the day belongs to the week end.
+ */
+qx.Proto._isWeekend = function(dayOfWeek) {
+ return (dayOfWeek == 0) || (dayOfWeek == 6);
+}
+
+
+/**
+ * Shows a certain month.
+ *
+ * @param month {int ? null} the month to show (0 = january). If not set the month
+ * will remain the same.
+ * @param year {int ? null} the year to show. If not set the year will remain the
+ * same.
+ */
+qx.Proto.showMonth = function(month, year) {
+ if ((month != null && month != this.getShownMonth())
+ || (year != null && year != this.getShownYear()))
+ {
+ if (month != null) {
+ this.setShownMonth(month);
+ }
+ if (year != null) {
+ this.setShownYear(year);
+ }
+
+ this._updateDatePane();
+ }
+}
+
+
+/**
+ * Updates the date pane.
+ */
+qx.Proto._updateDatePane = function() {
+ var DateChooser = qx.ui.component.DateChooser;
+
+ var today = new Date();
+ var todayYear = today.getFullYear();
+ var todayMonth = today.getMonth();
+ var todayDayOfMonth = today.getDate();
+
+ var selDate = this.getDate();
+ var selYear = (selDate == null) ? -1 : selDate.getFullYear();
+ var selMonth = (selDate == null) ? -1 : selDate.getMonth();
+ var selDayOfMonth = (selDate == null) ? -1 : selDate.getDate();
+
+ var shownMonth = this.getShownMonth();
+ var shownYear = this.getShownYear();
+
+ var startOfWeek = this.getStartOfWeek();
+
+ // Create a help date that points to the first of the current month
+ var helpDate = new Date(this.getShownYear(), this.getShownMonth(), 1);
+
+ this._monthYearLabel.setHtml(DateChooser.MONTH_YEAR_FORMAT.format(helpDate));
+
+ // Show the day names
+ var firstDayOfWeek = helpDate.getDay();
+ var firstSundayInMonth = (1 + 7 - firstDayOfWeek) % 7;
+ for (var i = 0; i < 7; i++) {
+ var day = (i + startOfWeek) % 7;
+
+ var dayLabel = this._weekdayLabelArr[i];
+
+ helpDate.setDate(firstSundayInMonth + day);
+ dayLabel.setHtml(DateChooser.WEEKDAY_FORMAT.format(helpDate));
+
+ if (this._isWeekend(day)) {
+ dayLabel.addState("weekend");
+ } else {
+ dayLabel.removeState("weekend");
+ }
+ }
+
+ // Show the days
+ helpDate = new Date(shownYear, shownMonth, 1);
+ var nrDaysOfLastMonth = (7 + firstDayOfWeek - startOfWeek) % 7;
+ helpDate.setDate(helpDate.getDate() - nrDaysOfLastMonth);
+ for (var week = 0; week < 6; week++) {
+ this._weekLabelArr[week].setHtml(DateChooser.WEEK_FORMAT.format(helpDate));
+
+ for (var i = 0; i < 7; i++) {
+ var dayLabel = this._dayLabelArr[week * 7 + i];
+
+ var year = helpDate.getFullYear();
+ var month = helpDate.getMonth();
+ var dayOfMonth = helpDate.getDate();
+
+ var isSelectedDate = (selYear == year && selMonth == month && selDayOfMonth == dayOfMonth);
+ if (isSelectedDate) {
+ dayLabel.addState("selected");
+ } else {
+ dayLabel.removeState("selected");
+ }
+
+ if (month != shownMonth) {
+ dayLabel.addState("otherMonth");
+ } else {
+ dayLabel.removeState("otherMonth");
+ }
+
+ var isToday = (year == todayYear && month == todayMonth && dayOfMonth == todayDayOfMonth);
+ if (isToday) {
+ dayLabel.addState("today");
+ } else {
+ dayLabel.removeState("today");
+ }
+
+ dayLabel.setHtml("" + dayOfMonth);
+ dayLabel.dateTime = helpDate.getTime();
+
+ // Go to the next day
+ helpDate.setDate(helpDate.getDate() + 1);
+ }
+ }
+}
+
+
+/**
+ * {qx.util.format.DateFormat} The format for the date year
+ * label at the top center.
+ */
+qx.Class.MONTH_YEAR_FORMAT = new qx.util.format.DateFormat("MMMM yyyy");
+
+/**
+ * {qx.util.format.DateFormat} The format for the weekday
+ * labels (the headers of the date table).
+ */
+qx.Class.WEEKDAY_FORMAT = new qx.util.format.DateFormat("EE");
+
+/**
+ * {qx.util.format.DateFormat} The format for the week labels.
+ */
+qx.Class.WEEK_FORMAT = new qx.util.format.DateFormat("ww");
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this._lastYearBt.removeEventListener("click", this._onNavButtonClicked, this);
+ this._lastMonthBt.removeEventListener("click", this._onNavButtonClicked, this);
+ this._nextMonthBt.removeEventListener("click", this._onNavButtonClicked, this);
+ this._nextYearBt.removeEventListener("click", this._onNavButtonClicked, this);
+
+ this._lastYearBt.dispose();
+ this._lastMonthBt.dispose();
+ this._nextMonthBt.dispose();
+ this._nextYearBt.dispose();
+
+ this._lastYearBt = null;
+ this._lastMonthBt = null;
+ this._nextMonthBt = null;
+ this._nextYearBt = null;
+
+ this._monthYearLabel.dispose();
+ this._monthYearLabel = null;
+
+ for (var i = 0; i < this._weekdayLabelArr.length; i++) {
+ this._weekdayLabelArr[i].dispose();
+ }
+ this._weekdayLabelArr = null;
+
+ for (var i = 0; i < this._dayLabelArr.length; i++) {
+ this._dayLabelArr[i].dispose();
+ this._dayLabelArr[i].removeEventListener("mousedown", this._onDayClicked, this);
+ this._dayLabelArr[i].removeEventListener("dblclick", this._onDayDblClicked, this);
+ }
+ this._dayLabelArr = null;
+
+ for (var i = 0; i < this._weekLabelArr.length; i++) {
+ this._weekLabelArr[i].dispose();
+ }
+ this._weekLabelArr = null;
+
+ this.removeEventListener("keypress", this._onkeypress);
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocument.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocument.js
new file mode 100644
index 0000000000..f65edcb32e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocument.js
@@ -0,0 +1,450 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.dom.StyleSheet)
+#require(qx.event.handler.EventHandler)
+#optional(qx.client.NativeWindow)
+#optional(qx.ui.window.Window)
+#optional(qx.manager.object.PopupManager)
+
+************************************************************************ */
+
+/**
+ * This is the basic widget of all qooxdoo applications.
+ *
+ * qx.ui.core.ClientDocument is the parent of all children inside your application. It
+ * also handles their resizing and focus navigation.
+ *
+ * @event windowblur {qx.event.type.Event} Fired when the window looses the
+ * focus. (Fired by {@link qx.event.handler.EventHandler})
+ * @event windowfocus {qx.event.type.Event} Fired when the window gets the
+ * focus. (Fired by {@link qx.event.handler.EventHandler})
+ * @event windowresize {qx.event.type.Event} Fired when the window has been
+ * resized. (Fired by {@link qx.event.handler.EventHandler})
+ */
+qx.OO.defineClass("qx.ui.core.ClientDocument", qx.ui.layout.CanvasLayout,
+function()
+{
+ this._window = window;
+ this._document = window.document;
+
+ // Init element
+ this.setElement(this._document.body);
+
+ // Needed hard-coded because otherwise the client document
+ // would not be added initially to the state queue
+ this.addToStateQueue();
+
+ qx.ui.layout.CanvasLayout.call(this);
+
+ // Don't use widget styles
+ this._styleProperties = {};
+
+ // Configure as focus root
+ this.activateFocusRoot();
+
+ // Cache current size
+ this._cachedInnerWidth = this._document.body.offsetWidth;
+ this._cachedInnerHeight = this._document.body.offsetHeight;
+
+ // Add Resize Handler
+ this.addEventListener("windowresize", this._onwindowresize);
+
+ // Dialog Support
+ this._modalWidgets = [];
+ this._modalNativeWindow = null;
+
+ // Register as focus root
+ qx.event.handler.EventHandler.getInstance().setFocusRoot(this);
+
+
+ // Init Resize Helper
+ /*
+ if (qx.sys.Client.getInstance().isGecko())
+ {
+ var o = this;
+ this._resizeHelper = window.setInterval(function() { o._onresizehelper() }, 100);
+ }
+ */
+});
+
+qx.OO.addProperty({ name : "globalCursor", type : "string" });
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "client-document" });
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("enableApplicationLayout", true);
+qx.Settings.setDefault("boxModelCorrection", true);
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OVERWRITE WIDGET FUNCTIONS/PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyParent = qx.util.Return.returnTrue;
+qx.Proto._modifyVisible = qx.util.Return.returnTrue;
+
+qx.Proto._modifyElement = function(propValue, propOldValue, propData)
+{
+ this._isCreated = qx.util.Validation.isValidElement(propValue);
+
+ if (propOldValue)
+ {
+ propOldValue.qx_Widget = null;
+ }
+
+ if (propValue)
+ {
+ // add reference to widget instance
+ propValue.qx_Widget = this;
+
+ // link element and style reference
+ this._element = propValue;
+ this._style = propValue.style;
+ }
+ else
+ {
+ this._element = null;
+ this._style = null;
+ }
+
+ return true;
+}
+
+qx.Proto.getTopLevelWidget = qx.util.Return.returnThis;
+qx.Proto.getWindowElement = function() { return this._window; }
+qx.Proto.getDocumentElement = function() { return this._document; }
+
+qx.Proto.getParent = qx.Proto.getToolTip = qx.util.Return.returnNull;
+qx.Proto.isMaterialized = qx.Proto.isSeeable = qx.util.Return.returnTrue;
+
+qx.Proto._isDisplayable = true;
+qx.Proto._hasParent = false;
+qx.Proto._initialLayoutDone = true;
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BLOCKER AND DIALOG SUPPORT
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Returns the blocker widget if already created; otherwise create it first
+ *
+ * @return {ClientDocumentBlocker} the blocker widget.
+ */
+qx.Proto._getBlocker = function()
+{
+ if (!this._blocker)
+ {
+ // Create blocker instance
+ this._blocker = new qx.ui.core.ClientDocumentBlocker;
+
+ // Add blocker events
+ this._blocker.addEventListener("mousedown", this.blockHelper, this);
+ this._blocker.addEventListener("mouseup", this.blockHelper, this);
+
+ // Add blocker to client document
+ this.add(this._blocker);
+ }
+
+ return this._blocker;
+};
+
+qx.Proto.blockHelper = function(e)
+{
+ if (this._modalNativeWindow)
+ {
+ try
+ {
+ this._modalNativeWindow._window.focus();
+ }
+ catch(ex)
+ {
+ this.debug("Window seems to be closed already! => Releasing Blocker: (" + e.getType() + ")", ex);
+ this.release(this._modalNativeWindow);
+ }
+ }
+}
+
+qx.Proto.block = function(vActiveChild)
+{
+ // this.debug("BLOCK: " + vActiveChild.toHashCode());
+
+ this._getBlocker().show();
+
+ if (qx.OO.isAvailable("qx.ui.window.Window") && vActiveChild instanceof qx.ui.window.Window)
+ {
+ this._modalWidgets.push(vActiveChild);
+
+ var vOrigIndex = vActiveChild.getZIndex();
+ this._getBlocker().setZIndex(vOrigIndex);
+ vActiveChild.setZIndex(vOrigIndex+1);
+ }
+ else if (qx.OO.isAvailable("qx.client.NativeWindow") && vActiveChild instanceof qx.client.NativeWindow)
+ {
+ this._modalNativeWindow = vActiveChild;
+ this._getBlocker().setZIndex(1e7);
+ }
+}
+
+qx.Proto.release = function(vActiveChild)
+{
+ // this.debug("RELEASE: " + vActiveChild.toHashCode());
+
+ if (vActiveChild)
+ {
+ if (qx.OO.isAvailable("qx.client.NativeWindow") && vActiveChild instanceof qx.client.NativeWindow)
+ {
+ this._modalNativeWindow = null;
+ }
+ else
+ {
+ qx.lang.Array.remove(this._modalWidgets, vActiveChild);
+ }
+ }
+
+ var l = this._modalWidgets.length;
+ if (l == 0)
+ {
+ this._getBlocker().hide();
+ }
+ else
+ {
+ var oldActiveChild = this._modalWidgets[l-1];
+
+ var o = oldActiveChild.getZIndex();
+ this._getBlocker().setZIndex(o);
+ oldActiveChild.setZIndex(o+1);
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CSS API
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.createStyleElement = function(vCssText) {
+ return qx.dom.StyleSheet.createElement(vCssText);
+}
+
+qx.Proto.addCssRule = function(vSheet, vSelector, vStyle) {
+ return qx.dom.StyleSheet.addRule(vSheet, vSelector, vStyle);
+}
+
+qx.Proto.removeCssRule = function(vSheet, vSelector) {
+ return qx.dom.StyleSheet.removeRule(vSheet, vSelector);
+}
+
+qx.Proto.removeAllCssRules = function(vSheet) {
+ return qx.dom.StyleSheet.removeAllRules(vSheet);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CSS FIX
+---------------------------------------------------------------------------
+*/
+if (qx.Settings.getValueOfClass("qx.ui.core.ClientDocument", "boxModelCorrection")) {
+ qx.dom.StyleSheet.createElement("html,body{margin:0;border:0;padding:0;}" +
+ " html{border:0 none;} *{" + qx.sys.Client.getInstance().getEngineBoxSizingAttribute() +
+ ":border-box;} img{" + qx.sys.Client.getInstance().getEngineBoxSizingAttribute() +
+ ":content-box;}");
+}
+if (qx.Settings.getValueOfClass("qx.ui.core.ClientDocument", "enableApplicationLayout")) {
+ qx.dom.StyleSheet.createElement("html,body{width:100%;height:100%;overflow:hidden;}");
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ GLOBAL CURSOR SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyGlobalCursor = function(propValue, propOldValue, propData)
+{
+ if (!this._globalCursorStyleSheet) {
+ this._globalCursorStyleSheet = this.createStyleElement();
+ }
+
+ // Selector based remove does not work with the "*" selector in mshtml
+ // this.removeCssRule(this._globalCursorStyleSheet, "*");
+
+ this.removeAllCssRules(this._globalCursorStyleSheet);
+
+ if (propValue) {
+ this.addCssRule(this._globalCursorStyleSheet, "*", "cursor:" + propValue + " !important");
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WINDOW RESIZE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onwindowresize = function(e)
+{
+ // Hide popups, tooltips, ...
+ if (qx.OO.isAvailable("qx.manager.object.PopupManager")) {
+ qx.manager.object.PopupManager.getInstance().update();
+ }
+
+ // Update children
+ this._recomputeInnerWidth();
+ this._recomputeInnerHeight();
+
+ // Flush queues
+ qx.ui.core.Widget.flushGlobalQueues();
+}
+
+// This was an idea to allow mozilla more realtime document resize updates
+// but it seems so, that mozilla stops javascript execution while the user
+// resize windows. Bad.
+
+/*
+qx.Proto._onwindowresizehelper = function()
+{
+ // Test for changes
+ var t1 = this._recomputeInnerWidth();
+ var t2 = this._recomputeInnerHeight();
+
+ // Flush queues
+ if (t1 || t2) {
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+}
+*/
+
+qx.Proto._computeInnerWidth = function() {
+ return this._document.body.offsetWidth;
+}
+
+qx.Proto._computeInnerHeight = function() {
+ return this._document.body.offsetHeight;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ delete this._document;
+ delete this._modalWidgets;
+ delete this._modalNativeWindow;
+
+ // Remove Resize Handler
+ this.removeEventListener("windowresize", this._onwindowresize);
+
+ this._globalCursorStyleSheet = null;
+
+ if (this._blocker)
+ {
+ this._blocker.removeEventListener("mousedown", this.blockHelper, this);
+ this._blocker.removeEventListener("mouseup", this.blockHelper, this);
+
+ this._blocker.dispose();
+ this._blocker = null;
+ }
+
+ /*
+ if (this._resizeHelper)
+ {
+ window.clearInterval(this._resizeHelper);
+ this._resizeHelper = null;
+ }
+ */
+
+ return qx.ui.layout.CanvasLayout.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocumentBlocker.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocumentBlocker.js
new file mode 100644
index 0000000000..5acbb85e12
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ClientDocumentBlocker.js
@@ -0,0 +1,39 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+
+************************************************************************ */
+
+/*!
+ qx.ui.core.ClientDocumentBlocker blocks the inputs from the user.
+ This will be used internally to allow better modal dialogs for example.
+*/
+qx.OO.defineClass("qx.ui.core.ClientDocumentBlocker", qx.ui.basic.Terminator,
+function()
+{
+ qx.ui.basic.Terminator.call(this);
+
+ this.setEdge(0);
+ this.setZIndex(1e8);
+ this.setDisplay(false);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "blocker" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Parent.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Parent.js
new file mode 100644
index 0000000000..29e886170a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Parent.js
@@ -0,0 +1,1207 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#optional(qx.event.handler.FocusHandler)
+#optional(qx.manager.object.ToolTipManager)
+#optional(qx.manager.object.PopupManager)
+#optional(qx.dom.ElementFromPoint)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.core.Parent", qx.ui.core.Widget,
+function()
+{
+ if (this.classname == qx.ui.core.Parent.ABSTRACT_CLASS) {
+ throw new Error("Please omit the usage of qx.ui.core.Parent directly. Choose between any widget which inherits from qx.ui.core.Parent and so comes with a layout implementation!");
+ }
+
+ qx.ui.core.Widget.call(this);
+
+ // Contains all children
+ this._children = [];
+
+ // Create instanceof layout implementation
+ this._layoutImpl = this._createLayoutImpl();
+});
+
+qx.ui.core.Parent.ABSTRACT_CLASS = "qx.ui.core.Parent";
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Individual focus handler for all child elements.
+*/
+qx.OO.addProperty({ name : "focusHandler", type : "object", instance : "qx.event.handler.FocusHandler" });
+
+/*!
+ The current active child.
+*/
+qx.OO.addProperty({ name : "activeChild", type : "object", instance : "qx.ui.core.Widget" });
+
+/*!
+ The current focused child.
+*/
+qx.OO.addProperty({ name : "focusedChild", type : "object", instance : "qx.ui.core.Widget" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CACHED PRIVATE PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "visibleChildren", defaultValue : null });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FOCUS HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.isFocusRoot = function() {
+ return this.getFocusHandler() != null;
+}
+
+qx.Proto.getFocusRoot = function()
+{
+ if (this.isFocusRoot()) {
+ return this;
+ }
+
+ if(this._hasParent) {
+ return this.getParent().getFocusRoot();
+ }
+
+ return null;
+}
+
+qx.Proto.activateFocusRoot = function() {
+ this.setFocusHandler(new qx.event.handler.FocusHandler(this));
+}
+
+qx.Proto._onfocuskeyevent = function(e) {
+ this.getFocusHandler()._onkeyevent(this, e);
+}
+
+qx.Proto._modifyFocusHandler = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ // Add Key Handler
+ this.addEventListener("keydown", this._onfocuskeyevent);
+ this.addEventListener("keypress", this._onfocuskeyevent);
+
+ // Activate focus handling (but keep already configured tabIndex)
+ if (this.getTabIndex() < 1) {
+ this.setTabIndex(1);
+ }
+
+ // But hide the focus outline
+ this.setHideFocus(true);
+
+ // Make myself the default
+ this.setActiveChild(this);
+ }
+ else
+ {
+ // Remove Key Handler
+ this.removeEventListener("keydown", this._onfocuskeyevent);
+ this.removeEventListener("keypress", this._onfocuskeyevent);
+
+ // Deactivate focus handling
+ this.setTabIndex(-1);
+
+ // Don't hide focus outline
+ this.setHideFocus(false);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyFocusedChild = function(propValue, propOldValue, propData)
+{
+ // this.debug("FocusedChild: " + propValue);
+
+ var vFocusValid = qx.util.Validation.isValidObject(propValue);
+ var vBlurValid = qx.util.Validation.isValidObject(propOldValue);
+
+ if (qx.OO.isAvailable("qx.manager.object.PopupManager") && vFocusValid)
+ {
+ var vMgr = qx.manager.object.PopupManager.getInstance();
+ if (vMgr) {
+ vMgr.update(propValue);
+ }
+ }
+
+ if (vBlurValid)
+ {
+ // Dispatch FocusOut
+ if (propOldValue.hasEventListeners("focusout"))
+ {
+ var vEventObject = new qx.event.type.FocusEvent("focusout", propOldValue);
+
+ if (vFocusValid) {
+ vEventObject.setRelatedTarget(propValue);
+ }
+
+ propOldValue.dispatchEvent(vEventObject);
+ vEventObject.dispose();
+ }
+ }
+
+ if (vFocusValid)
+ {
+ if (propValue.hasEventListeners("focusin"))
+ {
+ // Dispatch FocusIn
+ var vEventObject = new qx.event.type.FocusEvent("focusin", propValue);
+
+ if (vBlurValid) {
+ vEventObject.setRelatedTarget(propOldValue);
+ }
+
+ propValue.dispatchEvent(vEventObject);
+ vEventObject.dispose();
+ }
+ }
+
+ if (vBlurValid)
+ {
+ if (this.getActiveChild() == propOldValue) {
+ this.setActiveChild(null);
+ }
+
+ propOldValue.setFocused(false);
+
+ // Dispatch Blur
+ var vEventObject = new qx.event.type.FocusEvent("blur", propOldValue);
+
+ if (vFocusValid) {
+ vEventObject.setRelatedTarget(propValue);
+ }
+
+ propOldValue.dispatchEvent(vEventObject);
+
+ if (qx.OO.isAvailable("qx.manager.object.ToolTipManager"))
+ {
+ var vMgr = qx.manager.object.ToolTipManager.getInstance();
+ if (vMgr) {
+ vMgr.handleBlur(vEventObject);
+ }
+ }
+
+ vEventObject.dispose();
+ }
+
+ if (vFocusValid)
+ {
+ this.setActiveChild(propValue);
+ propValue.setFocused(true);
+ qx.event.handler.EventHandler.getInstance().setFocusRoot(this);
+
+ // Dispatch Focus
+ var vEventObject = new qx.event.type.FocusEvent("focus", propValue);
+
+ if (vBlurValid) {
+ vEventObject.setRelatedTarget(propOldValue);
+ }
+
+ propValue.dispatchEvent(vEventObject);
+
+ if (qx.OO.isAvailable("qx.manager.object.ToolTipManager"))
+ {
+ var vMgr = qx.manager.object.ToolTipManager.getInstance();
+ if (vMgr) {
+ vMgr.handleFocus(vEventObject);
+ }
+ }
+
+ vEventObject.dispose();
+ }
+
+ // Flush Queues
+ // Do we really need this?
+ // qx.ui.core.Widget.flushGlobalQueues();
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._layoutImpl = null;
+
+qx.Proto._createLayoutImpl = function() {
+ return null;
+}
+
+qx.Proto.getLayoutImpl = function() {
+ return this._layoutImpl;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: MANAGE ALL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Return the array of all children
+*/
+qx.Proto.getChildren = function() {
+ return this._children;
+}
+
+/*!
+ Get children count
+*/
+qx.Proto.getChildrenLength = function() {
+ return this.getChildren().length;
+}
+
+/*!
+ Check if the widget has a children
+*/
+qx.Proto.hasChildren = function() {
+ return this.getChildrenLength() > 0;
+}
+
+/*!
+ Check if there are any childrens inside
+*/
+qx.Proto.isEmpty = function() {
+ return this.getChildrenLength() == 0;
+}
+
+/*!
+ Get the position of a children.
+*/
+qx.Proto.indexOf = function(vChild) {
+ return this.getChildren().indexOf(vChild);
+}
+
+/*!
+Check if the given qx.ui.core.Widget is a children.
+
+#param des[qx.ui.core.Widget]: The widget which should be checked.
+*/
+qx.Proto.contains = function(vWidget)
+{
+ switch(vWidget)
+ {
+ case null:
+ return false;
+
+ case this:
+ return true;
+
+ default:
+ // try the next parent of the widget (recursive until found)
+ return this.contains(vWidget.getParent());
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: MANAGE VISIBLE ONES
+
+ uses a cached private property
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Return the array of all visible children
+ (which are configured as visible=true)
+*/
+qx.Proto._computeVisibleChildren = function()
+{
+ var vVisible = [];
+ var vChildren = this.getChildren();
+ var vLength = vChildren.length;
+
+ for (var i=0; i<vLength; i++)
+ {
+ var vChild = vChildren[i];
+ if (vChild._isDisplayable) {
+ vVisible.push(vChild);
+ }
+ }
+
+ return vVisible;
+}
+
+/*!
+ Get length of visible children
+*/
+qx.Proto.getVisibleChildrenLength = function() {
+ return this.getVisibleChildren().length;
+}
+
+/*!
+ Check if the widget has any visible children
+*/
+qx.Proto.hasVisibleChildren = function() {
+ return this.getVisibleChildrenLength() > 0;
+}
+
+/*!
+ Check if there are any visible childrens inside
+*/
+qx.Proto.isVisibleEmpty = function() {
+ return this.getVisibleChildrenLength() == 0;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: ADD
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Add/Append another widget. Allows to add multiple at
+ one, a parameter could be a widget.
+*/
+qx.Proto.add = function()
+{
+ var vWidget;
+
+ for (var i=0, l=arguments.length; i<l; i++)
+ {
+ vWidget = arguments[i];
+
+ if (!(vWidget instanceof qx.ui.core.Parent) && !(vWidget instanceof qx.ui.basic.Terminator))
+ {
+ throw new Error("Invalid Widget: " + vWidget);
+ }
+ else
+ {
+ vWidget.setParent(this);
+ }
+ }
+
+ return this;
+}
+
+qx.Proto.addAt = function(vChild, vIndex)
+{
+ if (qx.util.Validation.isInvalidNumber(vIndex) || vIndex == -1) {
+ throw new Error("Not a valid index for addAt(): " + vIndex);
+ }
+
+ if (vChild.getParent() == this)
+ {
+ var vChildren = this.getChildren();
+ var vOldIndex = vChildren.indexOf(vChild);
+
+ if (vOldIndex != vIndex)
+ {
+ if (vOldIndex != -1) {
+ qx.lang.Array.removeAt(vChildren, vOldIndex);
+ }
+
+ qx.lang.Array.insertAt(vChildren, vChild, vIndex);
+
+ if (this._initialLayoutDone)
+ {
+ this._invalidateVisibleChildren();
+ this.getLayoutImpl().updateChildrenOnMoveChild(vChild, vIndex, vOldIndex);
+ }
+ }
+ }
+ else
+ {
+ vChild._insertIndex = vIndex;
+ vChild.setParent(this);
+ }
+}
+
+qx.Proto.addAtBegin = function(vChild) {
+ return this.addAt(vChild, 0);
+}
+
+qx.Proto.addAtEnd = function(vChild)
+{
+ // we need to fix here, when the child is already inside myself, but
+ // want to change its position
+ var vLength = this.getChildrenLength();
+ return this.addAt(vChild, vChild.getParent() == this ? vLength - 1 : vLength);
+}
+
+/*!
+ Add a widget before another already inserted child
+*/
+qx.Proto.addBefore = function(vChild, vBefore)
+{
+ var vChildren = this.getChildren();
+ var vTargetIndex = vChildren.indexOf(vBefore);
+
+ if (vTargetIndex == -1) {
+ throw new Error("Child to add before: " + vBefore + " is not inside this parent.");
+ }
+
+ var vSourceIndex = vChildren.indexOf(vChild);
+
+ if (vSourceIndex == -1 || vSourceIndex > vTargetIndex) {
+ vTargetIndex++;
+ }
+
+ return this.addAt(vChild, Math.max(0, vTargetIndex-1));
+}
+
+/*!
+ Add a widget after another already inserted child
+*/
+qx.Proto.addAfter = function(vChild, vAfter)
+{
+ var vChildren = this.getChildren();
+ var vTargetIndex = vChildren.indexOf(vAfter);
+
+ if (vTargetIndex == -1) {
+ throw new Error("Child to add after: " + vAfter + " is not inside this parent.");
+ }
+
+ var vSourceIndex = vChildren.indexOf(vChild);
+
+ if (vSourceIndex != -1 && vSourceIndex < vTargetIndex) {
+ vTargetIndex--;
+ }
+
+ return this.addAt(vChild, Math.min(vChildren.length, vTargetIndex+1));
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: REMOVE
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Remove one or multiple childrens.
+*/
+qx.Proto.remove = function()
+{
+ var vWidget;
+
+ for (var i=0, l=arguments.length; i<l; i++)
+ {
+ vWidget = arguments[i];
+
+ if (!(vWidget instanceof qx.ui.core.Parent) && !(vWidget instanceof qx.ui.basic.Terminator))
+ {
+ throw new Error("Invalid Widget: " + vWidget);
+ }
+ else if (vWidget.getParent() == this)
+ {
+ vWidget.setParent(null);
+ }
+ }
+}
+
+qx.Proto.removeAt = function(vIndex)
+{
+ var vChild = this.getChildren()[vIndex];
+
+ if (vChild)
+ {
+ delete vChild._insertIndex;
+
+ vChild.setParent(null);
+ }
+}
+
+/*!
+ Remove all childrens.
+*/
+qx.Proto.removeAll = function()
+{
+ var cs = this.getChildren();
+ var co = cs[0];
+
+ while (co)
+ {
+ this.remove(co);
+ co = cs[0];
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: FIRST CHILD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getFirstChild = function() {
+ return qx.lang.Array.getFirst(this.getChildren());
+}
+
+qx.Proto.getFirstVisibleChild = function() {
+ return qx.lang.Array.getFirst(this.getVisibleChildren());
+}
+
+qx.Proto.getFirstActiveChild = function(vIgnoreClasses) {
+ return qx.ui.core.Widget.getActiveSiblingHelper(null, this, 1, vIgnoreClasses, "first");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: LAST CHILD
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getLastChild = function() {
+ return qx.lang.Array.getLast(this.getChildren());
+}
+
+qx.Proto.getLastVisibleChild = function() {
+ return qx.lang.Array.getLast(this.getVisibleChildren());
+}
+
+qx.Proto.getLastActiveChild = function(vIgnoreClasses) {
+ return qx.ui.core.Widget.getActiveSiblingHelper(null, this, -1, vIgnoreClasses, "last");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT: LOOP UTILS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.forEachChild = function(vFunc)
+{
+ var ch=this.getChildren(), chc, i=-1;
+ while(chc=ch[++i]) {
+ vFunc.call(chc, i);
+ }
+}
+
+qx.Proto.forEachVisibleChild = function(vFunc)
+{
+ var ch=this.getVisibleChildren(), chc, i=-1;
+ while(chc=ch[++i]) {
+ vFunc.call(chc, i);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEAR/DISAPPEAR MESSAGES FOR CHILDREN
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeAppear = function()
+{
+ qx.ui.core.Widget.prototype._beforeAppear.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._beforeAppear();
+ }
+ });
+}
+
+qx.Proto._afterAppear = function()
+{
+ qx.ui.core.Widget.prototype._afterAppear.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._afterAppear();
+ }
+ });
+}
+
+qx.Proto._beforeDisappear = function()
+{
+ qx.ui.core.Widget.prototype._beforeDisappear.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._beforeDisappear();
+ }
+ });
+}
+
+qx.Proto._afterDisappear = function()
+{
+ qx.ui.core.Widget.prototype._afterDisappear.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._afterDisappear();
+ }
+ });
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INSERTDOM/REMOVEDOM MESSAGES FOR CHILDREN
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeInsertDom = function()
+{
+ qx.ui.core.Widget.prototype._beforeInsertDom.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._beforeInsertDom();
+ }
+ });
+}
+
+qx.Proto._afterInsertDom = function()
+{
+ qx.ui.core.Widget.prototype._afterInsertDom.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._afterInsertDom();
+ }
+ });
+}
+
+qx.Proto._beforeRemoveDom = function()
+{
+ qx.ui.core.Widget.prototype._beforeRemoveDom.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._beforeRemoveDom();
+ }
+ });
+}
+
+qx.Proto._afterRemoveDom = function()
+{
+ qx.ui.core.Widget.prototype._afterRemoveDom.call(this);
+
+ this.forEachVisibleChild(function() {
+ if (this.isAppearRelevant()) {
+ this._afterRemoveDom();
+ }
+ });
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAYBLE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._handleDisplayableCustom = function(vDisplayable, vParent, vHint)
+{
+ this.forEachChild(function() {
+ this._handleDisplayable();
+ });
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE QUEUE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._addChildrenToStateQueue = function()
+{
+ this.forEachVisibleChild(function() {
+ this.addToStateQueue();
+ });
+}
+
+qx.Proto.recursiveAddToStateQueue = function()
+{
+ this.addToStateQueue();
+
+ this.forEachVisibleChild(function() {
+ this.recursiveAddToStateQueue();
+ });
+}
+
+qx.Proto._recursiveAppearanceThemeUpdate = function(vNewAppearanceTheme, vOldAppearanceTheme)
+{
+ qx.ui.core.Widget.prototype._recursiveAppearanceThemeUpdate.call(this, vNewAppearanceTheme, vOldAppearanceTheme);
+
+ this.forEachVisibleChild(function() {
+ this._recursiveAppearanceThemeUpdate(vNewAppearanceTheme, vOldAppearanceTheme);
+ });
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN QUEUE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._addChildToChildrenQueue = function(vChild)
+{
+ if (!vChild._isInParentChildrenQueue && !vChild._isDisplayable) {
+ this.warn("Ignoring invisible child: " + vChild);
+ }
+
+ if (!vChild._isInParentChildrenQueue && vChild._isDisplayable)
+ {
+ qx.ui.core.Widget.addToGlobalLayoutQueue(this);
+
+ if (!this._childrenQueue) {
+ this._childrenQueue = {};
+ }
+
+ this._childrenQueue[vChild.toHashCode()] = vChild;
+ }
+}
+
+qx.Proto._removeChildFromChildrenQueue = function(vChild)
+{
+ if (this._childrenQueue && vChild._isInParentChildrenQueue)
+ {
+ delete this._childrenQueue[vChild.toHashCode()];
+
+ if (qx.lang.Object.isEmpty(this._childrenQueue)) {
+ qx.ui.core.Widget.removeFromGlobalLayoutQueue(this);
+ }
+ }
+}
+
+qx.Proto._flushChildrenQueue = function()
+{
+ if (!qx.lang.Object.isEmpty(this._childrenQueue))
+ {
+ this.getLayoutImpl().flushChildrenQueue(this._childrenQueue);
+ delete this._childrenQueue;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT QUEUE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._addChildrenToLayoutQueue = function(p)
+{
+ this.forEachChild(function() {
+ this.addToLayoutChanges(p);
+ });
+}
+
+qx.Proto._layoutChild = function(vChild)
+{
+ if (!vChild._isDisplayable)
+ {
+ this.warn("Want to render an invisible child: " + vChild + " -> omitting!");
+ return;
+ }
+
+ // APPLY LAYOUT
+ var vChanges = vChild._layoutChanges;
+
+ // this.debug("Layouting " + vChild + ": " + qx.lang.Object.getKeysAsString(vChanges));
+
+ try
+ {
+ if (vChanges.borderX) {
+ this._applyBorderX(vChild, vChanges);
+ }
+
+ if (vChanges.borderY) {
+ this._applyBorderY(vChild, vChanges);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Could not apply border to child " + vChild, ex);
+ }
+
+ try
+ {
+ if (vChanges.paddingLeft || vChanges.paddingRight) {
+ vChild._applyPaddingX(this, vChanges);
+ }
+
+ if (vChanges.paddingTop || vChanges.paddingBottom) {
+ vChild._applyPaddingY(this, vChanges);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Could not apply padding to child " + vChild, ex);
+ }
+
+
+ // WRAP TO LAYOUT ENGINE
+ try
+ {
+ this.getLayoutImpl().layoutChild(vChild, vChanges);
+ }
+ catch(ex)
+ {
+ this.error("Could not layout child " + vChild + " through layout handler", ex);
+ }
+
+
+ // POST LAYOUT
+ try
+ {
+ vChild._layoutPost(vChanges);
+ }
+ catch(ex)
+ {
+ this.error("Could not post layout child " + vChild, ex);
+ }
+
+
+ // DISPLAY DOM NODE
+ try
+ {
+ // insert dom node (if initial flag enabled)
+ if (vChanges.initial)
+ {
+ vChild._initialLayoutDone = true;
+ qx.ui.core.Widget.addToGlobalDisplayQueue(vChild);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Could not handle display updates from layout flush for child " + vChild, ex);
+ }
+
+
+ // CLEANUP
+ vChild._layoutChanges = {};
+
+ delete vChild._isInParentLayoutQueue;
+ delete this._childrenQueue[vChild.toHashCode()];
+}
+
+qx.Proto._layoutPost = qx.util.Return.returnTrue;
+
+/*!
+ Fix Operas Rendering Bugs
+*/
+if (qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto._layoutChildOrig = qx.Proto._layoutChild;
+
+ qx.Proto._layoutChild = function(vChild)
+ {
+ if (!vChild._initialLayoutDone || !vChild._layoutChanges.borderX || !vChild._layoutChanges.borderY) {
+ return this._layoutChildOrig(vChild);
+ }
+
+ var vStyle = vChild.getElement().style;
+
+ var vOldDisplay = vStyle.display;
+ vStyle.display = "none";
+ var vRet = this._layoutChildOrig(vChild);
+ vStyle.display = vOldDisplay;
+
+ return vRet;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIMENSION CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computePreferredInnerWidth = function() {
+ return this.getLayoutImpl().computeChildrenNeededWidth();
+}
+
+qx.Proto._computePreferredInnerHeight = function() {
+ return this.getLayoutImpl().computeChildrenNeededHeight();
+}
+
+qx.Proto._changeInnerWidth = function(vNew, vOld)
+{
+ var vLayout = this.getLayoutImpl();
+
+ if (vLayout.invalidateChildrenFlexWidth) {
+ vLayout.invalidateChildrenFlexWidth();
+ }
+
+ this.forEachVisibleChild(function()
+ {
+ if (vLayout.updateChildOnInnerWidthChange(this) && this._recomputeBoxWidth())
+ {
+ this._recomputeOuterWidth();
+ this._recomputeInnerWidth();
+ }
+ });
+}
+
+qx.Proto._changeInnerHeight = function(vNew, vOld)
+{
+ var vLayout = this.getLayoutImpl();
+
+ if (vLayout.invalidateChildrenFlexHeight) {
+ vLayout.invalidateChildrenFlexHeight();
+ }
+
+ this.forEachVisibleChild(function()
+ {
+ if (vLayout.updateChildOnInnerHeightChange(this) && this._recomputeBoxHeight())
+ {
+ this._recomputeOuterHeight();
+ this._recomputeInnerHeight();
+ }
+ });
+}
+
+qx.Proto.getInnerWidthForChild = function(vChild) {
+ return this.getInnerWidth();
+}
+
+qx.Proto.getInnerHeightForChild = function(vChild) {
+ return this.getInnerHeight();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WIDGET FROM POINT SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getWidgetFromPointHelper = function(x, y)
+{
+ var ch = this.getChildren();
+
+ for (var chl=ch.length, i=0; i<chl; i++) {
+ if (qx.dom.ElementFromPoint.getElementAbsolutePointChecker(ch[i].getElement(), x, y)) {
+ return ch[i].getWidgetFromPointHelper(x, y);
+ }
+ }
+
+ return this;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLONE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._cloneRecursive = function(cloneInstance)
+{
+ var ch = this.getChildren();
+ var chl = ch.length;
+ var cloneChild;
+
+ for (var i=0; i<chl; i++)
+ {
+ cloneChild = ch[i].clone(true);
+ cloneInstance.add(cloneChild);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ REMAPPING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._remappingChildTable = [ "add", "remove", "addAt", "addAtBegin", "addAtEnd", "removeAt", "addBefore", "addAfter", "removeAll" ];
+qx.Proto._remapStart = "return this._remappingChildTarget.";
+qx.Proto._remapStop = ".apply(this._remappingChildTarget, arguments)";
+
+qx.Proto.remapChildrenHandlingTo = function(vTarget)
+{
+ var t = this._remappingChildTable;
+
+ this._remappingChildTarget = vTarget;
+
+ for (var i=0, l=t.length, s; i<l; i++) {
+ s = t[i]; this[s] = new Function(qx.ui.core.Parent.prototype._remapStart + s + qx.ui.core.Parent.prototype._remapStop);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._layoutImpl)
+ {
+ this._layoutImpl.dispose();
+ this._layoutImpl = null;
+ }
+
+ for (var i in this._childrenQueue) {
+ delete this._childrenQueue[i];
+ }
+
+ this._childrenQueue = null;
+ this._remappingChildTable = null;
+ this._remappingChildTarget = null;
+
+ if (this._children)
+ {
+ var chl = this._children.length;
+
+ for (var i=chl-1; i>=0; i--)
+ {
+ this._children[i].dispose();
+ this._children[i] = null;
+ }
+
+ this._children = null;
+ }
+
+ delete this._cachedVisibleChildren;
+
+ // Remove Key Handler
+ if (this.getFocusHandler())
+ {
+ this.removeEventListener("keydown", this._onfocuskeyevent);
+ this.removeEventListener("keypress", this._onfocuskeyevent);
+
+ this.forceFocusHandler(null);
+ }
+
+ return qx.ui.core.Widget.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js
new file mode 100644
index 0000000000..c4630fba87
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/ScrollBar.js
@@ -0,0 +1,260 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * A scroll bar.
+ *
+ * @param horizontal {boolean ? false} whether the scroll bar should be
+ * horizontal. If false it will be vertical.
+ */
+qx.OO.defineClass("qx.ui.core.ScrollBar", qx.ui.layout.BoxLayout,
+function(horizontal) {
+ qx.ui.layout.BoxLayout.call(this, horizontal ? "horizontal" : "vertical");
+
+ this._horizontal = (horizontal == true);
+
+ this._scrollBar = new qx.ui.layout.CanvasLayout;
+ if (qx.sys.Client.getInstance().isGecko()) {
+ // NOTE: We have to force not using position:absolute, because this causes
+ // strange looking scrollbars in some cases (e.g. in Firefox under
+ // Linux the horizontal scrollbar is too high)
+ this._scrollBar.setStyleProperty("position", "");
+ }
+ this._scrollBar.setOverflow(horizontal ? "scrollX" : "scrollY");
+ this._scrollBar.enableInlineEvent("scroll");
+ this._scrollBar.addEventListener("scroll", this._onscroll, this);
+
+ this._scrollContent = new qx.ui.basic.Terminator;
+ if (qx.sys.Client.getInstance().isGecko()) {
+ this._scrollContent.setStyleProperty("position", "");
+ }
+ this._scrollBar.add(this._scrollContent);
+
+ if (this._horizontal) {
+ this._scrollContent.setHeight(5);
+ this._scrollBar.setWidth("100%");
+ this._scrollBar.setHeight(this._getScrollBarWidth());
+
+ // IE needs that the scrollbar element has a width of +1
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ this.setHeight(this._getScrollBarWidth());
+ this.setOverflow("hidden");
+ this._scrollBar.setHeight(this._getScrollBarWidth() + 1);
+ this._scrollBar.setTop(-1);
+ }
+ } else {
+ this._scrollContent.setWidth(5);
+ this._scrollBar.setHeight("100%");
+ this._scrollBar.setWidth(this._getScrollBarWidth());
+
+ // IE needs that the scrollbar element has a width of +1
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ this.setWidth(this._getScrollBarWidth());
+ this.setOverflow("hidden");
+ this._scrollBar.setWidth(this._getScrollBarWidth() + 1);
+ this._scrollBar.setLeft(-1);
+ }
+ }
+
+ this.add(this._scrollBar);
+
+ this.setMaximum(0);
+});
+
+/**
+ * The current value of the scroll bar. This value is between 0 and
+ * (maxium - size), where size is the width of a horizontal resp. the height of
+ * a vertical scroll bar in pixels.
+ *
+ * @see #maximum
+ */
+qx.OO.addProperty({ name:"value", type:"number", defaultValue:0, allowNull:false });
+
+/**
+ * The maximum value of the scroll bar. Note that the size of the scroll bar is
+ * substracted.
+ *
+ * @see #value
+ */
+qx.OO.addProperty({ name:"maximum", type:"number", allowNull:false });
+
+/**
+ * Whether to merge consecutive scroll event. If true, events will be collected
+ * until the user stops scrolling, so the scroll bar itself will move smoothly
+ * and the scrolled content will update asynchroniously.
+ */
+qx.OO.addProperty({ name:"mergeEvents", type:"boolean", defaultValue:false, allowNull:false });
+
+
+// property checker
+qx.Proto._checkValue = function(propValue, propData) {
+ var innerSize = !this.getElement() ? 0 :
+ (this._horizontal ? this.getInnerWidth() : this.getInnerHeight());
+
+ // NOTE: We can't use Number.limit here because our maximum may get negative
+ // (when the scrollbar isn't needed). In this case Number.limit returns
+ // this negative maximum instead of 0. But we need that the minimum is
+ // stronger than the maximum.
+ // -> We use Math.max and Math.min
+ return Math.max(0, Math.min(this.getMaximum() - innerSize, propValue));
+}
+
+
+// property modifier
+qx.Proto._modifyValue = function(propValue, propOldValue, propData) {
+ if (! this._internalValueChange && this._isCreated) {
+ this._positionKnob(propValue);
+ }
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyMaximum = function(propValue, propOldValue, propData) {
+ if (this._horizontal) {
+ this._scrollContent.setWidth(propValue);
+ } else {
+ this._scrollContent.setHeight(propValue);
+ }
+
+ // recheck the value
+ this.setValue(this._checkValue(this.getValue()));
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyVisibility = function(propValue, propOldValue, propData) {
+ if (! propValue) {
+ this._positionKnob(0);
+ } else {
+ this._positionKnob(this.getValue());
+ }
+
+ return qx.ui.layout.BoxLayout.prototype._modifyVisibility.call(this, propValue, propOldValue, propData);
+};
+
+
+// overridden
+qx.Proto._computePreferredInnerWidth = function() {
+ return this._horizontal ? 0 : this._getScrollBarWidth();
+}
+
+
+// overridden
+qx.Proto._computePreferredInnerHeight = function() {
+ return this._horizontal ? this._getScrollBarWidth() : 0;
+}
+
+
+/**
+ * Gets the width of vertical scroll bar.
+ *
+ * @return {int} the width in pixels.
+ */
+qx.Proto._getScrollBarWidth = function() {
+ // Auto-detect the scrollbar width
+ if (qx.ui.core.ScrollBar._scrollBarWidth == null) {
+ var dummy = document.createElement("div");
+ dummy.style.width = "100px";
+ dummy.style.height = "100px";
+ dummy.style.overflow = "scroll";
+ dummy.style.visibility = "hidden";
+ document.body.appendChild(dummy);
+ qx.ui.core.ScrollBar._scrollBarWidth = dummy.offsetWidth - dummy.clientWidth;
+ document.body.removeChild(dummy);
+ }
+ return qx.ui.core.ScrollBar._scrollBarWidth;
+}
+
+
+/**
+ * Event handler. Called when the user scrolled.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onscroll = function(evt) {
+ var value = this._horizontal ? this._scrollBar.getScrollLeft() : this._scrollBar.getScrollTop();
+ if (this.getMergeEvents()) {
+ this._lastScrollEventValue = value;
+ window.clearTimeout(this._setValueTimerId);
+ var self = this;
+ this._setValueTimerId = window.setTimeout(function() {
+ self._internalValueChange = true;
+ self.setValue(self._lastScrollEventValue);
+ self._internalValueChange = false;
+ qx.ui.core.Widget.flushGlobalQueues();
+ }, qx.ui.core.ScrollBar.EVENT_DELAY);
+ } else {
+ this._internalValueChange = true;
+ this.setValue(value);
+ this._internalValueChange = false;
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+}
+
+
+/**
+ * Positions the scroll bar knob at a certain value.
+ *
+ * @param value {int} The value where to postion the scroll bar.
+ */
+qx.Proto._positionKnob = function(value) {
+ if (this._horizontal) {
+ this._scrollBar.setScrollLeft(value);
+ } else {
+ this._scrollBar.setScrollTop(value);
+ }
+}
+
+
+// overridden
+qx.Proto._afterAppear = function() {
+ qx.ui.layout.BoxLayout.prototype._afterAppear.call(this);
+
+ //this.debug("Setting to value: " + this.getValue());
+ this._positionKnob(this.getValue());
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._scrollContent) {
+ this._scrollContent.dispose();
+ this._scrollContent = null;
+ }
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
+
+
+/**
+ * The delay when to update the scroll bar value after a scroll event if
+ * {@link #mergeEvents} is true (in milliseconds). All scroll events that arrive
+ * in shorter time will be merged.
+ */
+qx.Class.EVENT_DELAY = 250;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Widget.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Widget.js
new file mode 100644
index 0000000000..de775ac97b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/core/Widget.js
@@ -0,0 +1,5703 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#require(qx.renderer.color.ColorCache)
+#require(qx.renderer.border.BorderCache)
+#require(qx.manager.object.AppearanceManager)
+#after(qx.component.init.InterfaceInitComponent)
+#optional(qx.ui.core.Parent)
+#optional(qx.ui.form.Button)
+#optional(qx.client.Timer)
+#optional(qx.client.Command)
+#optional(qx.ui.popup.ToolTip)
+#optional(qx.ui.menu.Menu)
+#optional(qx.ui.basic.Inline)
+
+************************************************************************ */
+
+/**
+ * This is the main widget, all visible objects in the application extend this.
+ *
+ * @event beforeAppear {qx.event.type.Event}
+ * @event appear {qx.event.type.Event}
+ * @event beforeDisappear {qx.event.type.Event}
+ * @event disappear {qx.event.type.Event}
+ * @event beforeInsertDom {qx.event.type.Event}
+ * @event insertDom {qx.event.type.Event}
+ * @event beforeRemoveDom {qx.event.type.Event}
+ * @event removeDom {qx.event.type.Event}
+ * @event create {qx.event.type.Event}
+ * @event execute {qx.event.type.Event}
+ * @event FADE_FINISHED {qx.event.type.DataEvent}
+ * @event mouseover {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event mousemove {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event mouseout {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event mousedown {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event mouseup {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event mousewheel {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event click {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event dblclick {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event contextmenu {qx.event.type.MouseEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event keydown {qx.event.type.KeyEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event keypress {qx.event.type.KeyEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event keyinput {qx.event.type.KeyEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event keyup {qx.event.type.KeyEvent} (Fired by {@link qx.event.handler.EventHandler})
+ * @event focusout {qx.event.type.FocusEvent} (Fired by {@link qx.ui.core.Parent})
+ * @event focusin {qx.event.type.FocusEvent} (Fired by {@link qx.ui.core.Parent})
+ * @event blur {qx.event.type.FocusEvent} (Fired by {@link qx.ui.core.Parent})
+ * @event focus {qx.event.type.FocusEvent} (Fired by {@link qx.ui.core.Parent})
+ */
+qx.OO.defineClass("qx.ui.core.Widget", qx.core.Target,
+function()
+{
+ if (this.classname == qx.ui.core.Widget.ABSTRACT_CLASS) {
+ throw new Error("Please omit the usage of qx.ui.core.Widget directly. Choose between qx.ui.core.Parent and qx.ui.basic.Terminator instead!");
+ }
+
+ qx.core.Target.call(this, true);
+
+
+ // ************************************************************************
+ // HTML MAPPING DATA STRUCTURES
+ // ************************************************************************
+ // Allows the user to setup styles and attributes without a
+ // need to have the target element created already.
+ /*
+ this._htmlProperties = { className : this.classname }
+ this._htmlAttributes = { qxhashcode : this._hashCode }
+ */
+ this._styleProperties = { position : "absolute" }
+
+
+ // ************************************************************************
+ // LAYOUT CHANGES
+ // ************************************************************************
+ this._layoutChanges = {};
+
+
+ // ************************************************************************
+ // APPEARANCE
+ // ************************************************************************
+ this._states = {};
+ this._applyInitialAppearance();
+});
+
+qx.Class.ABSTRACT_CLASS = "qx.ui.core.Widget";
+
+// Will be calculated later (TODO: Move to qx.Dom?)
+qx.Class.SCROLLBAR_SIZE = 16;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault("enableQueueDebug", false);
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BASIC PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The parent widget (the real object, no ID or something)
+*/
+qx.OO.addProperty({ name : "parent", type : "object", instance : "qx.ui.core.Parent", defaultValue : null });
+
+/*!
+ The element node (if the widget is created, otherwise null)
+*/
+qx.OO.addProperty({ name : "element" });
+
+/*!
+ Simple and fast switch of the visibility of a widget.
+*/
+qx.OO.addProperty({ name : "visibility", type : "boolean", defaultValue : true });
+
+/*!
+ If the widget should be displayed. Use this property instead of visibility if the change
+ in visibility should have effects on the parent widget.
+*/
+qx.OO.addProperty({ name : "display", type : "boolean", defaultValue : true });
+
+/*!
+ If you switch this to true, the widget doesn't handle
+ events directly. It will redirect them to the parent
+ widget.
+*/
+qx.OO.addProperty({ name : "anonymous", type : "boolean", defaultValue : false, getAlias : "isAnonymous" });
+
+/*!
+ The tagname of the element which should automatically be created
+*/
+qx.OO.addProperty({ name : "tagName", type : "string", defaultValue : "div" });
+
+/*!
+ This is used by many layout managers to control the individual horizontal alignment of this widget inside this parent.
+
+ This should be used with caution since in some cases
+ this might give unrespected results.
+*/
+qx.OO.addProperty({ name : "horizontalAlign", type : "string" });
+
+/*!
+ This is used by many layout managers to control the individual vertical alignment of this widget inside this parent.
+
+ This should be used with caution since in some cases
+ this might give unrespected results.
+*/
+qx.OO.addProperty({ name : "verticalAlign", type : "string" });
+
+/*!
+ Should this widget be stretched on the x-axis if the layout handler will do this?
+ Used by some layout handlers (qx.ui.layout.BoxLayout, ...).
+*/
+qx.OO.addProperty({ name : "allowStretchX", type : "boolean", defaultValue : true });
+
+/*!
+ Should this widget be stretched on the y-axis if the layout handler will do this?
+ Used by some layout handlers (qx.ui.layout.BoxLayout, ...).
+*/
+qx.OO.addProperty({ name : "allowStretchY", type : "boolean", defaultValue : true });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STYLE PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Mapping to native style property z-index.
+
+ This should be used with caution since in some cases
+ this might give unrespected results.
+*/
+qx.OO.addProperty({ name : "zIndex", type : "number" });
+
+/*!
+ The backgroundColor style property of the rendered widget.
+ As input are allowed any instance of qx.renderer.color.Color or a string which defines the color itself.
+*/
+qx.OO.addProperty({ name : "backgroundColor", type : "object", instance : "qx.renderer.color.Color", convert : qx.renderer.color.ColorCache, allowMultipleArguments : true });
+
+/*!
+ The color style property of the rendered widget.
+ As input are allowed any instance of qx.renderer.color.Color or a string which defines the color itself.
+*/
+qx.OO.addProperty({ name : "color", type : "object", instance : "qx.renderer.color.Color", convert : qx.renderer.color.ColorCache, allowMultipleArguments : true });
+
+/*!
+ The border property describes how to paint the border on the widget.
+
+ This should be used with caution since in some cases (mostly complex widgets)
+ this might give unrespected results.
+*/
+qx.OO.addProperty({ name : "border", type : "object", instance : "qx.renderer.border.Border", convert : qx.renderer.border.BorderCache, allowMultipleArguments : true });
+
+/*!
+ Mapping to native style property opacity.
+
+ The uniform opacity setting to be applied across an entire object. Behaves like the new CSS-3 Property.
+ Any values outside the range 0.0 (fully transparent) to 1.0 (fully opaque) will be clamped to this range.
+*/
+qx.OO.addProperty({ name : "opacity", type : "number" });
+
+/*!
+ Mapping to native style property cursor.
+
+ The name of the cursor to show when the mouse pointer is over the widget.
+ This is any valid CSS2 cursor name defined by W3C.
+
+ The following values are possible:
+ <ul><li>default</li>
+ <li>crosshair</li>
+ <li>pointer (hand is the ie name and will mapped to pointer in non-ie).</li>
+ <li>move</li>
+ <li>n-resize</li>
+ <li>ne-resize</li>
+ <li>e-resize</li>
+ <li>se-resize</li>
+ <li>s-resize</li>
+ <li>sw-resize</li>
+ <li>w-resize</li>
+ <li>nw-resize</li>
+ <li>text</li>
+ <li>wait</li>
+ <li>help </li>
+ <li>url([file]) = self defined cursor, file should be an ANI- or CUR-type</li>
+ </ul>
+*/
+qx.OO.addProperty({ name : "cursor", type : "string" });
+
+/*!
+ Mapping to native style property background-image.
+
+ The URI of the image file to use as background image.
+*/
+qx.OO.addProperty({ name : "backgroundImage", type : "string" });
+
+/**
+ * Describes how to handle content that is too large to fit inside the widget.
+ *
+ * Overflow modes:
+ * * hidden: The content is clipped
+ * * auto: Scroll bars are shown as needed
+ * * scroll: Scroll bars are always shown. Even if there is enough room for the content inside the widget.
+ * * scrollX: Scroll bars for the X-Axis are always shown. Even if there is enough room for the content inside the widget.
+ * * scrollY: Scroll bars for the Y-Axis are always shown. Even if there is enough room for the content inside the widget.
+ */
+qx.OO.addProperty({ name : "overflow", type : "string", addToQueue : true });
+
+/*!
+ Clipping of the widget (left)
+*/
+qx.OO.addProperty({ name : "clipLeft", type : "number", impl : "clip" });
+
+/*!
+ Clipping of the widget (top)
+*/
+qx.OO.addProperty({ name : "clipTop", type : "number", impl : "clip" });
+
+/*!
+ Clipping of the widget (width)
+*/
+qx.OO.addProperty({ name : "clipWidth", type : "number", impl : "clip" });
+
+/*!
+ Clipping of the widget (height)
+*/
+qx.OO.addProperty({ name : "clipHeight", type : "number", impl : "clip" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGMENT PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Set this to a positive value makes the widget able to get the focus.
+ It even is reachable through the usage of the tab-key.
+
+ Widgets with the same tabIndex are handled through there position
+ in the document.
+*/
+qx.OO.addProperty({ name : "tabIndex", type : "number", defaultValue : -1 });
+
+/*!
+ If the focus outline should be hidden.
+*/
+qx.OO.addProperty({ name : "hideFocus", type : "boolean", defaultValue : false });
+
+/*!
+ Use DOM focussing (focus() and blur() methods of DOM nodes)
+*/
+qx.OO.addProperty({ name : "enableElementFocus", type : "boolean", defaultValue : true });
+
+/*!
+ Handle focus state of this widget.
+
+ someWidget.setFocused(true) set the current focus to this widget.
+ someWidget.setFocused(false) remove the current focus and leave it blank.
+
+ Normally you didn't need to set this directly.
+*/
+qx.OO.addProperty({ name : "focused", type : "boolean", defaultValue : false });
+
+/*!
+ Toggle the possibility to select the element of this widget.
+*/
+qx.OO.addProperty({ name : "selectable", type : "boolean", defaultValue : true, getAlias : "isSelectable" });
+
+/*!
+ Contains the tooltip object connected to the widget.
+*/
+qx.OO.addProperty({ name : "toolTip", type : "object", instance : "qx.ui.popup.ToolTip" });
+
+/*!
+ Contains the context menu object connected to the widget. (Need real implementation)
+*/
+qx.OO.addProperty({ name : "contextMenu", type : "object", instance : "qx.ui.menu.Menu" });
+
+/*!
+ Capture all events and map them to this widget
+*/
+qx.OO.addProperty({ name : "capture", type : "boolean", defaultValue : false });
+
+/*!
+ Contains the support drop types for drag and drop support
+*/
+qx.OO.addProperty({ name : "dropDataTypes" });
+
+/*!
+ A command called if the widget should be excecuted (a placeholder for buttons, ...)
+*/
+qx.OO.addProperty({ name : "command", type : "object", instance : "qx.client.Command" });
+
+/*!
+ Appearance of the widget
+*/
+qx.OO.addProperty({ name : "appearance", type : "string" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MARGIN/PADDING PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Margin of the widget (top)
+*/
+qx.OO.addProperty({ name : "marginTop", type : "number", addToQueue : true, impl : "marginY" });
+
+/*!
+ Margin of the widget (right)
+*/
+qx.OO.addProperty({ name : "marginRight", type : "number", addToQueue : true, impl : "marginX" });
+
+/*!
+ Margin of the widget (bottom)
+*/
+qx.OO.addProperty({ name : "marginBottom", type : "number", addToQueue : true, impl : "marginY" });
+
+/*!
+ Margin of the widget (left)
+*/
+qx.OO.addProperty({ name : "marginLeft", type : "number", addToQueue : true, impl : "marginX" });
+
+
+/*!
+ Padding of the widget (top)
+*/
+qx.OO.addProperty({ name : "paddingTop", type : "number", addToQueue : true, impl : "paddingY" });
+
+/*!
+ Padding of the widget (right)
+*/
+qx.OO.addProperty({ name : "paddingRight", type : "number", addToQueue : true, impl : "paddingX" });
+
+/*!
+ Padding of the widget (bottom)
+*/
+qx.OO.addProperty({ name : "paddingBottom", type : "number", addToQueue : true, impl : "paddingY" });
+
+/*!
+ Padding of the widget (left)
+*/
+qx.OO.addProperty({ name : "paddingLeft", type : "number", addToQueue : true, impl : "paddingX" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HORIZONAL DIMENSION PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The distance from the outer left border to the parent left area edge.
+
+ You could only set two of the three horizonal dimension properties (boxLeft, boxRight, boxWidth)
+ at the same time. This will be omitted during the setup of the new third value. To reset a value
+ you didn't want anymore, set it to null.
+*/
+qx.OO.addProperty({ name : "left", addToQueue : true, unitDetection : "pixelPercent" });
+
+/*!
+ The distance from the outer right border to the parent right area edge.
+
+ You could only set two of the three horizonal dimension properties (boxLeft, boxRight, boxWidth)
+ at the same time. This will be omitted during the setup of the new third value. To reset a value
+ you didn't want anymore, set it to null.
+*/
+qx.OO.addProperty({ name : "right", addToQueue : true, unitDetection : "pixelPercent" });
+
+/*!
+ The width of the box (including padding and border).
+
+ You could only set two of the three horizonal dimension properties (boxLeft, boxRight, boxWidth)
+ at the same time. This will be omitted during the setup of the new third value. To reset a value
+ you didn't want anymore, set it to null.
+*/
+qx.OO.addProperty({ name : "width", addToQueue : true, unitDetection : "pixelPercentAutoFlex" });
+
+/*!
+ The minimum width of the box (including padding and border).
+
+ Set this to omit the shrinking of the box width under this value.
+*/
+qx.OO.addProperty({ name : "minWidth", addToQueue : true, unitDetection : "pixelPercentAuto" });
+
+/*!
+ The maximum width of the box (including padding and border).
+
+ Set this to omit the expanding of the box width above this value.
+*/
+qx.OO.addProperty({ name : "maxWidth", addToQueue : true, unitDetection : "pixelPercentAuto" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ VERTICAL DIMENSION PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The distance from the outer top border to the parent top area edge.
+
+ You could only set two of the three vertical dimension properties (boxTop, boxBottom, boxHeight)
+ at the same time. This will be omitted during the setup of the new third value. To reset a value
+ you didn't want anymore, set it to null.
+*/
+qx.OO.addProperty({ name : "top", addToQueue : true, unitDetection : "pixelPercent" });
+
+/*!
+ The distance from the outer bottom border to the parent bottom area edge.
+
+ You could only set two of the three vertical dimension properties (boxTop, boxBottom, boxHeight)
+ at the same time. This will be omitted during the setup of the new third value. To reset a value
+ you didn't want anymore, set it to null.
+*/
+qx.OO.addProperty({ name : "bottom", addToQueue : true, unitDetection : "pixelPercent" });
+
+/*!
+ The height of the box (including padding and border).
+
+ You could only set two of the three vertical dimension properties (boxTop, boxBottom, boxHeight)
+ at the same time. This will be omitted during the setup of the new third value. To reset a value
+ you didn't want anymore, set it to null.
+*/
+qx.OO.addProperty({ name : "height", addToQueue : true, unitDetection : "pixelPercentAutoFlex" });
+
+/*!
+ The minimum height of the box (including padding and border).
+
+ Set this to omit the shrinking of the box height under this value.
+*/
+qx.OO.addProperty({ name : "minHeight", addToQueue : true, unitDetection : "pixelPercentAuto" });
+
+/*!
+ The maximum height of the box (including padding and border).
+
+ Set this to omit the expanding of the box height above this value.
+*/
+qx.OO.addProperty({ name : "maxHeight", addToQueue : true, unitDetection : "pixelPercentAuto" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTY GROUPS
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addPropertyGroup({ name : "location", members : [ "left", "top" ]});
+qx.OO.addPropertyGroup({ name : "dimension", members : [ "width", "height" ]});
+
+qx.OO.addPropertyGroup({ name : "space", members : [ "left", "width", "top", "height" ]});
+qx.OO.addPropertyGroup({ name : "edge", members : [ "top", "right", "bottom", "left" ], mode : "shorthand" });
+
+qx.OO.addPropertyGroup({ name : "padding", members : [ "paddingTop", "paddingRight", "paddingBottom", "paddingLeft" ], mode: "shorthand" });
+qx.OO.addPropertyGroup({ name : "margin", members : [ "marginTop", "marginRight", "marginBottom", "marginLeft" ], mode: "shorthand" });
+
+qx.OO.addPropertyGroup({ name : "heights", members : [ "minHeight", "height", "maxHeight" ]});
+qx.OO.addPropertyGroup({ name : "widths", members : [ "minWidth", "width", "maxWidth" ]});
+
+qx.OO.addPropertyGroup({ name : "align", members : [ "horizontalAlign", "verticalAlign" ]});
+qx.OO.addPropertyGroup({ name : "stretch", members : [ "stretchX", "stretchY" ]});
+
+qx.OO.addPropertyGroup({ name : "clipLocation", members : [ "clipLeft", "clipTop" ]});
+qx.OO.addPropertyGroup({ name : "clipDimension", members : [ "clipWidth", "clipHeight" ]});
+qx.OO.addPropertyGroup({ name : "clip", members : [ "clipLeft", "clipTop", "clipWidth", "clipHeight" ]});
+
+
+
+
+
+
+
+
+/* ************************************************************************
+ Class data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ ALL QUEUES
+---------------------------------------------------------------------------
+*/
+
+if (qx.Settings.getValueOfClass("qx.ui.core.Widget", "enableQueueDebug"))
+{
+ qx.ui.core.Widget.flushGlobalQueues = function()
+ {
+ if (qx.ui.core.Widget._inFlushGlobalQueues || !qx.core.Init.getInstance().getComponent().isUiReady()) {
+ return;
+ }
+
+ if (!(qx.ui.core.Widget._globalWidgetQueue.length > 0 || qx.ui.core.Widget._globalElementQueue.length > 0 ||
+ qx.ui.core.Widget._globalStateQueue.length > 0 || qx.ui.core.Widget._globalJobQueue.length > 0 ||
+ qx.ui.core.Widget._globalLayoutQueue.length > 0 || qx.ui.core.Widget._fastGlobalDisplayQueue.length > 0 ||
+ !qx.lang.Object.isEmpty(qx.ui.core.Widget._lazyGlobalDisplayQueue))) {
+ return;
+ }
+
+ var globalWidgetQueueLength = qx.ui.core.Widget._globalWidgetQueue.length;
+ var globalElementQueueLength = qx.ui.core.Widget._globalElementQueue.length;
+ var globalStateQueueLength = qx.ui.core.Widget._globalStateQueue.length;
+ var globalJobQueueLength = qx.ui.core.Widget._globalJobQueue.length;
+ var globalLayoutQueueLength = qx.ui.core.Widget._globalLayoutQueue.length;
+ var fastGlobalDisplayQueueLength = qx.ui.core.Widget._fastGlobalDisplayQueue.length;
+ var lazyGlobalDisplayQueueLength = qx.ui.core.Widget._lazyGlobalDisplayQueue ? qx.ui.core.Widget._lazyGlobalDisplayQueue.length : 0;
+
+ // Also used for inline event handling to seperate 'real' events
+ qx.ui.core.Widget._inFlushGlobalQueues = true;
+
+ var vStart;
+
+ vStart = (new Date).valueOf();
+ qx.ui.core.Widget.flushGlobalWidgetQueue();
+ var vWidgetDuration = (new Date).valueOf() - vStart;
+
+ vStart = (new Date).valueOf();
+ qx.ui.core.Widget.flushGlobalStateQueue();
+ var vStateDuration = (new Date).valueOf() - vStart;
+
+ vStart = (new Date).valueOf();
+ qx.ui.core.Widget.flushGlobalElementQueue();
+ var vElementDuration = (new Date).valueOf() - vStart;
+
+ vStart = (new Date).valueOf();
+ qx.ui.core.Widget.flushGlobalJobQueue();
+ var vJobDuration = (new Date).valueOf() - vStart;
+
+ vStart = (new Date).valueOf();
+ qx.ui.core.Widget.flushGlobalLayoutQueue();
+ var vLayoutDuration = (new Date).valueOf() - vStart;
+
+ vStart = (new Date).valueOf();
+ qx.ui.core.Widget.flushGlobalDisplayQueue();
+ var vDisplayDuration = (new Date).valueOf() - vStart;
+
+ var vSum = vWidgetDuration + vStateDuration + vElementDuration + vJobDuration + vLayoutDuration + vDisplayDuration;
+
+ if (vSum > 0)
+ {
+ var logger = qx.dev.log.Logger.getClassLogger(qx.ui.core.Widget);
+ logger.debug("Flush Global Queues");
+ logger.debug("Widgets: " + vWidgetDuration + "ms (" + globalWidgetQueueLength + ")");
+ logger.debug("State: " + vStateDuration + "ms (" + globalStateQueueLength + ")");
+ logger.debug("Element: " + vElementDuration + "ms (" + globalElementQueueLength + ")");
+ logger.debug("Job: " + vJobDuration + "ms (" + globalJobQueueLength + ")");
+ logger.debug("Layout: " + vLayoutDuration + "ms (" + globalLayoutQueueLength + ")");
+ logger.debug("Display: " + vDisplayDuration + "ms (fast:" + fastGlobalDisplayQueueLength + ",lazy:" + lazyGlobalDisplayQueueLength + ")");
+
+ window.status = "Flush: Widget:" + vWidgetDuration + " State:" + vStateDuration + " Element:" + vElementDuration + " Job:" + vJobDuration + " Layout:" + vLayoutDuration + " Display:" + vDisplayDuration;
+ }
+
+ delete qx.ui.core.Widget._inFlushGlobalQueues;
+ }
+}
+else
+{
+ qx.ui.core.Widget.flushGlobalQueues = function()
+ {
+ if (qx.ui.core.Widget._inFlushGlobalQueues || !qx.core.Init.getInstance().getComponent().isUiReady()) {
+ return;
+ }
+
+ // Also used for inline event handling to seperate 'real' events
+ qx.ui.core.Widget._inFlushGlobalQueues = true;
+
+ qx.ui.core.Widget.flushGlobalWidgetQueue();
+ qx.ui.core.Widget.flushGlobalStateQueue();
+ qx.ui.core.Widget.flushGlobalElementQueue();
+ qx.ui.core.Widget.flushGlobalJobQueue();
+ qx.ui.core.Widget.flushGlobalLayoutQueue();
+ qx.ui.core.Widget.flushGlobalDisplayQueue();
+
+ delete qx.ui.core.Widget._inFlushGlobalQueues;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WIDGET QUEUE
+
+ Allows widgets to register to the widget queue to do multiple things
+ before the other queues will be flushed
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget._globalWidgetQueue = [];
+
+qx.ui.core.Widget.addToGlobalWidgetQueue = function(vWidget)
+{
+ if (!vWidget._isInGlobalWidgetQueue && vWidget._isDisplayable)
+ {
+ qx.ui.core.Widget._globalWidgetQueue.push(vWidget);
+ vWidget._isInGlobalWidgetQueue = true;
+ }
+}
+
+qx.ui.core.Widget.removeFromGlobalWidgetQueue = function(vWidget)
+{
+ if (vWidget._isInGlobalWidgetQueue)
+ {
+ qx.lang.Array.remove(qx.ui.core.Widget._globalWidgetQueue, vWidget);
+ delete vWidget._isInGlobalWidgetQueue;
+ }
+}
+
+qx.ui.core.Widget.flushGlobalWidgetQueue = function()
+{
+ var vQueue=qx.ui.core.Widget._globalWidgetQueue, vLength, vWidget;
+
+ while ((vLength=vQueue.length) > 0)
+ {
+ for (var i=0; i<vLength; i++)
+ {
+ vWidget = vQueue[i];
+
+ vWidget.flushWidgetQueue();
+ delete vWidget._isInGlobalWidgetQueue;
+ }
+
+ vQueue.splice(0, vLength);
+ }
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ELEMENT QUEUE
+
+ Contains the widgets which should be (dom-)created
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget._globalElementQueue = [];
+
+qx.ui.core.Widget.addToGlobalElementQueue = function(vWidget)
+{
+ if (!vWidget._isInGlobalElementQueue && vWidget._isDisplayable)
+ {
+ qx.ui.core.Widget._globalElementQueue.push(vWidget);
+ vWidget._isInGlobalElementQueue = true;
+ }
+}
+
+qx.ui.core.Widget.removeFromGlobalElementQueue = function(vWidget)
+{
+ if (vWidget._isInGlobalElementQueue)
+ {
+ qx.lang.Array.remove(qx.ui.core.Widget._globalElementQueue, vWidget);
+ delete vWidget._isInGlobalElementQueue;
+ }
+}
+
+qx.ui.core.Widget.flushGlobalElementQueue = function()
+{
+ var vQueue=qx.ui.core.Widget._globalElementQueue, vLength, vWidget;
+
+ while ((vLength=vQueue.length) > 0)
+ {
+ for (var i=0; i<vLength; i++)
+ {
+ vWidget = vQueue[i];
+
+ vWidget._createElementImpl();
+ delete vWidget._isInGlobalElementQueue;
+ }
+
+ vQueue.splice(0, vLength);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE QUEUE
+
+ Contains the widgets which recently changed their state
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget._globalStateQueue = [];
+
+qx.ui.core.Widget.addToGlobalStateQueue = function(vWidget)
+{
+ if (!vWidget._isInGlobalStateQueue && vWidget._isDisplayable)
+ {
+ qx.ui.core.Widget._globalStateQueue.push(vWidget);
+ vWidget._isInGlobalStateQueue = true;
+ }
+}
+
+qx.ui.core.Widget.removeFromGlobalStateQueue = function(vWidget)
+{
+ if (vWidget._isInGlobalStateQueue)
+ {
+ qx.lang.Array.remove(qx.ui.core.Widget._globalStateQueue, vWidget);
+ delete vWidget._isInGlobalStateQueue;
+ }
+}
+
+qx.ui.core.Widget.flushGlobalStateQueue = function()
+{
+ var vQueue=qx.ui.core.Widget._globalStateQueue, vLength, vWidget;
+
+ while ((vLength=vQueue.length) > 0)
+ {
+ for (var i=0; i<vLength; i++)
+ {
+ vWidget = vQueue[i];
+
+ vWidget._applyStateAppearance();
+
+ delete vWidget._isInGlobalStateQueue;
+ }
+
+ vQueue.splice(0, vLength);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ JOBS QUEUE
+
+ Contains the widgets which need a update after they were visible before
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget._globalJobQueue = [];
+
+qx.ui.core.Widget.addToGlobalJobQueue = function(vWidget)
+{
+ if (!vWidget._isInGlobalJobQueue && vWidget._isDisplayable)
+ {
+ qx.ui.core.Widget._globalJobQueue.push(vWidget);
+ vWidget._isInGlobalJobQueue = true;
+ }
+}
+
+qx.ui.core.Widget.removeFromGlobalJobQueue = function(vWidget)
+{
+ if (vWidget._isInGlobalJobQueue)
+ {
+ qx.lang.Array.remove(qx.ui.core.Widget._globalJobQueue, vWidget);
+ delete vWidget._isInGlobalJobQueue;
+ }
+}
+
+qx.ui.core.Widget.flushGlobalJobQueue = function()
+{
+ var vQueue=qx.ui.core.Widget._globalJobQueue, vLength, vWidget;
+
+ while ((vLength=vQueue.length) > 0)
+ {
+ for (var i=0; i<vLength; i++)
+ {
+ vWidget = vQueue[i];
+
+ vWidget._flushJobQueue(vWidget._jobQueue);
+ delete vWidget._isInGlobalJobQueue;
+ }
+
+ vQueue.splice(0, vLength);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT QUEUE
+
+ Contains the parents (qx.ui.core.Parent) of the children which needs layout updates
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget._globalLayoutQueue = [];
+
+qx.ui.core.Widget.addToGlobalLayoutQueue = function(vParent)
+{
+ if (!vParent._isInGlobalLayoutQueue && vParent._isDisplayable)
+ {
+ qx.ui.core.Widget._globalLayoutQueue.push(vParent);
+ vParent._isInGlobalLayoutQueue = true;
+ }
+}
+
+qx.ui.core.Widget.removeFromGlobalLayoutQueue = function(vParent)
+{
+ if (vParent._isInGlobalLayoutQueue)
+ {
+ qx.lang.Array.remove(qx.ui.core.Widget._globalLayoutQueue, vParent);
+ delete vParent._isInGlobalLayoutQueue;
+ }
+}
+
+qx.ui.core.Widget.flushGlobalLayoutQueue = function()
+{
+ var vQueue=qx.ui.core.Widget._globalLayoutQueue, vLength, vParent;
+
+ while ((vLength=vQueue.length) > 0)
+ {
+ for (var i=0; i<vLength; i++)
+ {
+ vParent = vQueue[i];
+
+ vParent._flushChildrenQueue();
+ delete vParent._isInGlobalLayoutQueue;
+ }
+
+ vQueue.splice(0, vLength);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAY QUEUE
+
+ Contains the widgets which should initially become visible
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget._fastGlobalDisplayQueue = [];
+qx.ui.core.Widget._lazyGlobalDisplayQueues = {};
+
+qx.ui.core.Widget.addToGlobalDisplayQueue = function(vWidget)
+{
+ if (!vWidget._isInGlobalDisplayQueue && vWidget._isDisplayable)
+ {
+ var vParent = vWidget.getParent();
+
+ if (vParent.isSeeable())
+ {
+ var vKey = vParent.toHashCode();
+
+ if (qx.ui.core.Widget._lazyGlobalDisplayQueues[vKey])
+ {
+ qx.ui.core.Widget._lazyGlobalDisplayQueues[vKey].push(vWidget);
+ }
+ else
+ {
+ qx.ui.core.Widget._lazyGlobalDisplayQueues[vKey] = [vWidget];
+ }
+ }
+ else
+ {
+ qx.ui.core.Widget._fastGlobalDisplayQueue.push(vWidget);
+ }
+
+ vWidget._isInGlobalDisplayQueue = true;
+ }
+}
+
+qx.ui.core.Widget.removeFromGlobalDisplayQueue = function(vWidget) {}
+
+qx.ui.core.Widget.flushGlobalDisplayQueue = function()
+{
+ var vKey, vLazyQueue, vWidget, vFragment;
+
+ var vFastQueue = qx.ui.core.Widget._fastGlobalDisplayQueue;
+ var vLazyQueues = qx.ui.core.Widget._lazyGlobalDisplayQueues;
+
+
+
+
+ /* -----------------------------------------------
+ Flush display queues
+ ----------------------------------------------- */
+
+ // Work on fast queue
+ for (var i=0, l=vFastQueue.length; i<l; i++)
+ {
+ vWidget = vFastQueue[i];
+ vWidget.getParent()._getTargetNode().appendChild(vWidget.getElement());
+ }
+
+
+ // Work on lazy queues: Inline widgets
+ if (qx.OO.isAvailable("qx.ui.basic.Inline"))
+ {
+ for (vKey in vLazyQueues)
+ {
+ vLazyQueue = vLazyQueues[vKey];
+
+ for (var i=0; i<vLazyQueue.length; i++)
+ {
+ vWidget = vLazyQueue[i];
+
+ if (vWidget instanceof qx.ui.basic.Inline)
+ {
+ vWidget._beforeInsertDom();
+
+ try
+ {
+ document.getElementById(vWidget.getInlineNodeId()).appendChild(vWidget.getElement());
+ }
+ catch(ex)
+ {
+ vWidget.debug("Could not append to inline id: " + vWidget.getInlineNodeId(), ex);
+ }
+
+ vWidget._afterInsertDom();
+ vWidget._afterAppear();
+
+ // Remove inline widget from queue and fix iterator position
+ qx.lang.Array.remove(vLazyQueue, vWidget);
+ i--;
+
+ // Reset display queue flag
+ delete vWidget._isInGlobalDisplayQueue;
+ }
+ }
+ }
+ }
+
+
+ // Work on lazy queues: Other widgets
+ for (vKey in vLazyQueues)
+ {
+ vLazyQueue = vLazyQueues[vKey];
+
+ // Speed enhancement: Choose a fairly small arbitrary value for the number
+ // of elements that should be added to the parent individually. If more
+ // than this number of elements is to be added to the parent, we'll create
+ // a document fragment, add the elements to the document fragment, and
+ // then add the whole fragment to the parent en mass (assuming that
+ // creation of a document fragment is supported by the browser).
+ if (document.createDocumentFragment && vLazyQueue.length >= 3)
+ {
+ // creating new document fragment
+ vFragment = document.createDocumentFragment();
+
+ // appending all widget elements to fragment
+ for (var i=0, l=vLazyQueue.length; i<l; i++)
+ {
+ vWidget = vLazyQueue[i];
+
+ vWidget._beforeInsertDom();
+ vFragment.appendChild(vWidget.getElement());
+ }
+
+ // append all fragment data at once to
+ // the already visible parent widget element
+ vLazyQueue[0].getParent()._getTargetNode().appendChild(vFragment);
+
+ for (var i=0, l=vLazyQueue.length; i<l; i++)
+ {
+ vWidget = vLazyQueue[i];
+ vWidget._afterInsertDom();
+ }
+ }
+ else
+ {
+ // appending all widget elements (including previously added children)
+ // to the already visible parent widget element
+ for (var i=0, l=vLazyQueue.length; i<l; i++)
+ {
+ vWidget = vLazyQueue[i];
+
+ vWidget._beforeInsertDom();
+ vWidget.getParent()._getTargetNode().appendChild(vWidget.getElement());
+ vWidget._afterInsertDom();
+ }
+ }
+ }
+
+
+
+
+
+
+ /* -----------------------------------------------
+ Cleanup and appear signals
+ ----------------------------------------------- */
+
+ // Only need to do this with the lazy queues
+ // because through the recursion from qx.ui.core.Parent
+ // all others get also informed.
+ for (vKey in vLazyQueues)
+ {
+ vLazyQueue = vLazyQueues[vKey];
+
+ for (var i=0, l=vLazyQueue.length; i<l; i++)
+ {
+ vWidget = vLazyQueue[i];
+
+ if (vWidget.getVisibility()) {
+ vWidget._afterAppear();
+ }
+
+ // Reset display queue flag
+ delete vWidget._isInGlobalDisplayQueue;
+ }
+
+ delete vLazyQueues[vKey];
+ }
+
+ // Reset display queue flag for widgets in fastQueue
+ for (var i=0, l=vFastQueue.length; i<l; i++) {
+ delete vFastQueue[i]._isInGlobalDisplayQueue;
+ }
+
+ // Remove fast queue entries
+ qx.lang.Array.removeAll(vFastQueue);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ GLOBAL HELPERS
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget.getActiveSiblingHelperIgnore = function(vIgnoreClasses, vInstance)
+{
+ for (var j=0; j<vIgnoreClasses.length; j++) {
+ if (vInstance instanceof vIgnoreClasses[j]) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+qx.ui.core.Widget.getActiveSiblingHelper = function(vObject, vParent, vCalc, vIgnoreClasses, vMode)
+{
+ if (!vIgnoreClasses) {
+ vIgnoreClasses = [];
+ }
+
+ var vChilds = vParent.getChildren();
+ var vPosition = qx.util.Validation.isInvalid(vMode) ? vChilds.indexOf(vObject) + vCalc : vMode == "first" ? 0 : vChilds.length-1;
+ var vInstance = vChilds[vPosition];
+
+ while(!vInstance.isEnabled() || qx.ui.core.Widget.getActiveSiblingHelperIgnore(vIgnoreClasses, vInstance))
+ {
+ vPosition += vCalc;
+ vInstance = vChilds[vPosition];
+
+ if (!vInstance) {
+ return null;
+ }
+ }
+
+ return vInstance;
+}
+
+
+
+
+
+
+
+/* ************************************************************************
+ Instance data, properties and methods
+************************************************************************ */
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ If the widget is visible and rendered on the screen.
+*/
+qx.Proto.isMaterialized = function() {
+ var el=this._element;
+ return (this._initialLayoutDone &&
+ this._isDisplayable &&
+ qx.dom.Style.getStyleProperty(el, "display") != "none" &&
+ qx.dom.Style.getStyleProperty(el, "visibility") != "hidden" &&
+ el.offsetWidth > 0 && el.offsetHeight > 0);
+}
+
+/*!
+ A single setup to the current preferred pixel values of the widget
+*/
+qx.Proto.pack = function()
+{
+ this.setWidth(this.getPreferredBoxWidth());
+ this.setHeight(this.getPreferredBoxHeight());
+}
+
+/*!
+ A bounded setup to the preferred width/height of the widget. Keeps in
+ sync if the content or requirements of the widget changes
+*/
+qx.Proto.auto = function()
+{
+ this.setWidth("auto");
+ this.setHeight("auto");
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN HANDLING: ALL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Get an array of the current children
+*/
+qx.Proto.getChildren = qx.util.Return.returnNull;
+
+/*!
+ Get the number of children
+*/
+qx.Proto.getChildrenLength = qx.util.Return.returnZero;
+
+/*!
+ Get if the widget has any children
+*/
+qx.Proto.hasChildren = qx.util.Return.returnFalse;
+
+/*!
+ Get if the widget has no children
+*/
+qx.Proto.isEmpty = qx.util.Return.returnTrue;
+
+/*!
+ Return the position of the child inside
+*/
+qx.Proto.indexOf = qx.util.Return.returnNegativeIndex;
+
+/*!
+ Test if this widget contains the given widget
+*/
+qx.Proto.contains = qx.util.Return.returnFalse;
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN HANDLING: VISIBLE ONES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Get an array of the current visible children
+*/
+qx.Proto.getVisibleChildren = qx.util.Return.returnNull;
+
+/*!
+ Get the number of children
+*/
+qx.Proto.getVisibleChildrenLength = qx.util.Return.returnZero;
+
+/*!
+ If this widget has visible children
+*/
+qx.Proto.hasVisibleChildren = qx.util.Return.returnFalse;
+
+/*!
+ Check if there are any visible children inside
+*/
+qx.Proto.isVisibleEmpty = qx.util.Return.returnTrue;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._hasParent = false;
+qx.Proto._isDisplayable = false;
+
+qx.Proto.isDisplayable = function() {
+ return this._isDisplayable;
+}
+
+qx.Proto._checkParent = function(propValue, propOldValue, propData)
+{
+ if (this.contains(propValue)) {
+ throw new Error("Could not insert myself into a child " + propValue + "!");
+ }
+
+ return propValue;
+}
+
+qx.Proto._modifyParent = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ var vOldIndex = propOldValue.getChildren().indexOf(this);
+
+ // Reset cached dimension and location values
+ this._computedWidthValue = this._computedMinWidthValue = this._computedMaxWidthValue = this._computedLeftValue = this._computedRightValue = null;
+ this._computedHeightValue = this._computedMinHeightValue = this._computedMaxHeightValue = this._computedTopValue = this._computedBottomValue = null;
+
+ this._cachedBoxWidth = this._cachedInnerWidth = this._cachedOuterWidth = null;
+ this._cachedBoxHeight = this._cachedInnerHeight = this._cachedOuterHeight = null;
+
+ // Finally remove from children array
+ qx.lang.Array.removeAt(propOldValue.getChildren(), vOldIndex);
+
+ // Invalidate visible children cache
+ propOldValue._invalidateVisibleChildren();
+
+ // Remove child from old parent's children queue
+ propOldValue._removeChildFromChildrenQueue(this);
+
+ // The layouter adds some layout jobs
+ propOldValue.getLayoutImpl().updateChildrenOnRemoveChild(this, vOldIndex);
+
+ // Inform job queue
+ propOldValue.addToJobQueue("removeChild");
+
+ // Invalidate inner preferred dimensions
+ propOldValue._invalidatePreferredInnerDimensions();
+
+ // Store old parent (needed later by _handleDisplayable)
+ this._oldParent = propOldValue;
+ }
+
+ if (propValue)
+ {
+ this._hasParent = true;
+
+ if (qx.util.Validation.isValidNumber(this._insertIndex))
+ {
+ qx.lang.Array.insertAt(propValue.getChildren(), this, this._insertIndex);
+ delete this._insertIndex;
+ }
+ else
+ {
+ propValue.getChildren().push(this);
+ }
+ }
+ else
+ {
+ this._hasParent = false;
+ }
+
+ return this._handleDisplayable("parent");
+}
+
+qx.Proto._modifyDisplay = function(propValue, propOldValue, propData) {
+ return this._handleDisplayable("display");
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAYBLE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._handleDisplayable = function(vHint)
+{
+ // Detect changes. Return if there is no change.
+ // Also handle the case if the displayable keeps true and the parent
+ // was changed then we must not return here.
+ var vDisplayable = this._computeDisplayable();
+ if (this._isDisplayable == vDisplayable && !(vDisplayable && vHint == "parent")) {
+ return true;
+ }
+
+ this._isDisplayable = vDisplayable;
+
+ var vParent = this.getParent();
+
+ // Invalidate visible children
+ if (vParent)
+ {
+ vParent._invalidateVisibleChildren();
+ vParent._invalidatePreferredInnerDimensions();
+ }
+
+ // Remove old parent's elements from DOM and delete old parent
+ if (vHint && this._oldParent && this._oldParent._initialLayoutDone)
+ {
+ var vElement = this.getElement();
+ if(vElement)
+ {
+ if (this.getVisibility()) {
+ this._beforeDisappear();
+ }
+
+ this._beforeRemoveDom();
+
+ this._oldParent._getTargetNode().removeChild(vElement);
+
+ this._afterRemoveDom();
+
+ if (this.getVisibility()) {
+ this._afterDisappear();
+ }
+ }
+
+ delete this._oldParent;
+ }
+
+ // Handle 'show'
+ if (vDisplayable)
+ {
+ /* --------------------------------
+ Update current parent
+ -------------------------------- */
+
+ // The layouter added some layout jobs
+ if (vParent._initialLayoutDone)
+ {
+ vParent.getLayoutImpl().updateChildrenOnAddChild(this, vParent.getChildren().indexOf(this));
+
+ // Inform parents job queue
+ vParent.addToJobQueue("addChild");
+ }
+
+ // Add to parents children queue
+ // (indirectly with a new layout request)
+ this.addToLayoutChanges("initial");
+
+ // Add to custom queues
+ this.addToCustomQueues(vHint);
+
+ // Handle beforeAppear signals
+ if (this.getVisibility()) {
+ this._beforeAppear();
+ }
+
+
+
+ /* --------------------------------
+ Add to global Queues
+ -------------------------------- */
+
+ // Add element (and create if not ready)
+ if (!this._isCreated) {
+ qx.ui.core.Widget.addToGlobalElementQueue(this);
+ }
+
+ // Add to global queues
+ qx.ui.core.Widget.addToGlobalStateQueue(this);
+
+ if (!qx.lang.Object.isEmpty(this._jobQueue)) {
+ qx.ui.core.Widget.addToGlobalJobQueue(this);
+ }
+
+ if (!qx.lang.Object.isEmpty(this._childrenQueue)) {
+ qx.ui.core.Widget.addToGlobalLayoutQueue(this);
+ }
+ }
+
+ // Handle 'hide'
+ else
+ {
+ // Removing from global queues
+ qx.ui.core.Widget.removeFromGlobalElementQueue(this);
+ qx.ui.core.Widget.removeFromGlobalStateQueue(this);
+ qx.ui.core.Widget.removeFromGlobalJobQueue(this);
+ qx.ui.core.Widget.removeFromGlobalLayoutQueue(this);
+
+ // Add to top-level tree queue
+ this.removeFromCustomQueues(vHint);
+
+ // only remove when itself want to be removed
+ // through a property change - not a parent signal
+ if (vParent && vHint)
+ {
+ if (this.getVisibility()) {
+ this._beforeDisappear();
+ }
+
+ // The layouter added some layout jobs
+ if (vParent._initialLayoutDone && this._initialLayoutDone)
+ {
+ vParent.getLayoutImpl().updateChildrenOnRemoveChild(this, vParent.getChildren().indexOf(this));
+
+ // Inform parent's job queue
+ vParent.addToJobQueue("removeChild");
+
+ // Before Remove DOM Event
+ this._beforeRemoveDom();
+
+ // DOM action
+ vParent._getTargetNode().removeChild(this.getElement());
+
+ // After Remove DOM Event
+ this._afterRemoveDom();
+ }
+
+ // Remove from parents children queue
+ vParent._removeChildFromChildrenQueue(this);
+
+ if (this.getVisibility()) {
+ this._afterDisappear();
+ }
+ }
+ }
+
+ this._handleDisplayableCustom(vDisplayable, vParent, vHint);
+
+ return true;
+}
+
+qx.Proto.addToCustomQueues = qx.util.Return.returnTrue;
+qx.Proto.removeFromCustomQueues = qx.util.Return.returnTrue;
+
+qx.Proto._handleDisplayableCustom = qx.util.Return.returnTrue;
+
+qx.Proto._computeDisplayable = function() {
+ return this.getDisplay() && this._hasParent && this.getParent()._isDisplayable ? true : false;
+}
+
+qx.Proto._beforeAppear = function()
+{
+ // this.debug("_beforeAppear");
+ this.createDispatchEvent("beforeAppear");
+}
+
+qx.Proto._afterAppear = function()
+{
+ // this.debug("_afterAppear");
+ this._isSeeable = true;
+ this.createDispatchEvent("appear");
+}
+
+qx.Proto._beforeDisappear = function()
+{
+ // this.debug("_beforeDisappear");
+
+ // Remove any hover/pressed styles
+ this.removeState("over");
+
+ if (qx.OO.isAvailable("qx.ui.form.Button"))
+ {
+ this.removeState("pressed");
+ this.removeState("abandoned");
+ }
+
+ // this.debug("_beforeDisappear");
+ this.createDispatchEvent("beforeDisappear");
+}
+
+qx.Proto._afterDisappear = function()
+{
+ // this.debug("_afterDisappear");
+ this._isSeeable = false;
+ this.createDispatchEvent("disappear");
+}
+
+qx.Proto._isSeeable = false;
+
+/**
+ * If the widget is currently seeable which means that it:
+ *
+ * * has a also seeable parent
+ * * visibility is true
+ * * display is true
+ */
+qx.Proto.isSeeable = function() {
+ return this._isSeeable;
+}
+
+qx.Proto.isAppearRelevant = function() {
+ return this.getVisibility() && this._isDisplayable;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DOM SIGNAL HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeInsertDom = function()
+{
+ // this.debug("_beforeInsertDom");
+ this.createDispatchEvent("beforeInsertDom");
+}
+
+qx.Proto._afterInsertDom = function()
+{
+ // this.debug("_afterInsertDom");
+ this.createDispatchEvent("insertDom");
+}
+
+qx.Proto._beforeRemoveDom = function()
+{
+ // this.debug("_beforeRemoveDom");
+ this.createDispatchEvent("beforeRemoveDom");
+}
+
+qx.Proto._afterRemoveDom = function()
+{
+ // this.debug("_afterRemoveDom");
+ this.createDispatchEvent("removeDom");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ VISIBILITY HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyVisibility = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ if (this._isDisplayable) {
+ this._beforeAppear();
+ }
+
+ this.removeStyleProperty("display");
+
+ if (this._isDisplayable) {
+ this._afterAppear();
+ }
+ }
+ else
+ {
+ if (this._isDisplayable) {
+ this._beforeDisappear();
+ }
+
+ this.setStyleProperty("display", "none");
+
+ if (this._isDisplayable) {
+ this._afterDisappear();
+ }
+ }
+
+ return true;
+}
+
+qx.Proto.show = function()
+{
+ this.setVisibility(true);
+ this.setDisplay(true);
+}
+
+qx.Proto.hide = function() {
+ this.setVisibility(false);
+}
+
+qx.Proto.connect = function() {
+ this.setDisplay(true);
+}
+
+qx.Proto.disconnect = function() {
+ this.setDisplay(false);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ENHANCED BORDER SUPPORT
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._createElementForEnhancedBorder = qx.util.Return.returnTrue;
+}
+else
+{
+ qx.Proto._createElementForEnhancedBorder = function()
+ {
+ // Enhanced Border Test (for IE and Opera)
+ if (qx.renderer.border.Border.enhancedCrossBrowserMode &&
+ this.getTagName() == "div" &&
+ !this._borderElement)
+ {
+ var el = this.getElement();
+ var cl = this._borderElement = document.createElement("div");
+
+ var es = el.style;
+ var cs = this._borderStyle = cl.style;
+
+ cs.width = cs.height = "100%";
+ cs.position = "absolute";
+
+ for (var i in this._styleProperties)
+ {
+ switch(i)
+ {
+ case "position":
+ case "zIndex":
+ case "filter":
+ case "display":
+ break;
+
+ default:
+ cs[i] = this._styleProperties[i];
+ es[i] = "";
+ }
+ }
+
+ // Move existing children
+ while(el.firstChild) {
+ cl.appendChild(el.firstChild);
+ }
+
+ el.appendChild(cl);
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DOM ELEMENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._isCreated = false;
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._getTargetNode = function() {
+ return this._element;
+ }
+}
+else
+{
+ qx.Proto._getTargetNode = function() {
+ return this._borderElement || this._element;
+ }
+}
+
+qx.Proto.addToDocument = function() {
+ qx.ui.core.ClientDocument.getInstance().add(this);
+}
+
+/*!
+ Check if the widget is created (or the element is already available).
+*/
+qx.Proto.isCreated = function() {
+ return this._isCreated;
+}
+
+/*!
+ Create widget with empty element (of specified tagname).
+*/
+qx.Proto._createElementImpl = function() {
+ this.setElement(this.getTopLevelWidget().getDocumentElement().createElement(this.getTagName()));
+}
+
+qx.Proto._modifyElement = function(propValue, propOldValue, propData)
+{
+ this._isCreated = qx.util.Validation.isValidElement(propValue);
+
+ if (propOldValue)
+ {
+ // reset reference to widget instance
+ propOldValue.qx_Widget = null;
+
+ // remove events
+ this._removeInlineEvents(propOldValue);
+ }
+
+ if (propValue)
+ {
+ // add reference to widget instance
+ propValue.qx_Widget = this;
+
+ // link element and style reference
+ this._element = propValue;
+ this._style = propValue.style;
+
+ this._applyStyleProperties(propValue);
+ this._applyHtmlProperties(propValue);
+ this._applyHtmlAttributes(propValue);
+ this._applyElementData(propValue);
+
+ // attach inline events
+ this._addInlineEvents(propValue);
+
+ // send out create event
+ this.createDispatchEvent("create");
+ }
+ else
+ {
+ this._element = this._style = null;
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ JOBS QUEUE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addToJobQueue = function(p)
+{
+ if (this._hasParent) {
+ qx.ui.core.Widget.addToGlobalJobQueue(this);
+ }
+
+ if (!this._jobQueue) {
+ this._jobQueue = {};
+ }
+
+ this._jobQueue[p] = true;
+ return true;
+}
+
+qx.Proto._flushJobQueue = function(q)
+{
+ /* --------------------------------------------------------------------------------
+ 1. Pre checks
+ -------------------------------------------------------------------------------- */
+
+ try
+ {
+ var vQueue = this._jobQueue;
+ var vParent = this.getParent();
+
+ if (!vParent || qx.lang.Object.isEmpty(vQueue)) {
+ return;
+ }
+
+ var vLayoutImpl = this instanceof qx.ui.core.Parent ? this.getLayoutImpl() : null;
+
+ if (vLayoutImpl) {
+ vLayoutImpl.updateSelfOnJobQueueFlush(vQueue);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Flushing job queue (prechecks#1) failed", ex);
+ }
+
+
+
+
+
+ /* --------------------------------------------------------------------------------
+ 2. Recompute dimensions
+ -------------------------------------------------------------------------------- */
+
+ try
+ {
+ var vFlushParentJobQueue = false;
+ var vRecomputeOuterWidth = vQueue.marginLeft || vQueue.marginRight;
+ var vRecomputeOuterHeight = vQueue.marginTop || vQueue.marginBottom;
+ var vRecomputeInnerWidth = vQueue.frameWidth;
+ var vRecomputeInnerHeight = vQueue.frameHeight;
+ var vRecomputeParentPreferredInnerWidth = (vQueue.frameWidth || vQueue.preferredInnerWidth) && this._recomputePreferredBoxWidth();
+ var vRecomputeParentPreferredInnerHeight = (vQueue.frameHeight || vQueue.preferredInnerHeight) && this._recomputePreferredBoxHeight();
+
+ if (vRecomputeParentPreferredInnerWidth)
+ {
+ var vPref = this.getPreferredBoxWidth();
+
+ if (this._computedWidthTypeAuto)
+ {
+ this._computedWidthValue = vPref;
+ vQueue.width = true;
+ }
+
+ if (this._computedMinWidthTypeAuto)
+ {
+ this._computedMinWidthValue = vPref;
+ vQueue.minWidth = true;
+ }
+
+ if (this._computedMaxWidthTypeAuto)
+ {
+ this._computedMaxWidthValue = vPref;
+ vQueue.maxWidth = true;
+ }
+ }
+
+ if (vRecomputeParentPreferredInnerHeight)
+ {
+ var vPref = this.getPreferredBoxHeight();
+
+ if (this._computedHeightTypeAuto)
+ {
+ this._computedHeightValue = vPref;
+ vQueue.height = true;
+ }
+
+ if (this._computedMinHeightTypeAuto)
+ {
+ this._computedMinHeightValue = vPref;
+ vQueue.minHeight = true;
+ }
+
+ if (this._computedMaxHeightTypeAuto)
+ {
+ this._computedMaxHeightValue = vPref;
+ vQueue.maxHeight = true;
+ }
+ }
+
+ if ((vQueue.width || vQueue.minWidth || vQueue.maxWidth || vQueue.left || vQueue.right) && this._recomputeBoxWidth()) {
+ vRecomputeOuterWidth = vRecomputeInnerWidth = true;
+ }
+
+ if ((vQueue.height || vQueue.minHeight || vQueue.maxHeight || vQueue.top || vQueue.bottom) && this._recomputeBoxHeight()) {
+ vRecomputeOuterHeight = vRecomputeInnerHeight = true;
+ }
+ }
+ catch(ex)
+ {
+ this.error("Flushing job queue (recompute#2) failed", ex);
+ }
+
+
+
+
+
+ /* --------------------------------------------------------------------------------
+ 3. Signals to parent widgets
+ -------------------------------------------------------------------------------- */
+
+ try
+ {
+ if ((vRecomputeOuterWidth && this._recomputeOuterWidth()) ||
+ vRecomputeParentPreferredInnerWidth)
+ {
+ vParent._invalidatePreferredInnerWidth();
+ vParent.getLayoutImpl().updateSelfOnChildOuterWidthChange(this);
+
+ vFlushParentJobQueue = true;
+ }
+
+ if ((vRecomputeOuterHeight && this._recomputeOuterHeight()) ||
+ vRecomputeParentPreferredInnerHeight)
+ {
+ vParent._invalidatePreferredInnerHeight();
+ vParent.getLayoutImpl().updateSelfOnChildOuterHeightChange(this);
+
+ vFlushParentJobQueue = true;
+ }
+
+ if (vFlushParentJobQueue) {
+ vParent._flushJobQueue();
+ }
+ }
+ catch(ex)
+ {
+ this.error("Flushing job queue (parentsignals#3) failed", ex);
+ }
+
+
+
+
+
+ /* --------------------------------------------------------------------------------
+ 4. Add layout jobs
+ -------------------------------------------------------------------------------- */
+
+ try
+ {
+ // add to layout queue
+ vParent._addChildToChildrenQueue(this);
+
+ // convert jobs to layout jobs
+ for (var i in vQueue) {
+ this._layoutChanges[i] = true;
+ }
+ }
+ catch(ex)
+ {
+ this.error("Flushing job queue (addjobs#4) failed", ex);
+ }
+
+
+
+
+
+ /* --------------------------------------------------------------------------------
+ 5. Signals to children
+ -------------------------------------------------------------------------------- */
+
+ try
+ {
+ // inform children about padding change
+ if (this instanceof qx.ui.core.Parent &&
+ (vQueue.paddingLeft ||
+ vQueue.paddingRight ||
+ vQueue.paddingTop ||
+ vQueue.paddingBottom))
+ {
+ var ch=this.getChildren(), chl=ch.length;
+
+ if (vQueue.paddingLeft) {
+ for (var i=0; i<chl; i++) {
+ ch[i].addToLayoutChanges("parentPaddingLeft");
+ }
+ }
+
+ if (vQueue.paddingRight) {
+ for (var i=0; i<chl; i++) {
+ ch[i].addToLayoutChanges("parentPaddingRight");
+ }
+ }
+
+ if (vQueue.paddingTop) {
+ for (var i=0; i<chl; i++) {
+ ch[i].addToLayoutChanges("parentPaddingTop");
+ }
+ }
+
+ if (vQueue.paddingBottom) {
+ for (var i=0; i<chl; i++) {
+ ch[i].addToLayoutChanges("parentPaddingBottom");
+ }
+ }
+ }
+
+ if (vRecomputeInnerWidth) {
+ this._recomputeInnerWidth();
+ }
+
+ if (vRecomputeInnerHeight) {
+ this._recomputeInnerHeight();
+ }
+
+ if (this._initialLayoutDone)
+ {
+ if (vLayoutImpl) {
+ vLayoutImpl.updateChildrenOnJobQueueFlush(vQueue);
+ }
+ }
+ }
+ catch(ex)
+ {
+ this.error("Flushing job queue (childrensignals#5) failed", ex);
+ }
+
+
+
+ /* --------------------------------------------------------------------------------
+ 5. Cleanup
+ -------------------------------------------------------------------------------- */
+
+ delete this._jobQueue;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS TO GIVE THE LAYOUTERS INFORMATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._isWidthEssential = qx.util.Return.returnTrue;
+qx.Proto._isHeightEssential = qx.util.Return.returnTrue;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPLY LAYOUT STYLES
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget.initApplyMethods = function()
+{
+ var f = "_applyRuntime";
+ var r = "_resetRuntime";
+ var s = "this._style.";
+ var e = "=''";
+ var v = "=v+'px'";
+ var vpar = "v";
+
+ var props = ["left", "right", "top", "bottom", "width", "height",
+ "minWidth", "maxWidth", "minHeight", "maxHeight"];
+ var propsup = ["Left", "Right", "Top", "Bottom", "Width", "Height",
+ "MinWidth", "MaxWidth", "MinHeight", "MaxHeight"];
+
+ for (var i=0, fn=f+"Margin", rn=r+"Margin", sp=s+"margin"; i<4; i++)
+ {
+ qx.Proto[fn+propsup[i]] = new Function(vpar, sp + propsup[i] + v);
+ qx.Proto[rn+propsup[i]] = new Function(sp + propsup[i] + e);
+ }
+
+ var pad = "padding";
+ var upad = "Padding";
+
+ if (qx.sys.Client.getInstance().isGecko())
+ {
+ for (var i=0, fn=f+upad, rn=r+upad, sp=s+pad; i<4; i++)
+ {
+ qx.Proto[fn+propsup[i]] = new Function(vpar, sp + propsup[i] + v);
+ qx.Proto[rn+propsup[i]] = new Function(sp + propsup[i] + e);
+ }
+ }
+ else
+ {
+ // need to use setStyleProperty to keep compatibility with enhanced cross browser borders
+ var s1="this.setStyleProperty('padding";
+ var s2="', v+'px')";
+ var s3="this.removeStyleProperty('padding";
+ var s4="')";
+
+ for (var i=0, fn=f+upad, rn=r+upad, sp=s+pad; i<4; i++)
+ {
+ qx.Proto[fn+propsup[i]] = new Function(vpar, s1 + propsup[i] + s2);
+ qx.Proto[rn+propsup[i]] = new Function(s3 + propsup[i] + s4);
+ }
+ }
+
+ /*
+ Use optimized method for internet explorer
+ to omit string concat and directly setup
+ the new layout property.
+
+ We could not use this to reset the value however.
+ It seems that is just doesn't work this way. And the
+ left/top always get priority. Tried: "", null, "auto".
+ Nothing helps.
+
+ Now I've switched back to the conventional method
+ to reset the value. This seems to work again.
+ */
+ if (qx.sys.Client.getInstance().isMshtml())
+ {
+ for (var i=0, tpos="pos", vset="=v"; i<6; i++)
+ {
+ // to debug the values which will be applied use this instead of the
+ // first line:
+ // qx.Proto[f+propsup[i]] = new Function(vpar, "this.debug('v: ' + v); " + s + tpos + propsup[i] + vset);
+
+ qx.Proto[f+propsup[i]] = new Function(vpar, s + tpos + propsup[i] + vset);
+ qx.Proto[r+propsup[i]] = new Function(s + props[i] + e);
+ }
+ }
+ else
+ {
+ for (var i=0; i<10; i++)
+ {
+ // to debug the values which will be applied use this instead of the
+ // first line:
+ // qx.Proto[f+propsup[i]] = new Function(vpar, "this.debug('v: ' + v); " + s + props[i] + v);
+
+ qx.Proto[f+propsup[i]] = new Function(vpar, s + props[i] + v);
+ qx.Proto[r+propsup[i]] = new Function(s + props[i] + e);
+ }
+ }
+}
+
+qx.ui.core.Widget.initApplyMethods();
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIMENSION CACHE
+---------------------------------------------------------------------------
+*/
+
+/*
+ Add basic setter/getters
+*/
+
+qx.OO.addCachedProperty({ name : "innerWidth", defaultValue : null });
+qx.OO.addCachedProperty({ name : "innerHeight", defaultValue : null });
+qx.OO.addCachedProperty({ name : "boxWidth", defaultValue : null });
+qx.OO.addCachedProperty({ name : "boxHeight", defaultValue : null });
+qx.OO.addCachedProperty({ name : "outerWidth", defaultValue : null });
+qx.OO.addCachedProperty({ name : "outerHeight", defaultValue : null });
+
+qx.Proto._computeBoxWidthFallback = function() {
+ return 0;
+}
+
+qx.Proto._computeBoxHeightFallback = function() {
+ return 0;
+}
+
+qx.Proto._computeBoxWidth = function() {
+ var vLayoutImpl = this.getParent().getLayoutImpl();
+ return Math.max(0,
+ qx.lang.Number.limit(vLayoutImpl.computeChildBoxWidth(this),
+ this.getMinWidthValue(),
+ this.getMaxWidthValue()));
+}
+
+qx.Proto._computeBoxHeight = function() {
+ var vLayoutImpl = this.getParent().getLayoutImpl();
+ return Math.max(0,
+ qx.lang.Number.limit(vLayoutImpl.computeChildBoxHeight(this),
+ this.getMinHeightValue(),
+ this.getMaxHeightValue()));
+}
+
+qx.Proto._computeOuterWidth = function() {
+ return Math.max(0,
+ (this.getMarginLeft() +
+ this.getBoxWidth() +
+ this.getMarginRight()));
+}
+
+qx.Proto._computeOuterHeight = function() {
+ return Math.max(0,
+ (this.getMarginTop() +
+ this.getBoxHeight() +
+ this.getMarginBottom()));
+}
+
+qx.Proto._computeInnerWidth = function() {
+ return Math.max(0, this.getBoxWidth() - this.getFrameWidth());
+}
+
+qx.Proto._computeInnerHeight = function() {
+ return Math.max(0, this.getBoxHeight() - this.getFrameHeight());
+}
+
+qx.Proto.getNeededWidth = function() {
+ var vLayoutImpl = this.getParent().getLayoutImpl();
+ return Math.max(0, vLayoutImpl.computeChildNeededWidth(this));
+}
+
+qx.Proto.getNeededHeight = function() {
+ var vLayoutImpl = this.getParent().getLayoutImpl();
+ return Math.max(0, vLayoutImpl.computeChildNeededHeight(this));
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RECOMPUTE FLEX VALUES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._recomputeFlexX = function()
+{
+ if (!this.getHasFlexX()) {
+ return false;
+ }
+
+ if (this._computedWidthTypeFlex)
+ {
+ this._computedWidthValue = null;
+ this.addToLayoutChanges("width");
+ }
+
+ return true;
+}
+
+qx.Proto._recomputeFlexY = function()
+{
+ if (!this.getHasFlexY()) {
+ return false;
+ }
+
+ if (this._computedHeightTypeFlex)
+ {
+ this._computedHeightValue = null;
+ this.addToLayoutChanges("height");
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RECOMPUTE PERCENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._recomputePercentX = function()
+{
+ if (!this.getHasPercentX()) {
+ return false;
+ }
+
+ if (this._computedWidthTypePercent)
+ {
+ this._computedWidthValue = null;
+ this.addToLayoutChanges("width");
+ }
+
+ if (this._computedMinWidthTypePercent)
+ {
+ this._computedMinWidthValue = null;
+ this.addToLayoutChanges("minWidth");
+ }
+
+ if (this._computedMaxWidthTypePercent)
+ {
+ this._computedMaxWidthValue = null;
+ this.addToLayoutChanges("maxWidth");
+ }
+
+ if (this._computedLeftTypePercent)
+ {
+ this._computedLeftValue = null;
+ this.addToLayoutChanges("left");
+ }
+
+ if (this._computedRightTypePercent)
+ {
+ this._computedRightValue = null;
+ this.addToLayoutChanges("right");
+ }
+
+ return true;
+}
+
+qx.Proto._recomputePercentY = function()
+{
+ if (!this.getHasPercentY()) {
+ return false;
+ }
+
+ if (this._computedHeightTypePercent)
+ {
+ this._computedHeightValue = null;
+ this.addToLayoutChanges("height");
+ }
+
+ if (this._computedMinHeightTypePercent)
+ {
+ this._computedMinHeightValue = null;
+ this.addToLayoutChanges("minHeight");
+ }
+
+ if (this._computedMaxHeightTypePercent)
+ {
+ this._computedMaxHeightValue = null;
+ this.addToLayoutChanges("maxHeight");
+ }
+
+ if (this._computedTopTypePercent)
+ {
+ this._computedTopValue = null;
+ this.addToLayoutChanges("top");
+ }
+
+ if (this._computedBottomTypePercent)
+ {
+ this._computedBottomValue = null;
+ this.addToLayoutChanges("bottom");
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RECOMPUTE RANGES
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto._recomputeRangeX = function()
+ {
+ if (this._computedLeftTypeNull || this._computedRightTypeNull) {
+ return false;
+ }
+
+ this.addToLayoutChanges("width");
+ return true;
+ }
+
+ qx.Proto._recomputeRangeY = function()
+ {
+ if (this._computedTopTypeNull || this._computedBottomTypeNull) {
+ return false;
+ }
+
+ this.addToLayoutChanges("height");
+ return true;
+ }
+}
+else
+{
+ qx.Proto._recomputeRangeX = function() {
+ return !(this._computedLeftTypeNull || this._computedRightTypeNull);
+ }
+
+ qx.Proto._recomputeRangeY = function() {
+ return !(this._computedTopTypeNull || this._computedBottomTypeNull);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ RECOMPUTE STRETCHING
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml() || qx.sys.Client.getInstance().isOpera())
+{
+ qx.Proto._recomputeStretchingX = function()
+ {
+ if (this.getAllowStretchX() && this._computedWidthTypeNull)
+ {
+ this._computedWidthValue = null;
+ this.addToLayoutChanges("width");
+
+ return true;
+ }
+
+ return false;
+ }
+
+ qx.Proto._recomputeStretchingY = function()
+ {
+ if (this.getAllowStretchY() && this._computedHeightTypeNull)
+ {
+ this._computedHeightValue = null;
+ this.addToLayoutChanges("height");
+
+ return true;
+ }
+
+ return false;
+ }
+}
+else
+{
+ qx.Proto._recomputeStretchingX = function()
+ {
+ if (this.getAllowStretchX() && this._computedWidthTypeNull) {
+ return true;
+ }
+
+ return false;
+ }
+
+ qx.Proto._recomputeStretchingY = function()
+ {
+ if (this.getAllowStretchY() && this._computedHeightTypeNull) {
+ return true;
+ }
+
+ return false;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTELLIGENT GETTERS FOR STANDALONE DIMENSIONS: HELPERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computeValuePixel = function(v) {
+ return Math.round(v);
+}
+
+qx.Proto._computeValuePixelLimit = function(v) {
+ return Math.max(0, this._computeValuePixel(v));
+}
+
+qx.Proto._computeValuePercentX = function(v) {
+ return Math.round(this.getParent().getInnerWidthForChild(this) * v * 0.01);
+}
+
+qx.Proto._computeValuePercentXLimit = function(v) {
+ return Math.max(0, this._computeValuePercentX(v));
+}
+
+qx.Proto._computeValuePercentY = function(v) {
+ return Math.round(this.getParent().getInnerHeightForChild(this) * v * 0.01);
+}
+
+qx.Proto._computeValuePercentYLimit = function(v) {
+ return Math.max(0, this._computeValuePercentY(v));
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTELLIGENT GETTERS FOR STANDALONE DIMENSIONS: X-AXIS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getWidthValue = function()
+{
+ if (this._computedWidthValue != null) {
+ return this._computedWidthValue;
+ }
+
+ switch(this._computedWidthType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedWidthValue = this._computeValuePixelLimit(this._computedWidthParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedWidthValue = this._computeValuePercentXLimit(this._computedWidthParsed);
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ return this._computedWidthValue = this.getPreferredBoxWidth();
+
+ case qx.ui.core.Widget.TYPE_FLEX:
+ try{
+ this.getParent().getLayoutImpl().computeChildrenFlexWidth();
+ } catch (e){
+ if (this.getParent().getLayoutImpl()["computeChildrenFlexWidth"] == null){
+ throw new Error("Widget " + this + ": having flex size but parent layout does not support it");
+ } else {
+ throw e;
+ }
+ }
+ return this._computedWidthValue = this._computedWidthFlexValue;
+ }
+
+ return null;
+}
+
+qx.Proto.getMinWidthValue = function()
+{
+ if (this._computedMinWidthValue != null) {
+ return this._computedMinWidthValue;
+ }
+
+ switch(this._computedMinWidthType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedWidthValue = this._computeValuePixelLimit(this._computedMinWidthParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedWidthValue = this._computeValuePercentXLimit(this._computedMinWidthParsed);
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ return this._computedMinWidthValue = this.getPreferredBoxWidth();
+ }
+
+ return null;
+}
+
+qx.Proto.getMaxWidthValue = function()
+{
+ if (this._computedMaxWidthValue != null) {
+ return this._computedMaxWidthValue;
+ }
+
+ switch(this._computedMaxWidthType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedWidthValue = this._computeValuePixelLimit(this._computedMaxWidthParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedWidthValue = this._computeValuePercentXLimit(this._computedMaxWidthParsed);
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ return this._computedMaxWidthValue = this.getPreferredBoxWidth();
+ }
+
+ return null;
+}
+
+qx.Proto.getLeftValue = function()
+{
+ if (this._computedLeftValue != null) {
+ return this._computedLeftValue;
+ }
+
+ switch(this._computedLeftType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedLeftValue = this._computeValuePixel(this._computedLeftParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedLeftValue = this._computeValuePercentX(this._computedLeftParsed);
+ }
+
+ return null;
+}
+
+qx.Proto.getRightValue = function()
+{
+ if (this._computedRightValue != null) {
+ return this._computedRightValue;
+ }
+
+ switch(this._computedRightType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedRightValue = this._computeValuePixel(this._computedRightParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedRightValue = this._computeValuePercentX(this._computedRightParsed);
+ }
+
+ return null;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTELLIGENT GETTERS FOR STANDALONE DIMENSIONS: Y-AXIS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getHeightValue = function()
+{
+ if (this._computedHeightValue != null) {
+ return this._computedHeightValue;
+ }
+
+ switch(this._computedHeightType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedHeightValue = this._computeValuePixelLimit(this._computedHeightParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedHeightValue = this._computeValuePercentYLimit(this._computedHeightParsed);
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ return this._computedHeightValue = this.getPreferredBoxHeight();
+
+ case qx.ui.core.Widget.TYPE_FLEX:
+ try{
+ this.getParent().getLayoutImpl().computeChildrenFlexHeight();
+ } catch (e){
+ if (this.getParent().getLayoutImpl()["computeChildrenFlexHeight"] == null){
+ throw new Error("Widget " + this + ": having flex size but parent layout does not support it");
+ } else {
+ throw e;
+ }
+ }
+ return this._computedHeightValue = this._computedHeightFlexValue;
+ }
+
+ return null;
+}
+
+qx.Proto.getMinHeightValue = function()
+{
+ if (this._computedMinHeightValue != null) {
+ return this._computedMinHeightValue;
+ }
+
+ switch(this._computedMinHeightType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedMinHeightValue = this._computeValuePixelLimit(this._computedMinHeightParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedMinHeightValue = this._computeValuePercentYLimit(this._computedMinHeightParsed);
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ return this._computedMinHeightValue = this.getPreferredBoxHeight();
+ }
+
+ return null;
+}
+
+qx.Proto.getMaxHeightValue = function()
+{
+ if (this._computedMaxHeightValue != null) {
+ return this._computedMaxHeightValue;
+ }
+
+ switch(this._computedMaxHeightType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedMaxHeightValue = this._computeValuePixelLimit(this._computedMaxHeightParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedMaxHeightValue = this._computeValuePercentYLimit(this._computedMaxHeightParsed);
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ return this._computedMaxHeightValue = this.getPreferredBoxHeight();
+ }
+
+ return null;
+}
+
+qx.Proto.getTopValue = function()
+{
+ if (this._computedTopValue != null) {
+ return this._computedTopValue;
+ }
+
+ switch(this._computedTopType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedTopValue = this._computeValuePixel(this._computedTopParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedTopValue = this._computeValuePercentY(this._computedTopParsed);
+ }
+
+ return null;
+}
+
+qx.Proto.getBottomValue = function()
+{
+ if (this._computedBottomValue != null) {
+ return this._computedBottomValue;
+ }
+
+ switch(this._computedBottomType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ return this._computedBottomValue = this._computeValuePixel(this._computedBottomParsed);
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ return this._computedBottomValue = this._computeValuePercentY(this._computedBottomParsed);
+ }
+
+ return null;
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FRAME DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "frameWidth", defaultValue : null, addToQueueRuntime : true });
+qx.OO.addCachedProperty({ name : "frameHeight", defaultValue : null, addToQueueRuntime : true });
+
+qx.Proto._computeFrameWidth = function()
+{
+ var fw = this._cachedBorderLeft + this.getPaddingLeft() + this.getPaddingRight() + this._cachedBorderRight;
+
+ switch(this.getOverflow())
+ {
+ case "scroll":
+ case "scrollY":
+ qx.ui.core.Widget.initOverflow();
+ fw += qx.ui.core.Widget.SCROLLBAR_SIZE;
+ break;
+
+ case "auto":
+ // This seems to be really hard to implement
+ // this.debug("Check Auto Scroll-X: " + this.getPreferredBoxHeight() + " :: " + this.getBoxHeight());
+ break;
+ }
+
+ return fw;
+}
+
+qx.Proto._computeFrameHeight = function()
+{
+ var fh = this._cachedBorderTop + this.getPaddingTop() + this.getPaddingBottom() + this._cachedBorderBottom;
+
+ switch(this.getOverflow())
+ {
+ case "scroll":
+ case "scrollX":
+ qx.ui.core.Widget.initOverflow();
+ fh += qx.ui.core.Widget.SCROLLBAR_SIZE;
+ break;
+
+ case "auto":
+ // This seems to be really hard to implement
+ // this.debug("Check Auto Scroll-Y: " + this.getPreferredBoxWidth() + " :: " + this.getBoxWidth());
+ break;
+ }
+
+ return fh;
+}
+
+qx.Proto._invalidateFrameDimensions = function()
+{
+ this._invalidateFrameWidth();
+ this._invalidateFrameHeight();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS: INNER
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "preferredInnerWidth", defaultValue : null, addToQueueRuntime : true });
+qx.OO.addCachedProperty({ name : "preferredInnerHeight", defaultValue : null, addToQueueRuntime : true });
+
+qx.Proto._invalidatePreferredInnerDimensions = function()
+{
+ this._invalidatePreferredInnerWidth();
+ this._invalidatePreferredInnerHeight();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS: BOX
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "preferredBoxWidth", defaultValue : null });
+qx.OO.addCachedProperty({ name : "preferredBoxHeight", defaultValue : null });
+
+qx.Proto._computePreferredBoxWidth = function()
+{
+ try {
+ return Math.max(0, this.getPreferredInnerWidth() + this.getFrameWidth());
+ } catch(ex) {
+ this.error("_computePreferredBoxWidth failed", ex);
+ }
+}
+
+qx.Proto._computePreferredBoxHeight = function()
+{
+ try {
+ return Math.max(0, this.getPreferredInnerHeight() + this.getFrameHeight());
+ } catch(ex) {
+ this.error("_computePreferredBoxHeight failed", ex);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT QUEUE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._initialLayoutDone = false;
+
+qx.Proto.addToLayoutChanges = function(p)
+{
+ if (this._isDisplayable) {
+ this.getParent()._addChildToChildrenQueue(this);
+ }
+
+ return this._layoutChanges[p] = true;
+}
+
+qx.Proto.addToQueue = function(p) {
+ this._initialLayoutDone ? this.addToJobQueue(p) : this.addToLayoutChanges(p);
+}
+
+qx.Proto.addToQueueRuntime = function(p) {
+ return !this._initialLayoutDone || this.addToJobQueue(p);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BORDER/MARGIN/PADDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyBorderX = function(vChild, vChanges, vStyle)
+{
+ var vBorder = vChild.getBorder();
+ vBorder ? vBorder._applyWidgetX(vChild) : qx.renderer.border.Border._resetBorderX(vChild);
+}
+
+qx.Proto._applyBorderY = function(vChild, vChanges, vStyle)
+{
+ var vBorder = vChild.getBorder();
+ vBorder ? vBorder._applyWidgetY(vChild) : qx.renderer.border.Border._resetBorderY(vChild);
+}
+
+qx.Proto._applyPaddingX = qx.util.Return.returnTrue;
+qx.Proto._applyPaddingY = qx.util.Return.returnTrue;
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT AUTO/PERCENT CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "hasPercentX", defaultValue : false });
+qx.OO.addCachedProperty({ name : "hasPercentY", defaultValue : false });
+qx.OO.addCachedProperty({ name : "hasAutoX", defaultValue : false });
+qx.OO.addCachedProperty({ name : "hasAutoY", defaultValue : false });
+qx.OO.addCachedProperty({ name : "hasFlexX", defaultValue : false });
+qx.OO.addCachedProperty({ name : "hasFlexY", defaultValue : false });
+
+qx.Proto._computeHasPercentX = function() {
+ return (this._computedLeftTypePercent ||
+ this._computedWidthTypePercent ||
+ this._computedMinWidthTypePercent ||
+ this._computedMaxWidthTypePercent ||
+ this._computedRightTypePercent);
+}
+
+qx.Proto._computeHasPercentY = function() {
+ return (this._computedTopTypePercent ||
+ this._computedHeightTypePercent ||
+ this._computedMinHeightTypePercent ||
+ this._computedMaxHeightTypePercent ||
+ this._computedBottomTypePercent);
+}
+
+qx.Proto._computeHasAutoX = function() {
+ return (this._computedWidthTypeAuto ||
+ this._computedMinWidthTypeAuto ||
+ this._computedMaxWidthTypeAuto);
+}
+
+qx.Proto._computeHasAutoY = function() {
+ return (this._computedHeightTypeAuto ||
+ this._computedMinHeightTypeAuto ||
+ this._computedMaxHeightTypeAuto);
+}
+
+qx.Proto._computeHasFlexX = function() {
+ return this._computedWidthTypeFlex;
+}
+
+qx.Proto._computeHasFlexY = function() {
+ return this._computedHeightTypeFlex;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT TYPE INDENTIFY HELPER METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget.TYPE_NULL = 0;
+qx.ui.core.Widget.TYPE_PIXEL = 1;
+qx.ui.core.Widget.TYPE_PERCENT = 2;
+qx.ui.core.Widget.TYPE_AUTO = 3;
+qx.ui.core.Widget.TYPE_FLEX = 4;
+
+qx.Proto._evalUnitsPixelPercentAutoFlex = function(propValue)
+{
+ switch(propValue)
+ {
+ case "auto":
+ return qx.ui.core.Widget.TYPE_AUTO;
+
+ case Infinity:
+ case -Infinity:
+ return qx.ui.core.Widget.TYPE_NULL;
+ }
+
+ switch(typeof propValue)
+ {
+ case "number":
+ return isNaN(propValue) ? qx.ui.core.Widget.TYPE_NULL : qx.ui.core.Widget.TYPE_PIXEL;
+
+ case "string":
+ return propValue.indexOf("%") != -1 ? qx.ui.core.Widget.TYPE_PERCENT : propValue.indexOf("*") != -1 ? qx.ui.core.Widget.TYPE_FLEX : qx.ui.core.Widget.TYPE_NULL;
+ }
+
+ return qx.ui.core.Widget.TYPE_NULL;
+}
+
+qx.Proto._evalUnitsPixelPercentAuto = function(propValue)
+{
+ switch(propValue)
+ {
+ case "auto":
+ return qx.ui.core.Widget.TYPE_AUTO;
+
+ case Infinity:
+ case -Infinity:
+ return qx.ui.core.Widget.TYPE_NULL;
+ }
+
+ switch(typeof propValue)
+ {
+ case "number":
+ return isNaN(propValue) ? qx.ui.core.Widget.TYPE_NULL : qx.ui.core.Widget.TYPE_PIXEL;
+
+ case "string":
+ return propValue.indexOf("%") != -1 ? qx.ui.core.Widget.TYPE_PERCENT : qx.ui.core.Widget.TYPE_NULL;
+ }
+
+ return qx.ui.core.Widget.TYPE_NULL;
+}
+
+qx.Proto._evalUnitsPixelPercent = function(propValue)
+{
+ switch(propValue)
+ {
+ case Infinity:
+ case -Infinity:
+ return qx.ui.core.Widget.TYPE_NULL;
+ }
+
+ switch(typeof propValue)
+ {
+ case "number":
+ return isNaN(propValue) ? qx.ui.core.Widget.TYPE_NULL : qx.ui.core.Widget.TYPE_PIXEL;
+
+ case "string":
+ return propValue.indexOf("%") != -1 ? qx.ui.core.Widget.TYPE_PERCENT : qx.ui.core.Widget.TYPE_NULL;
+ }
+
+ return qx.ui.core.Widget.TYPE_NULL;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT TYPE AND VALUE KEY PRE-CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.ui.core.Widget.layoutPropertyTypes = {};
+
+qx.ui.core.Widget.initLayoutProperties = function()
+{
+ var a = [ "width", "height",
+ "minWidth", "maxWidth",
+ "minHeight", "maxHeight",
+ "left", "right", "top", "bottom" ];
+
+ for (var i=0, l=a.length, p, b, t; i<l; i++)
+ {
+ p = a[i];
+ b = "_computed" + qx.lang.String.toFirstUp(p);
+ t = b + "Type";
+
+ qx.ui.core.Widget.layoutPropertyTypes[p] =
+ {
+ dataType : t,
+ dataParsed : b + "Parsed",
+ dataValue : b + "Value",
+
+ typePixel : t + "Pixel",
+ typePercent : t + "Percent",
+ typeAuto : t + "Auto",
+ typeFlex : t + "Flex",
+ typeNull : t + "Null"
+ }
+ }
+}
+
+qx.ui.core.Widget.initLayoutProperties();
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LAYOUT TYPE AND VALUE STORAGE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._unitDetectionPixelPercentAutoFlex = function(propData, propValue)
+{
+ var r = qx.ui.core.Widget.layoutPropertyTypes[propData.name];
+
+ var s = r.dataType;
+ var p = r.dataParsed;
+ var v = r.dataValue;
+
+ var s1 = r.typePixel;
+ var s2 = r.typePercent;
+ var s3 = r.typeAuto;
+ var s4 = r.typeFlex;
+ var s5 = r.typeNull;
+
+ var wasPercent = this[s2];
+ var wasAuto = this[s3];
+ var wasFlex = this[s4];
+
+ switch(this[s] = this._evalUnitsPixelPercentAutoFlex(propValue))
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ this[s1] = true;
+ this[s2] = this[s3] = this[s4] = this[s5] = false;
+ this[p] = this[v] = Math.round(propValue);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ this[s2] = true;
+ this[s1] = this[s3] = this[s4] = this[s5] = false;
+ this[p] = parseFloat(propValue);
+ this[v] = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ this[s3] = true;
+ this[s1] = this[s2] = this[s4] = this[s5] = false;
+ this[p] = this[v] = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_FLEX:
+ this[s4] = true;
+ this[s1] = this[s2] = this[s3] = this[s5] = false;
+ this[p] = parseFloat(propValue);
+ this[v] = null;
+ break;
+
+ default:
+ this[s5] = true;
+ this[s1] = this[s2] = this[s3] = this[s4] = false;
+ this[p] = this[v] = null;
+ break;
+ }
+
+ if (wasPercent != this[s2])
+ {
+ switch(propData.name)
+ {
+ case "minWidth":
+ case "maxWidth":
+ case "width":
+ case "left":
+ case "right":
+ this._invalidateHasPercentX();
+ break;
+
+ case "maxHeight":
+ case "minHeight":
+ case "height":
+ case "top":
+ case "bottom":
+ this._invalidateHasPercentY();
+ break;
+ }
+ }
+
+ // No ELSE because you can also switch from percent to auto
+ if (wasAuto != this[s3])
+ {
+ switch(propData.name)
+ {
+ case "minWidth":
+ case "maxWidth":
+ case "width":
+ this._invalidateHasAutoX();
+ break;
+
+ case "minHeight":
+ case "maxHeight":
+ case "height":
+ this._invalidateHasAutoY();
+ break;
+ }
+ }
+
+ // No ELSE because you can also switch from percent to auto
+ if (wasFlex != this[s4])
+ {
+ switch(propData.name)
+ {
+ case "width":
+ this._invalidateHasFlexX();
+ break;
+
+ case "height":
+ this._invalidateHasFlexY();
+ break;
+ }
+ }
+}
+
+qx.Proto._unitDetectionPixelPercentAuto = function(propData, propValue)
+{
+ var r = qx.ui.core.Widget.layoutPropertyTypes[propData.name];
+
+ var s = r.dataType;
+ var p = r.dataParsed;
+ var v = r.dataValue;
+
+ var s1 = r.typePixel;
+ var s2 = r.typePercent;
+ var s3 = r.typeAuto;
+ var s4 = r.typeNull;
+
+ var wasPercent = this[s2];
+ var wasAuto = this[s3];
+
+ switch(this[s] = this._evalUnitsPixelPercentAuto(propValue))
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ this[s1] = true;
+ this[s2] = this[s3] = this[s4] = false;
+ this[p] = this[v] = Math.round(propValue);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ this[s2] = true;
+ this[s1] = this[s3] = this[s4] = false;
+ this[p] = parseFloat(propValue);
+ this[v] = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ this[s3] = true;
+ this[s1] = this[s2] = this[s4] = false;
+ this[p] = this[v] = null;
+ break;
+
+ default:
+ this[s4] = true;
+ this[s1] = this[s2] = this[s3] = false;
+ this[p] = this[v] = null;
+ break;
+ }
+
+ if (wasPercent != this[s2])
+ {
+ switch(propData.name)
+ {
+ case "minWidth":
+ case "maxWidth":
+ case "width":
+ case "left":
+ case "right":
+ this._invalidateHasPercentX();
+ break;
+
+ case "minHeight":
+ case "maxHeight":
+ case "height":
+ case "top":
+ case "bottom":
+ this._invalidateHasPercentY();
+ break;
+ }
+ }
+
+ // No ELSE because you can also switch from percent to auto
+ if (wasAuto != this[s3])
+ {
+ switch(propData.name)
+ {
+ case "minWidth":
+ case "maxWidth":
+ case "width":
+ this._invalidateHasAutoX();
+ break;
+
+ case "minHeight":
+ case "maxHeight":
+ case "height":
+ this._invalidateHasAutoY();
+ break;
+ }
+ }
+}
+
+qx.Proto._unitDetectionPixelPercent = function(propData, propValue)
+{
+ var r = qx.ui.core.Widget.layoutPropertyTypes[propData.name];
+
+ var s = r.dataType;
+ var p = r.dataParsed;
+ var v = r.dataValue;
+
+ var s1 = r.typePixel;
+ var s2 = r.typePercent;
+ var s3 = r.typeNull;
+
+ var wasPercent = this[s2];
+
+ switch(this[s] = this._evalUnitsPixelPercent(propValue))
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ this[s1] = true;
+ this[s2] = this[s3] = false;
+ this[p] = this[v] = Math.round(propValue);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ this[s2] = true;
+ this[s1] = this[s3] = false;
+ this[p] = parseFloat(propValue);
+ this[v] = null;
+ break;
+
+ default:
+ this[s3] = true;
+ this[s1] = this[s2] = false;
+ this[p] = this[v] = null;
+ break;
+ }
+
+ if (wasPercent != this[s2])
+ {
+ switch(propData.name)
+ {
+ case "minWidth":
+ case "maxWidth":
+ case "width":
+ case "left":
+ case "right":
+ this._invalidateHasPercentX();
+ break;
+
+ case "minHeight":
+ case "maxHeight":
+ case "height":
+ case "top":
+ case "bottom":
+ this._invalidateHasPercentY();
+ break;
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INLINE EVENTS
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.ui.core.Widget.inlineEventMap =
+ {
+ input : "onpropertychange",
+ select : "onselect",
+ scroll : "onscroll",
+ focus : "onfocus",
+ blur : "onblur"
+ }
+
+ qx.Proto.enableInlineEvent = function(vEventName)
+ {
+ var vEventType = qx.ui.core.Widget.inlineEventMap[vEventName];
+
+ if (!this._inlineEvents)
+ {
+ this._inlineEvents = [vEventType];
+ }
+ else
+ {
+ this._inlineEvents.push(vEventType);
+ }
+
+ if (this._isCreated) {
+ this.getElement()[vEventType] = qx.ui.core.Widget.__oninlineevent;
+ }
+ }
+
+ qx.Proto.disableInlineEvent = function(vEventName)
+ {
+ var vEventType = qx.ui.core.Widget.inlineEventMap[vEventName];
+
+ if (this._inlineEvents) {
+ qx.lang.Array.remove(this._inlineEvents, vEventType);
+ }
+
+ if (this._isCreated) {
+ this.getElement()[vEventType] = null;
+ }
+ }
+
+ qx.Proto._addInlineEvents = function(vElement)
+ {
+ if (this._inlineEvents)
+ {
+ for (var i=0, a=this._inlineEvents, l=a.length; i<l; i++) {
+ vElement[a[i]] = qx.ui.core.Widget.__oninlineevent;
+ }
+ }
+ }
+
+ qx.Proto._removeInlineEvents = function(vElement)
+ {
+ if (this._inlineEvents)
+ {
+ for (var i=0, a=this._inlineEvents, l=a.length; i<l; i++) {
+ vElement[a[i]] = null;
+ }
+ }
+ }
+}
+else
+{
+ qx.Proto.enableInlineEvent = function(vEventName)
+ {
+ if (!this._inlineEvents)
+ {
+ this._inlineEvents = [vEventName];
+ }
+ else
+ {
+ this._inlineEvents.push(vEventName);
+ }
+
+ if (this._isCreated) {
+ this.getElement().addEventListener(vEventName, qx.ui.core.Widget.__oninlineevent, false);
+ }
+ }
+
+ qx.Proto.disableInlineEvent = function(vEventName)
+ {
+ if (this._inlineEvents) {
+ qx.lang.Array.remove(this._inlineEvents, vEventName);
+ }
+
+ if (this._isCreated) {
+ this.getElement().removeEventListener(vEventName, qx.ui.core.Widget.__oninlineevent, false);
+ }
+ }
+
+ qx.Proto._addInlineEvents = function(vElement)
+ {
+ if (this._inlineEvents)
+ {
+ for (var i=0, a=this._inlineEvents, l=a.length; i<l; i++) {
+ vElement.addEventListener(a[i], qx.ui.core.Widget.__oninlineevent, false);
+ }
+ }
+ }
+
+ qx.Proto._removeInlineEvents = function(vElement)
+ {
+ if (this._inlineEvents)
+ {
+ for (var i=0, a=this._inlineEvents, l=a.length; i<l; i++) {
+ vElement.removeEventListener(a[i], qx.ui.core.Widget.__oninlineevent, false);
+ }
+ }
+ }
+}
+
+qx.ui.core.Widget.__oninlineevent = function(e)
+{
+ if (!e) {
+ e = window.event;
+ }
+
+ if (this.qx_Widget) {
+ return this.qx_Widget._oninlineevent(e);
+ }
+}
+
+qx.Proto._oninlineevent = function(e)
+{
+ if (qx.ui.core.Widget._inFlushGlobalQueues) {
+ return;
+ }
+
+ // this.debug("Inlineevent: " + e.type);
+
+ switch(e.type)
+ {
+ case "propertychange":
+ this._oninlineproperty(e);
+ break;
+
+ case "input":
+ this._oninlineinput(e);
+ break;
+
+ default:
+ this.createDispatchEvent(e.type);
+ }
+}
+
+qx.Proto._oninlineinput = function(e)
+{
+ this.createDispatchDataEvent("input", this.getComputedValue());
+
+ // Block parents from this event
+ if (e.stopPropagation) {
+ e.stopPropagation();
+ }
+
+ e.returnValue = -1;
+}
+
+qx.Proto._oninlineproperty = function(e)
+{
+ switch(e.propertyName)
+ {
+ case "value":
+ if (!this._inValueProperty) {
+ this._oninlineinput(e);
+ }
+
+ break;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN MANAGMENT
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The widget which is at the top level,
+ which contains all others (normally a
+ instance of qx.ui.core.ClientDocument).
+*/
+qx.Proto.getTopLevelWidget = function() {
+ return this._hasParent ? this.getParent().getTopLevelWidget() : null;
+}
+
+/*!
+ Move myself to immediately before another child of the same parent.
+*/
+qx.Proto.moveSelfBefore = function(vBefore) {
+ this.getParent().addBefore(this, vBefore);
+}
+
+/*!
+ Move myself to immediately after another child of the same parent.
+*/
+qx.Proto.moveSelfAfter = function(vAfter) {
+ this.getParent().addAfter(this, vAfter);
+}
+
+/*!
+ Move myself to the head of the list: make me the first child.
+*/
+qx.Proto.moveSelfToBegin = function() {
+ this.getParent().addAtBegin(this);
+}
+
+/*!
+ Move myself to the end of the list: make me the last child.
+*/
+qx.Proto.moveSelfToEnd = function() {
+ this.getParent().addAtEnd(this);
+}
+
+/*!
+ Returns the previous sibling.
+*/
+qx.Proto.getPreviousSibling = function()
+{
+ var p = this.getParent();
+
+ if(p == null) {
+ return null;
+ }
+
+ var cs = p.getChildren();
+ return cs[cs.indexOf(this) - 1];
+}
+
+/*!
+ Returns the next sibling.
+*/
+qx.Proto.getNextSibling = function()
+{
+ var p = this.getParent();
+
+ if(p == null) {
+ return null;
+ }
+
+ var cs = p.getChildren();
+ return cs[cs.indexOf(this) + 1];
+}
+
+/*!
+ Returns the previous visible sibling.
+*/
+qx.Proto.getPreviousVisibleSibling = function()
+{
+ if(!this._hasParent) {
+ return null;
+ }
+
+ var vChildren = this.getParent().getVisibleChildren();
+ return vChildren[vChildren.indexOf(this) - 1];
+}
+
+/*!
+ Returns the next visible sibling.
+*/
+qx.Proto.getNextVisibleSibling = function()
+{
+ if(!this._hasParent) {
+ return null;
+ }
+
+ var vChildren = this.getParent().getVisibleChildren();
+ return vChildren[vChildren.indexOf(this) + 1];
+}
+
+qx.Proto.getPreviousActiveSibling = function(vIgnoreClasses)
+{
+ var vPrev = qx.ui.core.Widget.getActiveSiblingHelper(this, this.getParent(), -1, vIgnoreClasses, null);
+ return vPrev ? vPrev : this.getParent().getLastActiveChild();
+}
+
+qx.Proto.getNextActiveSibling = function(vIgnoreClasses)
+{
+ var vNext = qx.ui.core.Widget.getActiveSiblingHelper(this, this.getParent(), 1, vIgnoreClasses, null);
+ return vNext ? vNext : this.getParent().getFirstActiveChild();
+}
+
+qx.Proto.isFirstChild = function() {
+ return this._hasParent && this.getParent().getFirstChild() == this;
+}
+
+qx.Proto.isLastChild = function() {
+ return this._hasParent && this.getParent().getLastChild() == this;
+}
+
+qx.Proto.isFirstVisibleChild = function() {
+ return this._hasParent && this.getParent().getFirstVisibleChild() == this;
+}
+
+qx.Proto.isLastVisibleChild = function() {
+ return this._hasParent && this.getParent().getLastVisibleChild() == this;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ENABLED MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this.removeState("disabled");
+ }
+ else
+ {
+ this.addState("disabled");
+
+ // Also reset some states to be sure a pressed/hovered button gets reset
+ this.removeState("over");
+
+ if (qx.OO.isAvailable("qx.ui.form.Button"))
+ {
+ this.removeState("abandoned");
+ this.removeState("pressed");
+ }
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE HANDLING
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Returns whether a state is set.
+ *
+ * @param vState {string} the state to check.
+ * @return {boolean} whether the state is set.
+ */
+qx.Proto.hasState = function(vState) {
+ return this._states[vState] ? true : false;
+}
+
+/**
+ * Sets a state.
+ *
+ * @param state {string} the state to set.
+ */
+qx.Proto.addState = function(vState)
+{
+ if (! this._states[vState]) {
+ this._states[vState] = true;
+
+ if (this._hasParent) {
+ qx.ui.core.Widget.addToGlobalStateQueue(this);
+ }
+ }
+}
+
+/**
+ * Clears a state.
+ *
+ * @param vState {string} the state to clear.
+ */
+qx.Proto.removeState = function(vState)
+{
+ if (this._states[vState]) {
+ delete this._states[vState];
+
+ if (this._hasParent) {
+ qx.ui.core.Widget.addToGlobalStateQueue(this);
+ }
+ }
+}
+
+/**
+ * Sets or clears a state.
+ *
+ * @param state {string} the state to set or clear.
+ * @param enabled {boolean} whether the state should be set.
+ * If false it will be cleared.
+ */
+qx.Proto.setState = function(state, enabled) {
+ if (enabled) {
+ this.addState(state);
+ } else {
+ this.removeState(state);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEARANCE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyInitialAppearance = function()
+{
+ var vAppearance = this.getAppearance();
+
+ if (vAppearance)
+ {
+ try
+ {
+ var r = qx.manager.object.AppearanceManager.getInstance().getAppearanceTheme().initialFrom(vAppearance);
+ if (r) {
+ this.set(r);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Could not apply initial appearance", ex);
+ }
+ }
+}
+
+qx.Proto._applyStateAppearance = function()
+{
+ // HACK: Is there a cleaner way to implement this?
+ // Maybe not use the appearance for this, but a simple property and event handler combination?
+ this._applyStateStyleFocus(this._states);
+
+ var vAppearance = this.getAppearance();
+
+ if (vAppearance)
+ {
+ try
+ {
+ var r = qx.manager.object.AppearanceManager.getInstance().getAppearanceTheme().stateFrom(vAppearance, this._states);
+ if (r) {
+ this.set(r);
+ }
+ }
+ catch(ex)
+ {
+ this.error("Could not apply state appearance", ex);
+ }
+ }
+}
+
+qx.Proto._resetAppearanceThemeWrapper = function(vNewAppearanceTheme, vOldAppearanceTheme)
+{
+ var vAppearance = this.getAppearance();
+
+ if (vAppearance)
+ {
+ var vOldAppearanceThemeObject = qx.manager.object.AppearanceManager.getInstance().getThemeById(vOldAppearanceTheme);
+ var vNewAppearanceThemeObject = qx.manager.object.AppearanceManager.getInstance().getThemeById(vNewAppearanceTheme);
+
+ var vOldAppearanceProperties = qx.lang.Object.mergeWith(vOldAppearanceThemeObject.initialFrom(vAppearance), vOldAppearanceThemeObject.stateFrom(vAppearance, this._states));
+ var vNewAppearanceProperties = qx.lang.Object.mergeWith(vNewAppearanceThemeObject.initialFrom(vAppearance), vNewAppearanceThemeObject.stateFrom(vAppearance, this._states));
+
+ for (var vProp in vOldAppearanceProperties)
+ {
+ if (!(vProp in vNewAppearanceProperties)) {
+ this[qx.OO.resetter[vProp]]();
+ }
+ }
+
+ this.set(vNewAppearanceProperties);
+ }
+}
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ /*
+ Mshtml does not support outlines by css
+ */
+ qx.Proto._applyStateStyleFocus = function(vStates) {}
+}
+else if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._applyStateStyleFocus = function(vStates)
+ {
+ if (vStates.focused)
+ {
+ if (!qx.event.handler.FocusHandler.mouseFocus && !this.getHideFocus())
+ {
+ this.setStyleProperty("MozOutline", "1px dotted invert");
+ }
+ }
+ else
+ {
+ this.removeStyleProperty("MozOutline");
+ }
+ }
+}
+else
+{
+ qx.Proto._applyStateStyleFocus = function(vStates)
+ {
+ if (vStates.focused)
+ {
+ if (!qx.event.handler.FocusHandler.mouseFocus && !this.getHideFocus())
+ {
+ this.setStyleProperty("outline", "1px dotted invert");
+ }
+ }
+ else
+ {
+ this.setStyleProperty("outline", "0px none");
+ }
+ }
+}
+
+qx.Proto.addToStateQueue = function() {
+ qx.ui.core.Widget.addToGlobalStateQueue(this);
+}
+
+qx.Proto.recursiveAddToStateQueue = function() {
+ this.addToStateQueue();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEARANCE MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyAppearance = function(propValue, propOldValue, propData)
+{
+ var vAppearanceThemeObject = qx.manager.object.AppearanceManager.getInstance().getAppearanceTheme();
+
+ var vNewAppearanceProperties = vAppearanceThemeObject.initialFrom(propValue);
+
+ if (this.isCreated()) {
+ qx.lang.Object.mergeWith(vNewAppearanceProperties, vAppearanceThemeObject.stateFrom(propValue, this._states));
+ }
+
+ if (propOldValue)
+ {
+ var vOldAppearanceProperties = vAppearanceThemeObject.initialFrom(propOldValue);
+
+ if (this.isCreated()) {
+ qx.lang.Object.mergeWith(vOldAppearanceProperties, vAppearanceThemeObject.stateFrom(propOldValue, this._states));
+ }
+
+ for (var vProp in vOldAppearanceProperties)
+ {
+ if (!(vProp in vNewAppearanceProperties)) {
+ this[qx.OO.resetter[vProp]]();
+ }
+ }
+ }
+
+ this.set(vNewAppearanceProperties);
+
+ return true;
+}
+
+qx.Proto._recursiveAppearanceThemeUpdate = function(vNewAppearanceTheme, vOldAppearanceTheme)
+{
+ try
+ {
+ this._resetAppearanceThemeWrapper(vNewAppearanceTheme, vOldAppearanceTheme);
+ }
+ catch(ex)
+ {
+ this.error("Failed to update appearance theme", ex);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ELEMENT DATA
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Placeholder method to add attributes and other content to element node
+*/
+qx.Proto._applyElementData = function(el) {}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HTML PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setHtmlProperty = function(propName, propValue)
+{
+ if (!this._htmlProperties) {
+ this._htmlProperties = {};
+ }
+
+ this._htmlProperties[propName] = propValue;
+
+ if (this._isCreated && this.getElement()[propName] != propValue) {
+ this.getElement()[propName] = propValue;
+ }
+
+ return true;
+}
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.removeHtmlProperty = function(propName)
+ {
+ if (!this._htmlProperties) {
+ return;
+ }
+
+ delete this._htmlProperties[propName];
+
+ if (this._isCreated) {
+ this.getElement().removeAttribute(propName);
+ }
+
+ return true;
+ }
+}
+else
+{
+ qx.Proto.removeHtmlProperty = function(propName)
+ {
+ if (!this._htmlProperties) {
+ return;
+ }
+
+ delete this._htmlProperties[propName];
+
+ if (this._isCreated)
+ {
+ this.getElement().removeAttribute(propName);
+ delete this.getElement()[propName];
+ }
+
+ return true;
+ }
+}
+
+qx.Proto.getHtmlProperty = function(propName)
+{
+ if (!this._htmlProperties) {
+ return "";
+ }
+
+ return this._htmlProperties[propName] || "";
+}
+
+qx.Proto._applyHtmlProperties = function(vElement)
+{
+ var vProperties = this._htmlProperties;
+
+ if (vProperties)
+ {
+ // this.debug("HTML-Properties: " + qx.lang.Object.getLength(vProperties));
+
+ var propName;
+
+ for (propName in vProperties) {
+ vElement[propName] = vProperties[propName];
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HTML ATTRIBUTES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setHtmlAttribute = function(propName, propValue)
+{
+ if (!this._htmlAttributes) {
+ this._htmlAttributes = {};
+ }
+
+ this._htmlAttributes[propName] = propValue;
+
+ if (this._isCreated) {
+ this.getElement().setAttribute(propName, propValue);
+ }
+
+ return true;
+}
+
+qx.Proto.removeHtmlAttribute = function(propName)
+{
+ if (!this._htmlAttributes) {
+ return;
+ }
+
+ delete this._htmlAttributes[propName];
+
+ if (this._isCreated) {
+ this.getElement().removeAttribute(propName);
+ }
+
+ return true;
+}
+
+qx.Proto.getHtmlAttribute = function(propName)
+{
+ if (!this._htmlAttributes) {
+ return "";
+ }
+
+ return this._htmlAttributes[propName] || "";
+}
+
+qx.Proto._applyHtmlAttributes = function(vElement)
+{
+ var vAttributes = this._htmlAttributes;
+
+ if (vAttributes)
+ {
+ // this.debug("HTML-Attributes: " + qx.lang.Object.getLength(vAttributes));
+
+ var propName;
+
+ for (propName in vAttributes) {
+ vElement.setAttribute(propName, vAttributes[propName]);
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STYLE PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getStyleProperty = function(propName) {
+ return this._styleProperties[propName] || "";
+}
+
+qx.Proto.setStyleProperty = function(propName, propValue)
+{
+ this._styleProperties[propName] = propValue;
+
+ if (this._isCreated)
+ {
+ /*
+ The zIndex and filter properties should always be
+ applied on the "real" element node.
+ */
+ switch(propName)
+ {
+ case "zIndex":
+ case "filter":
+ case "display":
+ case "visibility":
+ var vElement = this.getElement();
+ break;
+
+ default:
+ var vElement = this._getTargetNode();
+ }
+
+ if (vElement) {
+ vElement.style[propName] = propValue;
+ }
+ }
+
+ return true;
+}
+
+qx.Proto.removeStyleProperty = function(propName)
+{
+ delete this._styleProperties[propName];
+
+ if (this._isCreated)
+ {
+ /*
+ The zIndex and filter properties should always be
+ applied on the "real" element node.
+ */
+ switch(propName)
+ {
+ case "zIndex":
+ case "filter":
+ case "display":
+ case "visibility":
+ var vElement = this.getElement();
+ break;
+
+ default:
+ var vElement = this._getTargetNode();
+ }
+
+ if (vElement) {
+ vElement.style[propName] = "";
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._applyStyleProperties = function(vElement)
+{
+ var vProperties = this._styleProperties;
+ var propName;
+
+ var vBaseElement = vElement;
+ var vTargetElement = this._getTargetNode();
+
+ for (propName in vProperties)
+ {
+ /*
+ The zIndex and filter properties should always be
+ applied on the "real" element node.
+ */
+ switch(propName)
+ {
+ case "zIndex":
+ case "filter":
+ vElement = vBaseElement;
+ break;
+
+ default:
+ vElement = vTargetElement;
+ }
+
+ vElement.style[propName] = vProperties[propName];
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FOCUS HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.isFocusable = function() {
+ return this.isEnabled() && this.isSeeable() && this.getTabIndex() >= 0;
+}
+
+qx.Proto.isFocusRoot = function() {
+ return false;
+}
+
+qx.Proto.getFocusRoot = function()
+{
+ if(this._hasParent) {
+ return this.getParent().getFocusRoot();
+ }
+
+ return null;
+}
+
+qx.Proto.getActiveChild = function()
+{
+ var vRoot = this.getFocusRoot();
+ if (vRoot) {
+ return vRoot.getActiveChild();
+ }
+
+ return null;
+}
+
+qx.Proto._ontabfocus = qx.util.Return.returnTrue;
+
+qx.Proto._modifyFocused = function(propValue, propOldValue, propData)
+{
+ if (!this.isCreated()) {
+ return true;
+ }
+
+ var vFocusRoot = this.getFocusRoot();
+
+ // this.debug("Focused: " + propValue);
+
+ if (vFocusRoot)
+ {
+ // may be undefined if this widget has been removed
+ if (propValue)
+ {
+ vFocusRoot.setFocusedChild(this);
+ this._visualizeFocus();
+ }
+ else
+ {
+ if (vFocusRoot.getFocusedChild() == this) {
+ vFocusRoot.setFocusedChild(null);
+ }
+
+ this._visualizeBlur();
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._visualizeBlur = function()
+{
+ // Force blur, even if mouseFocus is not active because we
+ // need to be sure that the previous focus rect gets removed.
+ // But this only needs to be done, if there is no new focused element.
+ if (this.getEnableElementFocus() && (!this.getFocusRoot().getFocusedChild() || (this.getFocusRoot().getFocusedChild() && this.getFocusRoot().getFocusedChild().getEnableElementFocus())))
+ {
+ try {
+ this.getElement().blur();
+ } catch(ex) {};
+ }
+
+ this.removeState("focused");
+ return true;
+}
+
+qx.Proto._visualizeFocus = function()
+{
+ //this.info("_visualizeFocus: " + qx.event.handler.FocusHandler.mouseFocus);
+ if (!qx.event.handler.FocusHandler.mouseFocus && this.getEnableElementFocus())
+ {
+ try {
+ this.getElement().focus();
+ } catch(ex) {};
+ }
+
+ this.addState("focused");
+ return true;
+}
+
+qx.Proto.focus = function()
+{
+ delete qx.event.handler.FocusHandler.mouseFocus;
+ this.setFocused(true);
+}
+
+qx.Proto.blur = function()
+{
+ delete qx.event.handler.FocusHandler.mouseFocus;
+ this.setFocused(false);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CAPTURE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyCapture = function(propValue, propOldValue, propData)
+{
+ var vMgr = qx.event.handler.EventHandler.getInstance();
+
+ if (propOldValue)
+ {
+ vMgr.setCaptureWidget(null);
+ }
+ else if (propValue)
+ {
+ vMgr.setCaptureWidget(this);
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ZINDEX
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyZIndex = function(propValue, propOldValue, propData) {
+ return this.setStyleProperty(propData.name, propValue);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TAB INDEX
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifyTabIndex = function(propValue, propOldValue, propData)
+ {
+ if (propValue < 0 || !this.getEnabled()) {
+ this.setHtmlProperty("unselectable",
+ "on");
+ } else {
+ this.removeHtmlProperty("unselectable");
+ }
+
+ this.setHtmlProperty("tabIndex",
+ propValue < 0 ? -1 : 1);
+
+ return true;
+ }
+}
+else if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._modifyTabIndex = function(propValue, propOldValue, propData)
+ {
+ this.setStyleProperty("MozUserFocus",
+ (propValue < 0
+ ? "ignore"
+ : "normal"));
+
+ // be forward compatible (CSS 3 Draft)
+ this.setStyleProperty("userFocus",
+ (propValue < 0
+ ? "ignore"
+ : "normal"));
+
+ return true;
+ }
+}
+else
+{
+ qx.Proto._modifyTabIndex = function(propValue, propOldValue, propData)
+ {
+ // CSS 3 Draft
+ this.setStyleProperty("userFocus",
+ (propValue < 0
+ ? "ignore"
+ : "normal"));
+
+ // IE Backward Compatible
+ if (propValue < 0 || !this.getEnabled()) {
+ this.setHtmlProperty("unselectable",
+ "on");
+ } else {
+ this.removeHtmlProperty("unselectable");
+ }
+
+ this.setHtmlProperty("tabIndex",
+ propValue < 0 ? -1 : 1);
+
+ return true;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CSS CLASS NAME
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setCssClassName = function(propValue) {
+ this.setHtmlProperty("className", propValue);
+}
+
+qx.Proto.getCssClassName = function() {
+ return this.getHtmlProperty("className");
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WIDGET FROM POINT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getWidgetFromPoint = function(x, y)
+{
+ var ret = this.getWidgetFromPointHelper(x, y);
+ return ret && ret != this ? ret : null;
+}
+
+qx.Proto.getWidgetFromPointHelper = function(x, y) {
+ return this;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CAN SELECT
+---------------------------------------------------------------------------
+*/
+
+if(qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifySelectable = function(propValue, propOldValue, propData)
+ {
+ if (propValue)
+ {
+ return this.removeHtmlProperty("unselectable");
+ }
+ else
+ {
+ return this.setHtmlProperty("unselectable", "on");
+ }
+ }
+}
+else if(qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._modifySelectable = function(propValue, propOldValue, propData)
+ {
+ if (propValue)
+ {
+ this.removeStyleProperty("MozUserSelect");
+ }
+ else
+ {
+ this.setStyleProperty("MozUserSelect", "none");
+ }
+
+ return true;
+ };
+}
+else if (qx.sys.Client.getInstance().isOpera())
+{
+ // No known method available for this client
+ qx.Proto._modifySelectable = function(propValue, propOldValue, propData) {
+ return true;
+ }
+}
+else if (qx.sys.Client.getInstance().isKhtml() || qx.sys.Client.getInstance().isWebkit())
+{
+ qx.Proto._modifySelectable = function(propValue, propOldValue, propData)
+ {
+ // Be forward compatible and use both userSelect and KhtmlUserSelect
+ if (propValue)
+ {
+ this.removeStyleProperty("KhtmlUserSelect");
+ }
+ else
+ {
+ this.setStyleProperty("KhtmlUserSelect", "none");
+ }
+
+ return true;
+ };
+}
+else
+{
+ qx.Proto._modifySelectable = function(propValue, propOldValue, propData)
+ {
+ if (propValue)
+ {
+ return this.removeStyleProperty("userSelect");
+ }
+ else
+ {
+ this.setStyleProperty("userSelect", "none");
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OPACITY
+---------------------------------------------------------------------------
+*/
+
+/*!
+Sets the opacity for the widget. Any child widget inside the widget will also
+become (semi-)transparent. The value should be a number between 0 and 1
+inclusive, where 1 means totally opaque and 0 invisible.
+*/
+if(qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifyOpacity = function(propValue, propOldValue, propData)
+ {
+ if(propValue == null || propValue >= 1 || propValue < 0)
+ {
+ this.removeStyleProperty("filter");
+ }
+ else if (qx.util.Validation.isValidNumber(propValue))
+ {
+ this.setStyleProperty("filter",
+ ("Alpha(Opacity=" +
+ Math.round(propValue * 100) +
+ ")"));
+ }
+ else
+ {
+ throw new Error("Unsupported opacity value: " + propValue);
+ }
+
+ return true;
+ }
+}
+else
+{
+ qx.Proto._modifyOpacity = function(propValue, propOldValue, propData)
+ {
+ if(propValue == null || propValue > 1)
+ {
+ if (qx.sys.Client.getInstance().isGecko())
+ {
+ this.removeStyleProperty("MozOpacity");
+ }
+ else if (qx.sys.Client.getInstance().isKhtml())
+ {
+ this.removeStyleProperty("KhtmlOpacity");
+ }
+
+ this.removeStyleProperty("opacity");
+ }
+ else if (qx.util.Validation.isValidNumber(propValue))
+ {
+ propValue = qx.lang.Number.limit(propValue, 0, 1);
+
+ // should we omit gecko's flickering here
+ // and limit the max value to 0.99?
+
+ if (qx.sys.Client.getInstance().isGecko())
+ {
+ this.setStyleProperty("MozOpacity", propValue);
+ }
+ else if (qx.sys.Client.getInstance().isKhtml())
+ {
+ this.setStyleProperty("KhtmlOpacity", propValue);
+ }
+
+ this.setStyleProperty("opacity", propValue);
+ }
+
+ return true;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CURSOR
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyCursor = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ if (propValue == "pointer" &&
+ qx.sys.Client.getInstance().isMshtml()) {
+ this.setStyleProperty("cursor",
+ "hand");
+ } else {
+ this.setStyleProperty("cursor",
+ propValue);
+ }
+ }
+ else
+ {
+ this.removeStyleProperty("cursor");
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BACKGROUND IMAGE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyBackgroundImage = function(propValue, propOldValue, propData)
+{
+ return qx.util.Validation.isValidString(propValue) ?
+ this.setStyleProperty("backgroundImage",
+ "url(" +
+ qx.manager.object.AliasManager.getInstance().resolvePath(propValue) +
+ ")") :
+ this.removeStyleProperty("backgroundImage");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLIPPING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyClip = function(propValue, propOldValue, propData) {
+ return this._compileClipString();
+}
+
+qx.Proto._compileClipString = function()
+{
+ var vLeft = this.getClipLeft();
+ var vTop = this.getClipTop();
+ var vWidth = this.getClipWidth();
+ var vHeight = this.getClipHeight();
+
+ var vRight, vBottom;
+
+ if(vLeft == null)
+ {
+ vRight = (vWidth == null
+ ? "auto"
+ : vWidth + "px");
+ vLeft = "auto";
+ }
+ else
+ {
+ vRight = (vWidth == null
+ ? "auto"
+ : vLeft + vWidth + "px");
+ vLeft = vLeft + "px";
+ }
+
+ if(vTop == null)
+ {
+ vBottom = (vHeight == null
+ ? "auto"
+ : vHeight + "px");
+ vTop = "auto";
+ }
+ else
+ {
+ vBottom = (vHeight == null
+ ? "auto"
+ : vTop + vHeight + "px");
+ vTop = vTop + "px";
+ }
+
+ return this.setStyleProperty("clip",
+ ("rect(" +
+ vTop +
+ "," +
+ vRight +
+ "," +
+ vBottom +
+ "," +
+ vLeft +
+ ")"));
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OVERFLOW
+---------------------------------------------------------------------------
+*/
+
+/*
+ This will measure the typical native scrollbar size in the environment
+*/
+qx.ui.core.Widget.initOverflow = function()
+{
+ if (qx.ui.core.Widget.initOverflowDone) {
+ return;
+ }
+
+ var t = document.createElement("div");
+ var s = t.style;
+
+ s.height = s.width = "100px";
+ s.overflow = "scroll";
+
+ document.body.appendChild(t);
+
+ var c = qx.dom.Dimension.getScrollBarSizeRight(t);
+ if (c) {
+ qx.ui.core.Widget.SCROLLBAR_SIZE = c;
+ }
+
+ document.body.removeChild(t);
+
+ qx.ui.core.Widget.initOverflowDone = true;
+}
+
+if (qx.sys.Client.getInstance().isGecko())
+{
+ qx.Proto._modifyOverflow = function(propValue, propOldValue, propData)
+ {
+ var pv = propValue;
+ var pn = propData.name;
+
+ switch(pv)
+ {
+ case "hidden":
+ pv = "-moz-scrollbars-none";
+ break;
+
+ case "scrollX":
+ pv = "-moz-scrollbars-horizontal";
+ break;
+
+ case "scrollY":
+ pv = "-moz-scrollbars-vertical";
+ break;
+ }
+
+ return this._applyOverflow(pn, pv, propValue, propOldValue);
+ }
+}
+
+// Mshtml conforms here to CSS3 Spec. Eventually there will be multiple
+// browsers which support these new overflowX overflowY properties.
+else if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifyOverflow = function(propValue, propOldValue, propData)
+ {
+ var pv = propValue;
+ var pn = propData.name;
+
+ switch(pv)
+ {
+ case "scrollX":
+ pn = "overflowX";
+ pv = "scroll";
+ break;
+
+ case "scrollY":
+ pn = "overflowY";
+ pv = "scroll";
+ break;
+ }
+
+ // Clear up concurrenting rules
+ var a = [ "overflow",
+ "overflowX",
+ "overflowY" ];
+ for (var i=0; i<a.length; i++)
+ {
+ if (a[i]!=pn) {
+ this.removeStyleProperty(a[i]);
+ }
+ }
+
+ return this._applyOverflow(pn, pv, propValue, propOldValue);
+ }
+}
+
+// Opera/Khtml Mode...
+// hopefully somewhat of this is supported in the near future.
+
+// overflow-x and overflow-y are also not supported by Opera 9.0 Beta1
+// and also not if we switch to IE emulation mode
+else
+{
+ qx.Proto._modifyOverflow = function(propValue, propOldValue, propData)
+ {
+ var pv = propValue;
+ var pn = propData.name;
+
+ switch(pv)
+ {
+ case "scrollX":
+ case "scrollY":
+ pv = "scroll";
+ break;
+ }
+
+ return this._applyOverflow(pn, pv, propValue, propOldValue);
+ }
+}
+
+qx.Proto._applyOverflow = function(pn, pv, propValue, propOldValue)
+{
+ // Apply Style
+ this.setStyleProperty(pn, pv);
+
+ // Invalidate Frame
+ this._invalidateFrameWidth();
+ this._invalidateFrameHeight();
+
+ return true;
+}
+
+qx.Proto.getOverflowX = function()
+{
+ var vOverflow = this.getOverflow();
+ return vOverflow == "scrollY" ? "hidden" : vOverflow;
+}
+
+qx.Proto.getOverflowY = function()
+{
+ var vOverflow = this.getOverflow();
+ return vOverflow == "scrollX" ? "hidden" : vOverflow;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HIDE FOCUS
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifyHideFocus = function(propValue, propOldValue, propData)
+ {
+ this.setHtmlProperty(propData.name, propValue);
+ return true;
+ }
+}
+
+// Need no implementation for others then mshtml, because
+// all these browsers support css outlines and do not
+// have an attribute "hideFocus" as IE.
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COLORS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyBackgroundColor = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue)
+ {
+ this._applyBackgroundColor(propValue.getStyle());
+ propValue.add(this);
+ }
+ else
+ {
+ this._resetBackgroundColor();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyColor = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue)
+ {
+ this._applyColor(propValue.getStyle());
+ propValue.add(this);
+ }
+ else
+ {
+ this._resetColor();
+ }
+
+ return true;
+}
+
+qx.Proto._updateColors = function(vColor, vNewValue)
+{
+ if (this.getColor() == vColor) {
+ this._applyColor(vNewValue);
+ }
+
+ if (this.getBackgroundColor() == vColor) {
+ this._applyBackgroundColor(vNewValue);
+ }
+}
+
+qx.Proto._applyColor = function(vNewValue) {
+ this.setStyleProperty("color", vNewValue);
+}
+
+qx.Proto._applyBackgroundColor = function(vNewValue) {
+ this.setStyleProperty("backgroundColor", vNewValue);
+}
+
+qx.Proto._resetColor = function(vNewValue) {
+ this.removeStyleProperty("color");
+}
+
+qx.Proto._resetBackgroundColor = function() {
+ this.removeStyleProperty("backgroundColor");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BORDER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._cachedBorderTop = 0;
+qx.Proto._cachedBorderRight = 0;
+qx.Proto._cachedBorderBottom = 0;
+qx.Proto._cachedBorderLeft = 0;
+
+qx.Proto._modifyBorder = function(propValue, propOldValue, propData)
+{
+ var vOldTop = this._cachedBorderTop;
+ var vOldRight = this._cachedBorderRight;
+ var vOldBottom = this._cachedBorderBottom;
+ var vOldLeft = this._cachedBorderLeft;
+
+ if (propOldValue) {
+ propOldValue.removeListenerWidget(this);
+ }
+
+ if (propValue)
+ {
+ propValue.addListenerWidget(this);
+
+ this._cachedBorderTop = propValue.getTopWidth();
+ this._cachedBorderRight = propValue.getRightWidth();
+ this._cachedBorderBottom = propValue.getBottomWidth();
+ this._cachedBorderLeft = propValue.getLeftWidth();
+ }
+ else
+ {
+ this._cachedBorderTop = this._cachedBorderRight = this._cachedBorderBottom = this._cachedBorderLeft = 0;
+ }
+
+
+
+ // ----------------
+ // X-AXIS
+ // ----------------
+ if ((vOldLeft + vOldRight) != (this._cachedBorderLeft + this._cachedBorderRight)) {
+ this._invalidateFrameWidth();
+ }
+
+ this.addToQueue("borderX");
+
+
+
+ // ----------------
+ // Y-AXIS
+ // ----------------
+ if ((vOldTop + vOldBottom) != (this._cachedBorderTop + this._cachedBorderBottom)) {
+ this._invalidateFrameHeight();
+ }
+
+ this.addToQueue("borderY");
+
+
+
+
+
+ return true;
+}
+
+qx.Proto.getCachedBorderTop = function() {
+ return this._cachedBorderTop;
+}
+
+qx.Proto.getCachedBorderRight = function() {
+ return this._cachedBorderRight;
+}
+
+qx.Proto.getCachedBorderBottom = function() {
+ return this._cachedBorderBottom;
+}
+
+qx.Proto.getCachedBorderLeft = function() {
+ return this._cachedBorderLeft;
+}
+
+qx.Proto._updateBorder = function(vEdge)
+{
+ // Small hack, remove later: TODO
+ // ?? Anybody have an idea about this TODO?
+ var vBorder = this.getBorder();
+ var vEdgeUp = qx.lang.String.toFirstUp(vEdge);
+
+ var vNewValue = vBorder["get" + vEdgeUp + "Width"]();
+ var vCacheName = "_cachedBorder" + vEdgeUp;
+ var vWidthChanged = this[vCacheName] != vNewValue;
+
+ this[vCacheName] = vNewValue;
+
+ switch(vEdge)
+ {
+ case "left":
+ case "right":
+ if (vWidthChanged) {
+ this.addToJobQueue("borderWidthX");
+ }
+
+ this.addToJobQueue("borderX");
+ break;
+
+ case "top":
+ case "bottom":
+ if (vWidthChanged) {
+ this.addToJobQueue("borderWidthY");
+ }
+
+ this.addToJobQueue("borderY");
+ break;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PADDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyPaddingX = function(propValue, propOldValue, propData)
+{
+ this._invalidateFrameWidth();
+ return true;
+}
+
+qx.Proto._modifyPaddingY = function(propValue, propOldValue, propData)
+{
+ this._invalidateFrameHeight();
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLONE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._clonePropertyIgnoreList = "parent,element,visible";
+
+
+/*!
+Returns a cloned copy of the current instance of qx.ui.core.Widget.
+
+#param cloneRecursive[Boolean]: Should the widget cloned recursive (including all childs)?
+#param customPropertyList[Array]: Optional (reduced) list of properties to copy through
+*/
+
+// TODO: Needs modification to work with new codebase
+qx.Proto.clone = function(cloneRecursive, customPropertyList)
+{
+ var cloneInstance = new this.constructor;
+
+ var propertyName;
+ var propertyList = [];
+ var propertyIngoreList = this._clonePropertyIgnoreList.split(",");
+
+ // Build new filtered property list
+ var sourcePropertyList = qx.util.Validation.isValid(customPropertyList) ? customPropertyList : this._properties.split(",");
+ var sourcePropertyListLength = sourcePropertyList.length-1;
+ do {
+ propertyName = sourcePropertyList[sourcePropertyListLength];
+ if (!qx.lang.Array.contains(propertyIngoreList, propertyName)) {
+ propertyList.push(propertyName);
+ }
+ }
+ while(sourcePropertyListLength--);
+
+ // Apply properties to new clone instance
+ propertyListLength = propertyList.length-1;
+ do {
+ propertyName = qx.lang.String.toFirstUp(propertyList[propertyListLength]);
+ cloneInstance["set" + propertyName](this["get" + propertyName]());
+ }
+ while(propertyListLength--);
+
+ // post apply parent info
+ if (qx.lang.Array.contains(sourcePropertyList, "parent"))
+ {
+ var myParent = this.getParent();
+ if (myParent) {
+ cloneInstance.setParent(myParent);
+ }
+ }
+
+ // clone recursion
+ if (cloneRecursive) {
+ this._cloneRecursive(cloneInstance);
+ }
+
+ return cloneInstance;
+}
+
+qx.Proto._cloneRecursive = function(cloneInstance) {}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMMAND INTERFACE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.execute = function()
+{
+ var vCommand = this.getCommand();
+ if (vCommand) {
+ vCommand.execute(this);
+ }
+
+ this.createDispatchEvent("execute");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ NODE ALIASES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._visualPropertyCheck = function()
+{
+ if (!this.isCreated()) {
+ throw new Error("Element must be created previously!");
+ }
+}
+
+qx.Proto.setScrollLeft = function(nScrollLeft)
+{
+ this._visualPropertyCheck();
+ this._getTargetNode().scrollLeft = nScrollLeft;
+}
+
+qx.Proto.setScrollTop = function(nScrollTop)
+{
+ this._visualPropertyCheck();
+ this._getTargetNode().scrollTop = nScrollTop;
+}
+
+qx.Proto.getOffsetLeft = function()
+{
+ this._visualPropertyCheck();
+ return qx.dom.Offset.getLeft(this.getElement());
+}
+
+qx.Proto.getOffsetTop = function()
+{
+ this._visualPropertyCheck();
+ return qx.dom.Offset.getTop(this.getElement());
+}
+
+qx.Proto.getScrollLeft = function()
+{
+ this._visualPropertyCheck();
+ return this._getTargetNode().scrollLeft;
+}
+
+qx.Proto.getScrollTop = function()
+{
+ this._visualPropertyCheck();
+ return this._getTargetNode().scrollTop;
+}
+
+qx.Proto.getClientWidth = function()
+{
+ this._visualPropertyCheck();
+ return this._getTargetNode().clientWidth;
+}
+
+qx.Proto.getClientHeight = function()
+{
+ this._visualPropertyCheck();
+ return this._getTargetNode().clientHeight;
+}
+
+qx.Proto.getOffsetWidth = function()
+{
+ this._visualPropertyCheck();
+ return this.getElement().offsetWidth;
+}
+
+qx.Proto.getOffsetHeight = function()
+{
+ this._visualPropertyCheck();
+ return this.getElement().offsetHeight;
+}
+
+qx.Proto.getScrollWidth = function()
+{
+ this._visualPropertyCheck();
+ return this.getElement().scrollWidth;
+}
+
+qx.Proto.getScrollHeight = function()
+{
+ this._visualPropertyCheck();
+ return this.getElement().scrollHeight;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SCROLL INTO VIEW
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.scrollIntoView = function(vAlignTopLeft)
+{
+ this.scrollIntoViewX(vAlignTopLeft);
+ this.scrollIntoViewY(vAlignTopLeft);
+}
+
+qx.Proto.scrollIntoViewX = function(vAlignLeft)
+{
+ if (!this._isCreated || !this._isDisplayable) {
+ return false;
+ }
+
+ return qx.dom.ScrollIntoView.scrollX(this.getElement(), vAlignLeft);
+}
+
+qx.Proto.scrollIntoViewY = function(vAlignTop)
+{
+ if (!this._isCreated || !this._isDisplayable) {
+ return false;
+ }
+
+ return qx.dom.ScrollIntoView.scrollY(this.getElement(), vAlignTop);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DRAG AND DROP SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.supportsDrop = function(vDragCache) {
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FADING PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The amount of steps for the fade.
+ */
+qx.OO.addProperty({ name : 'fadeSteps', type : "number", allowNull : false, defaultValue : 10});
+/*!
+ The duration for the fade.
+ */
+qx.OO.addProperty({ name : 'fadeTime', type : "number", allowNull : false, defaultValue : 400});
+/*!
+ The time between the fade steps.
+ */
+qx.OO.addProperty({ name : 'fadeInterval', type : "number", allowNull : false, defaultValue : 40});
+/*!
+ The current state of a fade in progress.
+ */
+qx.OO.addProperty({ name : 'fadeCounter', type : "number", allowNull : false, defaultValue : 0});
+/*!
+ The amount of oppacity changed on each fade step.
+ */
+qx.OO.addProperty({ name : 'fadeUnit', type : "number", allowNull : false, defaultValue : 10});
+/*!
+ The maximum opacity for a fadeIn.
+ */
+qx.OO.addProperty({ name : 'fadeMax', type : "number", allowNull : false, defaultValue : 100});
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FADING SUPPORT
+---------------------------------------------------------------------------
+*/
+qx.ui.core.Widget.FADE_IN = 'FADE_IN';
+qx.ui.core.Widget.FADE_OUT = 'FADE_OUT';
+qx.ui.core.Widget.FADE_FINISHED = 'FADE_FINISHED';
+
+
+qx.Proto.fadeIn = function(vSteps, vTime) {
+ if(vSteps) this.setFadeSteps(vSteps);
+ if(vTime) this.setFadeTime(vTime);
+ this._fadeMode = qx.ui.core.Widget.FADE_IN;
+ var timer = this.getFadeTimer();
+ timer.addEventListener("interval", this._onInterval, this);
+ timer.start();
+}
+
+qx.Proto.fadeOut = function(vSteps, vTime) {
+ if(vSteps) this.setFadeSteps(vSteps);
+ if(vTime) this.setFadeTime(vTime);
+ this._fadeMode = qx.ui.core.Widget.FADE_OUT;
+ var timer = this.getFadeTimer();
+ timer.addEventListener("interval", this._onInterval, this);
+ timer.start();
+};
+
+qx.Proto.getFadeTimer = function() {
+ if(this._fadeTimer){
+ this._fadeTimer.setInterval(this.getFadeInterval());
+ } else {
+ this._fadeTimer = new qx.client.Timer(this.getFadeInterval());
+ };
+ return this._fadeTimer;
+};
+
+qx.Proto.resetFader = function() {
+ this.setFadeCounter(0);
+ if(this.getFadeTimer()) {
+ this._fadeTimer.stop();
+ this._fadeTimer.dispose();
+ };
+ this._fadeTimer.dispose();
+ this._fadeTimer = null;
+};
+
+qx.Proto._onInterval = function(e) {
+ this.getFadeTimer().stop();
+ var counter = this.getFadeCounter();
+ switch (this._fadeMode){
+ case qx.ui.core.Widget.FADE_IN:
+ this.setFadeCounter(++counter);
+ if(counter <= this.getFadeSteps()){
+ this.setOpacity(this._computeFadeOpacity());
+ this.getFadeTimer().restart();
+ } else if(this.hasEventListeners(qx.ui.core.Widget.FADE_FINISHED)) {
+ this.createDispatchDataEvent(qx.ui.core.Widget.FADE_FINISHED, qx.ui.core.Widget.FADE_IN);
+ };
+ break;
+
+ case qx.ui.core.Widget.FADE_OUT:
+ this.setFadeCounter(--counter);
+ if(counter >= 0){
+ this.setOpacity(this._computeFadeOpacity());
+ this.getFadeTimer().restart();
+ } else if(this.hasEventListeners(qx.ui.core.Widget.FADE_FINISHED)) {
+ this.createDispatchDataEvent(qx.ui.core.Widget.FADE_FINISHED, qx.ui.core.Widget.FADE_OUT);
+ };
+ break;
+ };
+ qx.ui.core.Widget.flushGlobalQueues();
+};
+
+qx.Proto._modifyFadeSteps = function(propValue, propOldValue, propData) {
+ if(propValue < 1) return;
+ this.setFadeInterval(parseInt(this.getFadeTime() / propValue));
+ this.setFadeUnit(Math.round(this.getFadeMax()/propValue));
+ return true;
+};
+
+qx.Proto._modifyFadeTime = function(propValue, propOldValue, propData) {
+ if(propValue < 1) return;
+ this.setFadeInterval(parseInt(propValue / this.getFadeSteps()));
+ return true;
+};
+
+qx.Proto._modifyFadeUnit = function(propValue, propOldValue, propData) {
+ this.setFadeSteps(Math.round(this.getFadeMax()/propValue));
+ return true;
+};
+
+qx.Proto._modifyFadeMax = function(propValue, propOldValue, propData) {
+ this.setFadeUnit(Math.round(propValue / this.getFadeSteps()));
+ return true;
+};
+
+qx.Proto._computeFadeOpacity = function() {
+ var op = this.getFadeUnit() * this.getFadeCounter() / 100;
+ return(op);
+};
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ var vElement = this.getElement();
+
+ if (vElement)
+ {
+ this._removeInlineEvents(vElement);
+
+ delete this._isCreated;
+
+ vElement.qx_Widget = null;
+
+ this._element = null;
+ this._style = null;
+ }
+
+ this._inlineEvents = null;
+ this._element = null;
+ this._style = null;
+ this._borderElement = null;
+ this._borderStyle = null;
+ this._oldParent = null;
+
+ // should be enough to remove the hashTables
+ delete this._styleProperties;
+ delete this._htmlProperties;
+ delete this._htmlAttributes;
+ delete this._states;
+
+ // remove queue content
+ for (var i in this._jobQueue) {
+ delete this._jobQueue[i];
+ }
+ delete this._jobQueue;
+
+ for (var i in this._layoutChanges) {
+ delete this._layoutChanges[i];
+ }
+ delete this._layoutChanges;
+
+ // dispose the fader
+ if(this._fadeTimer){
+ this._fadeTimer.dispose();
+ this._fadeTimer = null;
+ }
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Flash.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Flash.js
new file mode 100644
index 0000000000..30f32319f2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Flash.js
@@ -0,0 +1,468 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/*!
+ Original non qooxdoo Version by Geoff Stearns
+ Flash detection and embed - http://blog.deconcept.com/flashobject/
+ FlashObject is (c) 2005 Geoff Stearns and is released under the MIT License
+ http://www.opensource.org/licenses/mit-license.php
+
+ Modified for qooxdoo by Sebastian Werner
+ Based on version 1.2.3
+ Relicensed under LGPL in assent of Geoff Stearns
+*/
+
+qx.OO.defineClass("qx.ui.embed.Flash", qx.ui.basic.Terminator,
+function(vSource, vVersion)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ // Use background handling of qx.ui.core.Widget instead
+ this._params = {};
+ this._variables = {};
+
+ if(qx.util.Validation.isValidString(vSource)) {
+ this.setSource(vSource);
+ }
+
+ this.setVersion(qx.util.Validation.isValidString(vVersion) ? vVersion : qx.ui.embed.Flash.MINREQUIRED);
+});
+
+qx.OO.addProperty({ name : "source", type : "string" });
+qx.OO.addProperty({ name : "version" });
+
+qx.OO.addProperty({ name : "enableExpressInstall", type : "boolean", defaultValue : false });
+qx.OO.addProperty({ name : "enableDetection", type : "boolean", defaultValue : true });
+qx.OO.addProperty({ name : "redirectUrl", type : "string" });
+
+qx.OO.addProperty({ name : "quality", type : "string", impl : "param", defaultValue : "high", possibleValues : [ "low", "autolow", "autohigh", "medium", "high", "best" ] });
+qx.OO.addProperty({ name : "scale", type : "string", impl : "param", defaultValue : "showall", possibleValues : [ "showall", "noborder", "excactfit", "noscale" ] });
+qx.OO.addProperty({ name : "wmode", type : "string", impl : "param", defaultValue : "", possibleValues : [ "window", "opaque", "transparent" ] });
+qx.OO.addProperty({ name : "play", type : "boolean", impl : "param", defaultValue : true });
+qx.OO.addProperty({ name : "loop", type : "boolean", impl : "param", defaultValue : true });
+qx.OO.addProperty({ name : "menu", type : "boolean", impl : "param", defaultValue : true });
+
+qx.ui.embed.Flash.EXPRESSINSTALL = [6,0,65];
+qx.ui.embed.Flash.MINREQUIRED = "1";
+qx.ui.embed.Flash.PLAYERVERSION = null;
+qx.ui.embed.Flash.PLUGINKEY = "Shockwave Flash";
+qx.ui.embed.Flash.ACTIVEXKEY = "ShockwaveFlash.ShockwaveFlash";
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PLAYER VERSION CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.ui.embed.Flash.getPlayerVersion = function()
+{
+ if (qx.ui.embed.Flash.PLAYERVERSION != null) {
+ return qx.ui.embed.Flash.PLAYERVERSION;
+ }
+
+ var vPlayerVersion = new qx.type.Version(0,0,0);
+
+ if(navigator.plugins && navigator.mimeTypes.length)
+ {
+ var x = navigator.plugins[qx.ui.embed.Flash.PLUGINKEY];
+
+ if(x && x.description) {
+ vPlayerVersion = new qx.type.Version(x.description.replace(/([a-z]|[A-Z]|\s)+/, '').replace(/(\s+r|\s+b[0-9]+)/, '.'));
+ }
+ }
+ else if (window.ActiveXObject)
+ {
+ try {
+ var axo = new ActiveXObject(qx.ui.embed.Flash.ACTIVEXKEY);
+ vPlayerVersion = new qx.type.Version(axo.GetVariable("$version").split(" ")[1].split(","));
+ }
+ catch (e) {}
+ }
+
+ return qx.ui.embed.Flash.PLAYERVERSION = vPlayerVersion;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BASICS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._version = null;
+qx.Proto._source = "";
+
+qx.Proto._applyElementData = function(el)
+{
+ qx.ui.basic.Terminator.prototype._applyElementData.call(this, el);
+
+ // Check for ExpressInstall
+ this._expressInstall = false;
+
+ if (this.getEnableExpressInstall())
+ {
+ // check to see if we need to do an express install
+ var expressInstallReqVer = new qx.type.Version(qx.ui.embed.Flash.EXPRESSINSTALL);
+ var installedVer = qx.ui.embed.Flash.getPlayerVersion();
+
+ if (installedVer.versionIsValid(expressInstallReqVer) && !installedVer.versionIsValid(this._version)) {
+ this._expressInstall = true;
+ }
+ }
+
+ // this.debug("ExpressInstall Enabled: " + this._expressInstall);
+
+ // Apply HTML
+ if(!this.getEnableDetection() || this._expressInstall || qx.ui.embed.Flash.getPlayerVersion().versionIsValid(this._version))
+ {
+ el.innerHTML = this.generateHTML();
+ }
+ else
+ {
+ var redir = this.getRedirectUrl();
+
+ if(redir != "") {
+ document.location.replace(redir);
+ }
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifySource = function(propValue, propOldValue, propName)
+{
+ this._source = qx.util.Validation.isValidString(propValue) ? qx.manager.object.AliasManager.getInstance().resolvePath(propValue) : "";
+ return true;
+}
+
+qx.Proto._modifyVersion = function(propValue, propOldValue, propData)
+{
+ if (this._version)
+ {
+ this._version.dispose();
+ this._version = null;
+ }
+
+ if (qx.util.Validation.isValidString(propValue)) {
+ this._version = new qx.type.Version(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyParam = function(propValue, propOldValue, propData)
+{
+ this.setParam(propData.name, propValue.toString());
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OVERWRITE BACKGROUND COLOR HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyBackgroundColor = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue)
+ {
+ this._applyBackgroundColor(propValue.getHex());
+ propValue.add(this);
+ }
+ else
+ {
+ this._resetBackgroundColor();
+ }
+
+ return true;
+}
+
+qx.Proto._applyBackgroundColor = function(vNewValue) {
+ this.setParam("bgcolor", vNewValue);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PARAMS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setParam = function(name, value){
+ this._params[name] = value;
+}
+
+qx.Proto.getParam = function(name){
+ return this._params[name];
+}
+
+qx.Proto.getParams = function() {
+ return this._params;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ VARIABLES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setVariable = function(name, value){
+ this._variables[name] = value;
+}
+
+qx.Proto.getVariable = function(name){
+ return this._variables[name];
+}
+
+qx.Proto.getVariables = function(){
+ return this._variables;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HTML UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.generateParamTags = function()
+{
+ var vParams = this.getParams();
+ var vParamTags = [];
+
+ for (var vKey in vParams)
+ {
+ vParamTags.push("<param name='");
+ vParamTags.push(vKey);
+ vParamTags.push("' value='");
+ vParamTags.push(vParams[vKey]);
+ vParamTags.push("'/>");
+ }
+
+ return vParamTags.join("");
+}
+
+qx.Proto.getVariablePairs = function()
+{
+ var variables = this.getVariables();
+ var variablePairs = [];
+
+ for (var key in variables) {
+ variablePairs.push(key + "=" + variables[key]);
+ }
+
+ return variablePairs.join("&");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HTML GENERATOR
+---------------------------------------------------------------------------
+*/
+
+// Netscape Plugin Architecture
+if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length)
+{
+ qx.Proto.generateHTML = function()
+ {
+ var html = [];
+
+ // Express Install Handling
+ if (this._expressInstall)
+ {
+ document.title = document.title.slice(0, 47) + ' - Flash Player Installation';
+
+ this.addVariable('MMredirectURL', escape(window.location));
+ this.addVariable('MMdoctitle', document.title);
+ this.addVariable('MMplayerType', 'PlugIn');
+ }
+
+ html.push("<embed type='application/x-shockwave-flash' width='100%' height='100%' src='");
+ html.push(this._source);
+ html.push("'");
+
+ var params = this.getParams();
+
+ for (var key in params)
+ {
+ html.push(" ");
+ html.push(key);
+ html.push("=");
+ html.push("'");
+ html.push(params[key]);
+ html.push("'");
+ }
+
+ var pairs = this.getVariablePairs();
+
+ if (pairs.length > 0)
+ {
+ html.push(" ");
+ html.push("flashvars");
+ html.push("=");
+ html.push("'");
+ html.push(pairs);
+ html.push("'");
+ }
+
+ html.push("></embed>");
+
+ return html.join("");
+ }
+}
+
+// Internet Explorer ActiveX Architecture
+else
+{
+ qx.Proto.generateHTML = function()
+ {
+ var html = [];
+
+ // Express Install Handling
+ if (this._expressInstall)
+ {
+ document.title = document.title.slice(0, 47) + ' - Flash Player Installation';
+
+ this.addVariable("MMredirectURL", escape(window.location));
+ this.addVariable("MMdoctitle", document.title);
+ this.addVariable("MMplayerType", "ActiveX");
+ }
+
+ html.push("<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='100%' height='100%'>");
+ html.push("<param name='movie' value='");
+ html.push(this._source);
+ html.push("'/>");
+
+ var tags = this.generateParamTags();
+
+ if(tags.length > 0) {
+ html.push(tags);
+ }
+
+ var pairs = this.getVariablePairs();
+
+ if(pairs.length > 0)
+ {
+ html.push("<param name='flashvars' value='");
+ html.push(pairs);
+ html.push("'/>");
+ }
+
+ html.push("</object>");
+
+ return html.join("");
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS TO GIVE THE LAYOUTERS INFORMATIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._isWidthEssential = qx.util.Return.returnTrue;
+qx.Proto._isHeightEssential = qx.util.Return.returnTrue;
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computePreferredInnerWidth = qx.util.Return.returnZero;
+qx.Proto._computePreferredInnerHeight = qx.util.Return.returnZero;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ delete this._source;
+ delete this._params;
+ delete this._variables;
+
+ if (this._version)
+ {
+ this._version.dispose();
+ this._version = null;
+ }
+
+ qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Gallery.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Gallery.js
new file mode 100644
index 0000000000..11a40e9046
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Gallery.js
@@ -0,0 +1,556 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * @event beforeToolTipAppear {qx.event.type.Event}
+ * @event loadComplete {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.embed.Gallery", qx.ui.basic.Terminator,
+function(vGalleryList)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ this._blank = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ this._list = vGalleryList;
+ this._listSize = vGalleryList.length;
+ this._processedImages = 0;
+
+ this.setOverflow("auto");
+
+ this.setHtmlProperty("className", "qx_ui_embed_Gallery");
+
+ this._manager = new qx.manager.selection.DomSelectionManager(this);
+
+ this._manager.setMultiColumnSupport(true);
+
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("mousemove", this._onmousemove);
+
+ this.addEventListener("click", this._onclick);
+ this.addEventListener("dblclick", this._ondblclick);
+
+ this.addEventListener("keypress", this._onkeypress);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "thumbMaxWidth", type : "number", defaultValue : 100 });
+qx.OO.addProperty({ name : "thumbMaxHeight", type : "number", defaultValue : 100 });
+qx.OO.addProperty({ name : "decorHeight", type : "number", defaultValue : 40 });
+qx.OO.addProperty({ name : "showTitle", type : "boolean", defaultValue : true });
+qx.OO.addProperty({ name : "showComment", type : "boolean", defaultValue : true });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ELEMENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyElementData = function() {
+ this.getElement().appendChild(this.createView());
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+qx.Proto.getList = function() {
+ return this._list;
+}
+
+qx.Proto.update = function(vGalleryList)
+{
+ this._manager.deselectAll();
+
+ this._list = vGalleryList;
+
+ var el = this.getElement();
+ el.replaceChild(this.createView(), el.firstChild);
+}
+
+qx.Proto.removeAll = function()
+{
+ this._manager.deselectAll();
+ this.getElement().innerHTML = "";
+}
+
+qx.Proto.updateImageById = function(vId, vSrc, vWidth, vHeight) {
+ this.updateImageSrcById(vId, vSrc);
+ this.updateImageDimensionsById(vId, vWidth, vHeight);
+}
+
+qx.Proto.updateImageDimensionsById = function(vId, vWidth, vHeight) {
+ this.updateImageDimensionsByPosition(this.getPositionById(vId), vWidth, vHeight);
+}
+
+qx.Proto.updateImageDimensionsByPosition = function(vPos, vWidth, vHeight) {
+ // TBD: compare dimensions with max. thumb size and scale proportionally if necessary
+ if (vPos == -1) {
+ throw new Error("No valid Position: " + vPos);
+ }
+
+ var cnode = this.getNodeByPosition(vPos).getElementsByTagName("img")[0];
+
+ cnode.width = vWidth;
+ cnode.height = vHeight;
+
+ cnode.style.marginLeft = cnode.style.marginRight = Math.floor((this.getThumbMaxWidth()-vWidth)/2) + "px";
+ cnode.style.marginTop = cnode.style.marginBottom = Math.floor((this.getThumbMaxHeight()-vHeight)/2) + "px";
+
+ this._list[vPos].thumbWidth = vWidth;
+ this._list[vPos].thumbHeight = vHeight;
+}
+
+qx.Proto.updateImageSrcById = function(vId, vSrc) {
+ this.updateImageSrcByPosition(this.getPositionById(vId), vSrc);
+}
+
+qx.Proto.updateImageSrcByPosition = function(vPos, vSrc)
+{
+ if (vPos == -1) {
+ throw new Error("No valid Position: " + vPos);
+ }
+
+ var vNode = this.getNodeByPosition(vPos);
+
+ vNode.getElementsByTagName("img")[0].src = vSrc;
+ this._list[vPos].src = vSrc;
+}
+
+qx.Proto.deleteById = function(vId) {
+ this.deleteByPosition(this.getPositionById(vId));
+}
+
+qx.Proto.deleteByPosition = function(vPos)
+{
+ this._manager.deselectAll();
+
+ if (vPos == -1) {
+ throw new Error("No valid Position: " + vPos);
+ }
+
+ var vNode = this.getNodeByPosition(vPos);
+
+ if (vNode) {
+ vNode.parentNode.removeChild(vNode);
+ }
+
+ this._list.splice(vPos, 1);
+}
+
+qx.Proto.getPositionById = function(vId)
+{
+ for (var i=0, a=this._list, l=a.length; i<l; i++) {
+ if (a[i].id == vId) {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+qx.Proto.getEntryById = function(vId) {
+ return this.getEntryByPosition(this.getPositionById(vId));
+}
+
+qx.Proto.getNodeById = function(vId) {
+ return this.getNodeByPosition(this.getPositionById(vId));
+}
+
+qx.Proto.getEntryByPosition = function(vPosition) {
+ return vPosition == -1 ? null : this._list[vPosition];
+}
+
+qx.Proto.getNodeByPosition = function(vPosition) {
+ return vPosition == -1 ? null : this._frame.childNodes[vPosition];
+}
+
+qx.Proto.getEntryByNode = function(vNode) {
+ return this.getEntryById(vNode.id);
+}
+
+qx.Proto.addFromPartialList = function(vPartialList)
+{
+ this.concat(vPartialList);
+
+ for (var i=0, a=vPartialList, l=a.length; i<l; i++) {
+ this._frame.appendChild(this.createCell(a[i], i));
+ }
+}
+
+qx.Proto.addFromUpdatedList = function(vNewList)
+{
+ for (var a=vNewList, l=a.length, i=this._list.length; i<l; i++) {
+ this._frame.appendChild(this.createCell(a[i], i));
+ }
+
+ this._list = vNewList;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleMouseDown(vItem, e);
+ }
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleMouseUp(vItem, e);
+ }
+}
+
+qx.Proto._onmousemove = function(e)
+{
+ if (qx.OO.isAvailable("qx.manager.object.ToolTipManager")) {
+ return;
+ }
+
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem == this._lastItem) {
+ return;
+ }
+
+ if (this._lastItem)
+ {
+ var vEventObject = new qx.event.type.MouseEvent("mouseout", e, false, this._lastItem);
+ qx.manager.object.ToolTipManager.getInstance().handleMouseOut(vEventObject);
+ vEventObject.dispose();
+ }
+
+ if (vItem)
+ {
+ if (this.hasEventListeners("beforeToolTipAppear")) {
+ this.dispatchEvent(new qx.event.type.DataEvent("beforeToolTipAppear", vItem), true);
+ }
+
+ if (!this.getToolTip()) {
+ return;
+ }
+
+ var vEventObject = new qx.event.type.MouseEvent("mouseout", e, false, vItem);
+ qx.manager.object.ToolTipManager.getInstance().handleMouseOver(vEventObject);
+ vEventObject.dispose();
+
+ this.setToolTip(null);
+ }
+
+ this._lastItem = vItem;
+}
+
+qx.Proto._onclick = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleClick(vItem, e);
+ }
+}
+
+qx.Proto._ondblclick = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleDblClick(vItem, e);
+ }
+}
+
+qx.Proto._onkeypress = function(e) {
+ this._manager.handleKeyPress(e);
+}
+
+qx.Proto.getListItemTarget = function(dt)
+{
+ while(dt.className.indexOf("galleryCell") == -1 && dt.tagName.toLowerCase() != "body") {
+ dt = dt.parentNode;
+ }
+
+ if (dt.tagName.toLowerCase() == "body") {
+ return null;
+ }
+
+ return dt;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SCROLL INTO VIEW
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.scrollItemIntoView = function(vItem)
+{
+ this.scrollItemIntoViewX(vItem);
+ this.scrollItemIntoViewY(vItem);
+}
+
+qx.Proto.scrollItemIntoViewX = function(vItem) {
+ qx.dom.ScrollIntoView.scrollX(vItem);
+}
+
+qx.Proto.scrollItemIntoViewY = function(vItem) {
+ qx.dom.ScrollIntoView.scrollY(vItem);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER REQUIREMENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItems = function() {
+ return this._frame.childNodes;
+}
+
+qx.Proto.getFirstChild = function() {
+ return this._frame.childNodes[0];
+}
+
+qx.Proto.getLastChild = function() {
+ return this._frame.childNodes[this._frame.childNodes.length-1];
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTERNALS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.createView = function()
+{
+ var s = (new Date).valueOf();
+
+ if (!this._protoCell) {
+ this.createProtoCell();
+ }
+
+ this._frame = document.createElement("div");
+ this._frame.className = "galleryFrame clearfix";
+
+ for (var i=0, a=this._list, l=a.length; i<l; i++) {
+ this._frame.appendChild(this.createCell(a[i], i));
+ }
+
+ return this._frame;
+}
+
+qx.Proto.createCell = function(d, i)
+{
+ var cframe = this._protoCell.cloneNode(true);
+
+ cframe.id = d.id;
+ cframe.pos = i;
+
+ if (this.getShowTitle())
+ {
+ cnode = cframe.childNodes[0];
+ cnode.firstChild.nodeValue = d.title;
+ }
+
+ var cnode = cframe.childNodes[this.getShowTitle() ? 1 : 0];
+ this.createImageCell(cnode, d);
+
+ if (this.getShowComment())
+ {
+ cnode = cframe.childNodes[this.getShowTitle() ? 2 : 1];
+ cnode.firstChild.nodeValue = d.comment;
+ }
+
+ return cframe;
+}
+
+qx.Proto._mshtml = qx.sys.Client.getInstance().isMshtml();
+
+qx.Proto.createImageCell = function(inode, d)
+{
+ if (this.hasEventListeners("loadComplete"))
+ {
+ inode.onload = qx.ui.embed.Gallery.imageOnLoad;
+ inode.onerror = qx.ui.embed.Gallery.imageOnError;
+ inode.gallery = this;
+ }
+
+ if (this._mshtml) {
+ inode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + d.src + "',sizingMethod='scale')";
+ } else {
+ inode.src = d.src;
+ }
+
+ inode.width = d.thumbWidth + 2;
+ inode.height = d.thumbHeight + 2;
+ inode.style.marginLeft = inode.style.marginRight = Math.floor((this.getThumbMaxWidth()-d.thumbWidth)/2) + "px";
+ inode.style.marginTop = inode.style.marginBottom = Math.floor((this.getThumbMaxHeight()-d.thumbHeight)/2) + "px";
+}
+
+qx.Proto.imageOnComplete = function()
+{
+ this._processedImages++;
+
+ if(this._processedImages == this._listSize) {
+ this.dispatchEvent(new qx.event.type.Event("loadComplete"), true);
+ }
+}
+
+qx.ui.embed.Gallery.imageOnLoad = function()
+{
+ this.gallery.imageOnComplete();
+ this.gallery = null;
+ this.onload = null;
+ this.onerror = null;
+}
+
+qx.ui.embed.Gallery.imageOnError = function()
+{
+ this.gallery.imageOnComplete();
+ this.gallery = null;
+ this.onload = null;
+ this.onerror = null;
+}
+
+qx.Proto.createProtoCell = function()
+{
+ var frame = this._protoCell = document.createElement("div");
+ frame.className = "galleryCell";
+ frame.unselectable = "on";
+ frame.style.width = (this.getThumbMaxWidth() + 2) + "px";
+ frame.style.height = (this.getThumbMaxHeight() + this.getDecorHeight() + 2) + "px";
+
+ if (this.getShowTitle())
+ {
+ var title = document.createElement("div");
+ title.className = "galleryTitle";
+ title.unselectable = "on";
+ var ttext = document.createTextNode("-");
+ title.appendChild(ttext);
+
+ frame.appendChild(title);
+ }
+
+ var image = new Image();
+ image.src = this._blank;
+ frame.appendChild(image);
+
+ if (this.getShowComment())
+ {
+ var comment = document.createElement("div");
+ comment.className = "galleryComment";
+ comment.unselectable = "on";
+ var ctext = document.createTextNode("-");
+ comment.appendChild(ctext);
+
+ frame.appendChild(comment);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this._list = null;
+ this._protoCell = null;
+ this._frame = null;
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("mousemove", this._onmousemove);
+
+ this.removeEventListener("click", this._onclick);
+ this.removeEventListener("dblclick", this._ondblclick);
+
+ this.removeEventListener("keypress", this._onkeypress);
+
+ return qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/GalleryList.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/GalleryList.js
new file mode 100644
index 0000000000..c95b014f6d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/GalleryList.js
@@ -0,0 +1,400 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * @event loadComplete {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.embed.GalleryList", qx.ui.basic.Terminator,
+function(galleryList)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ this._blank = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ this._list = galleryList;
+ this._listSize = galleryList.length;
+ this._processedImages = 0;
+
+ this.setOverflow("auto");
+
+ this.setHtmlProperty("className", "qx_ui_embed_GalleryList");
+
+ this._manager = new qx.manager.selection.DomSelectionManager(this);
+
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("click", this._onclick);
+ this.addEventListener("dblclick", this._ondblclick);
+ this.addEventListener("keypress", this._onkeypress);
+});
+
+qx.OO.addProperty({ name : "thumbMaxWidth", type : "number", defaultValue : 60 });
+qx.OO.addProperty({ name : "thumbMaxHeight", type : "number", defaultValue : 60 });
+qx.OO.addProperty({ name : "decorHeight", type : "number", defaultValue : 40 });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ELEMENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyElementData = function() {
+ this.getElement().appendChild(this.createView());
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+
+qx.Proto.update = function(vGalleryList)
+{
+ this._manager.deselectAll();
+
+ this._list = vGalleryList;
+
+ var el = this.getElement();
+ el.replaceChild(this.createView(), el.firstChild);
+}
+
+
+qx.Proto.removeAll = function()
+{
+ this._manager.deselectAll();
+ this.getElement().innerHTML = "";
+}
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleMouseDown(vItem, e);
+ }
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleMouseUp(vItem, e);
+ }
+}
+
+qx.Proto._onclick = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleClick(vItem, e);
+ }
+}
+
+qx.Proto._ondblclick = function(e)
+{
+ var vItem = this.getListItemTarget(e.getDomTarget());
+
+ if (vItem) {
+ this._manager.handleDblClick(vItem, e);
+ }
+}
+
+qx.Proto._onkeypress = function(e) {
+ this._manager.handleKeyPress(e);
+}
+
+qx.Proto.getListItemTarget = function(dt)
+{
+ while(dt.className.indexOf("galleryCell") == -1 && dt.tagName.toLowerCase() != "body") {
+ dt = dt.parentNode;
+ }
+
+ if (dt.tagName.toLowerCase() == "body") {
+ return null;
+ }
+
+ return dt;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SCROLL INTO VIEW
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.scrollItemIntoView = function(vItem)
+{
+ this.scrollItemIntoViewX(vItem);
+ this.scrollItemIntoViewY(vItem);
+}
+
+qx.Proto.scrollItemIntoViewX = function(vItem) {
+ qx.dom.ScrollIntoView.scrollX(vItem);
+}
+
+qx.Proto.scrollItemIntoViewY = function(vItem) {
+ qx.dom.ScrollIntoView.scrollY(vItem);
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SELECTION MANAGER API
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getItems = function() {
+ return this._frame.childNodes;
+}
+
+qx.Proto.getFirstChild = function() {
+ return this._frame.childNodes[0];
+}
+
+qx.Proto.getLastChild = function() {
+ return this._frame.childNodes[this._frame.childNodes.length-1];
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CREATE VIEW
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.createView = function()
+{
+ var s = (new Date).valueOf();
+
+ var protoCell = this.createProtoCell(this.getThumbMaxHeight());
+ var frame = this._frame = document.createElement("div");
+
+ this._frame.className = "galleryFrame clearfix";
+
+ var cframe, cnode;
+
+ for (var i=0, a=this._list, l=a.length, d; i<l; i++)
+ {
+ d = a[i];
+
+ cframe = protoCell.cloneNode(true);
+
+ cframe.id = d.id;
+ cframe.pos = i;
+
+ cnode = cframe.childNodes[0];
+ cnode.firstChild.nodeValue = d.number;
+
+ cnode = cframe.childNodes[1].firstChild;
+ this.createImageCell(cnode, d);
+
+ cnode = cframe.childNodes[2].firstChild;
+ cnode.firstChild.nodeValue = d.title;
+
+ cnode = cframe.childNodes[2].lastChild;
+ cnode.firstChild.nodeValue = d.comment;
+
+ frame.appendChild(cframe);
+ }
+
+ return frame;
+}
+
+qx.Proto._mshtml = qx.sys.Client.getInstance().isMshtml();
+
+qx.Proto.createImageCell = function(inode, d)
+{
+ if (this.hasEventListeners("loadComplete")) {
+ inode.onload = qx.ui.embed.GalleryList.imageOnLoad;
+ inode.onerror = qx.ui.embed.GalleryList.imageOnError;
+ inode.gallery = this;
+ }
+
+ inode.width = d.thumbWidth;
+ inode.height = d.thumbHeight;
+
+ if (this._mshtml) {
+ inode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + d.src + "',sizingMethod='scale')";
+ } else {
+ inode.src = d.src;
+ }
+
+ inode.style.marginLeft = inode.style.marginRight = Math.floor((this.getThumbMaxWidth()-d.thumbWidth)/2) + "px";
+ inode.style.marginTop = inode.style.marginBottom = Math.floor((this.getThumbMaxHeight()-d.thumbHeight)/2) + "px";
+}
+
+qx.Proto.createProtoCell = function(tHeight)
+{
+ var frame = document.createElement("div");
+ frame.className = "galleryCell";
+ frame.unselectable = "on";
+ frame.style.height = (tHeight + 2) + "px";
+
+ var number = document.createElement("div");
+ number.className = "galleryNumber";
+ number.unselectable = "on";
+ var ntext = document.createTextNode("-");
+ number.appendChild(ntext);
+
+ var imageContainer = document.createElement("div");
+ imageContainer.className = "galleryImageContainer";
+ imageContainer.unselectable = "on";
+
+ var image = new Image();
+ image.src = this._blank;
+
+ imageContainer.appendChild(image);
+
+ var text = document.createElement("div");
+ text.className = "galleryText";
+ text.unselectable = "on";
+ text.style.width = (this.getWidth()-100-this.getThumbMaxWidth()) + "px";
+
+ var title = document.createElement("h3");
+ var ttext = document.createTextNode("-");
+ title.appendChild(ttext);
+ title.unselectable = "on";
+ text.appendChild(title);
+
+ var comment = document.createElement("p");
+ var ctext = document.createTextNode("-");
+ comment.appendChild(ctext);
+ comment.unselectable = "on";
+ text.appendChild(comment);
+
+
+ frame.appendChild(number);
+ frame.appendChild(imageContainer);
+ frame.appendChild(text);
+
+ return frame;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PRELOADING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.imageOnComplete = function()
+{
+ this._processedImages++;
+
+ if(this._processedImages == this._listSize) {
+ this.dispatchEvent(new qx.event.type.Event("loadComplete"), true);
+ }
+}
+
+qx.ui.embed.GalleryList.imageOnLoad = function()
+{
+ this.gallery.imageOnComplete();
+ this.gallery = null;
+ this.onload = null;
+ this.onerror = null;
+}
+
+qx.ui.embed.GalleryList.imageOnError = function()
+{
+ this.gallery.imageOnComplete();
+ this.gallery = null;
+ this.onload = null;
+ this.onerror = null;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this._list = null;
+ this._frame = null;
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("click", this._onclick);
+ this.removeEventListener("dblclick", this._ondblclick);
+ this.removeEventListener("keydown", this._onkeydown);
+
+ return qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/HtmlEmbed.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/HtmlEmbed.js
new file mode 100644
index 0000000000..0649c69499
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/HtmlEmbed.js
@@ -0,0 +1,112 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#require(qx.renderer.font.FontCache)
+#after(qx.renderer.font.FontObject)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.embed.HtmlEmbed", qx.ui.basic.Terminator,
+function(vHtml)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ if (qx.util.Validation.isValidString(vHtml)) {
+ this.setHtml(vHtml);
+ }
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Any text string which can contain HTML, too
+*/
+qx.OO.addProperty({ name : "html", type : "string" });
+
+/*!
+ The font property describes how to paint the font on the widget.
+*/
+qx.OO.addProperty({ name : "font", type : "object", instance : "qx.renderer.font.Font", convert : qx.renderer.font.FontCache, allowMultipleArguments : true });
+
+/*!
+ Wrap the text?
+*/
+qx.OO.addProperty({ name : "wrap", type : "boolean", defaultValue : true });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyHtml = function()
+{
+ if (this._isCreated) {
+ this._syncHtml();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyFont = function(propValue, propOldValue, propData)
+{
+ if (propValue) {
+ propValue._applyWidget(this);
+ } else if (propOldValue) {
+ propOldValue._resetWidget(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyWrap = function(propValue, propOldValue, propData)
+{
+ this.setStyleProperty("whiteSpace", propValue ? "normal" : "nowrap");
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ELEMENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyElementData = function() {
+ this._syncHtml();
+}
+
+qx.Proto._syncHtml = function() {
+ this.getElement().innerHTML = this.getHtml();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/IconHtmlEmbed.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/IconHtmlEmbed.js
new file mode 100644
index 0000000000..08e9aa9e8b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/IconHtmlEmbed.js
@@ -0,0 +1,134 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.embed.IconHtmlEmbed", qx.ui.embed.HtmlEmbed,
+function(vHtml, vIcon, vIconWidth, vIconHeight)
+{
+ qx.ui.embed.HtmlEmbed.call(this, vHtml);
+
+ if (typeof vIcon != "undefined")
+ {
+ this.setIcon(vIcon);
+
+ if (typeof vIconWidth != "undefined") {
+ this.setIconWidth(vIconWidth);
+ }
+
+ if (typeof vIconHeight != "undefined") {
+ this.setIconHeight(vIconWidth);
+ }
+ }
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Any URI String supported by qx.ui.basic.Image to display a icon
+*/
+qx.OO.addProperty({ name : "icon", type : "string", impl : "html" });
+
+/*!
+ The width of the icon.
+ If configured, this makes qx.ui.embed.IconHtmlEmbed a little bit faster as it does not need to wait until the image loading is finished.
+*/
+qx.OO.addProperty({ name : "iconWidth", type : "number", impl : "html" });
+
+/*!
+ The height of the icon
+ If configured, this makes qx.ui.embed.IconHtmlEmbed a little bit faster as it does not need to wait until the image loading is finished.
+*/
+qx.OO.addProperty({ name : "iconHeight", type : "number", impl : "html" });
+
+/*!
+ Space in pixels between the icon and the HTML.
+*/
+qx.OO.addProperty({ name : "spacing", type : "number", defaultValue : 4, impl : "html" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._mshtml = qx.sys.Client.getInstance().isMshtml();
+
+qx.Proto._syncHtml = function()
+{
+ var vHtml = [];
+
+ if (qx.util.Validation.isValidString(this.getIcon()))
+ {
+ vHtml.push("<img src=\"");
+ vHtml.push(qx.manager.object.AliasManager.getInstance().resolvePath(this._mshtml ? "static/image/blank.gif" : this.getIcon()));
+ vHtml.push("\" style=\"vertical-align:middle;");
+
+ if (qx.util.Validation.isValidNumber(this.getSpacing()))
+ {
+ vHtml.push("margin-right:");
+ vHtml.push(this.getSpacing());
+ vHtml.push("px;");
+ }
+
+ if (qx.util.Validation.isValidNumber(this.getIconWidth()))
+ {
+ vHtml.push("width:");
+ vHtml.push(this.getIconWidth());
+ vHtml.push("px;");
+ }
+
+ if (qx.util.Validation.isValidNumber(this.getIconHeight()))
+ {
+ vHtml.push("height:");
+ vHtml.push(this.getIconHeight());
+ vHtml.push("px;");
+ }
+
+ if (this._mshtml)
+ {
+ vHtml.push("filter:");
+ vHtml.push("progid:DXImageTransform.Microsoft.AlphaImageLoader(src='");
+ vHtml.push(qx.manager.object.AliasManager.getInstance().resolvePath(this.getIcon()));
+ vHtml.push("',sizingMethod='scale')");
+ vHtml.push(";");
+ }
+
+ vHtml.push("\"/>");
+ }
+
+ if (qx.util.Validation.isValidString(this.getHtml())) {
+ vHtml.push(this.getHtml());
+ }
+
+ this.getElement().innerHTML = vHtml.join("");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Iframe.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Iframe.js
new file mode 100644
index 0000000000..ef10aa2730
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/Iframe.js
@@ -0,0 +1,430 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * @event load {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.embed.Iframe", qx.ui.basic.Terminator,
+function(vSource)
+{
+ // **********************************************************************
+ // INIT
+ // **********************************************************************
+ qx.ui.basic.Terminator.call(this);
+
+ this.setSelectable(false);
+ this.setTabIndex(0);
+
+ var o = this;
+ this.__onreadystatechange = function(e) { return o._onreadystatechange(e); }
+ this.__onload = function(e) { return o._onload(e); }
+
+ if (qx.util.Validation.isValid(vSource)) {
+ this.setSource(vSource);
+ }
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "iframe" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "source", type : "string" });
+
+qx.OO.addProperty({ name : "frameName", type : "string" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTERNAL PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+
+// iframe DOM node
+
+qx.Proto._iframeNode = null;
+
+qx.Proto.getIframeNode = function() {
+ return this._iframeNode;
+}
+
+qx.Proto.setIframeNode = function(vIframeNode) {
+ return this._iframeNode = vIframeNode;
+}
+
+
+// blocker div DOM node
+
+qx.Proto._blockerNode = null;
+
+qx.Proto.getBlockerNode = function() {
+ return this._blockerNode;
+}
+
+qx.Proto.setBlockerNode = function(vBlockerNode) {
+ return this._blockerNode = vBlockerNode;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.reload = function() {
+ this._applySource();
+}
+
+
+qx.Proto.block = function()
+{
+ if (this._blockerNode) {
+ this._blockerNode.style.display = "";
+ }
+};
+
+qx.Proto.release = function()
+{
+ if (this._blockerNode) {
+ this._blockerNode.style.display = "none";
+ }
+};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyElement = function(propValue, propOldValue, propData)
+{
+
+ var iframeNode = this.getIframeNode();
+
+ if (!iframeNode)
+ {
+
+ qx.ui.embed.Iframe.initIframe(this.getFrameName());
+
+ // clone proto element and assign iframe
+ iframeNode = this.setIframeNode(qx.ui.embed.Iframe._element.cloneNode(true));
+
+ qx.ui.embed.Iframe.initBlocker();
+
+ // clone proto blocker
+ blockerNode = this.setBlockerNode(qx.ui.embed.Iframe._blocker.cloneNode(true));
+
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ iframeNode.onreadystatechange = this.__onreadystatechange;
+ } else {
+ iframeNode.onload = this.__onload;
+ }
+ }
+
+ this._applySource();
+
+ propValue.appendChild(iframeNode);
+ propValue.appendChild(blockerNode);
+
+ // create basic widget
+ qx.ui.basic.Terminator.prototype._modifyElement.call(this, propValue, propOldValue, propData);
+
+ return true;
+}
+
+
+qx.Proto._beforeAppear = function() {
+ qx.ui.basic.Terminator.prototype._beforeAppear.call(this);
+
+ // register to iframe manager as active widget
+ qx.manager.object.IframeManager.getInstance().add(this);
+};
+
+
+qx.Proto._beforeDisappear = function() {
+ qx.ui.basic.Terminator.prototype._beforeDisappear.call(this);
+
+ // deregister from iframe manager
+ qx.manager.object.IframeManager.getInstance().remove(this);
+};
+
+
+qx.Proto._modifySource = function(propValue, propOldValue, propData)
+{
+ if(this.isCreated()) {
+ this._applySource();
+ }
+
+ return true;
+}
+
+qx.Proto._applySource = function()
+{
+ var currentSource = this.getSource();
+
+ if (qx.util.Validation.isInvalidString(currentSource)) {
+ currentSource = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ }
+
+ this._isLoaded = false;
+ this.getIframeNode().src = currentSource;
+}
+
+qx.Proto._modifyFrameName = function (propValue, propOldValue, propName, uniqModIds)
+{
+ if( this.isCreated()) {
+ throw new Error("Not allowed to set frame name after it has been created");
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onreadystatechange = function()
+{
+ if (this.getIframeNode().readyState == "complete") {
+ this.dispatchEvent(new qx.event.type.Event("load"), true);
+ }
+}
+
+qx.Proto._onload = function()
+{
+ this._isLoaded = true;
+ this.dispatchEvent(new qx.event.type.Event("load"), true);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ WINDOW & DOCUMENT ACCESS
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.getContentWindow = function()
+ {
+ if (this.isCreated()) {
+ try { return this.getIframeNode().contentWindow; }
+ catch (ex) {}
+ }
+
+ return null;
+ }
+
+ qx.Proto.getContentDocument = function()
+ {
+ var win = this.getContentWindow();
+ if (win) {
+ try { return win.document; }
+ catch (ex) {}
+ }
+
+ return null;
+ }
+}
+else
+{
+ qx.Proto.getContentWindow = function()
+ {
+ var doc = this.getContentDocument();
+ return doc ? doc.defaultView : null;
+ }
+
+ qx.Proto.getContentDocument = function()
+ {
+ if (this.isCreated()) {
+ try { return this.getIframeNode().contentDocument; }
+ catch (ex) {}
+ }
+
+ return null;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOAD STATUS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._isLoaded = false;
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto.isLoaded = function()
+ {
+ var doc = this.getContentDocument();
+ return doc ? doc.readyState == "complete" : false;
+ }
+}
+else
+{
+ qx.Proto.isLoaded = function()
+ {
+ return this._isLoaded;
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.__onreadystatechange = this.__onload = null;
+
+ if (this._iframeNode)
+ {
+ this._iframeNode.onreadystatechange = null;
+ this._iframeNode.onload = null;
+
+ this._iframeNode = null;
+ }
+
+ qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT
+---------------------------------------------------------------------------
+*/
+qx.ui.embed.Iframe.initIframe = function(vFrameName)
+{
+ if (qx.ui.embed.Iframe._element && !vFrameName) {
+ return;
+ }
+
+ if (vFrameName && qx.sys.Client.getInstance().isMshtml()) {
+ var f = qx.ui.embed.Iframe._element = document.createElement('<iframe name="' + vFrameName + '"></iframe>');
+ } else {
+ var f = qx.ui.embed.Iframe._element = document.createElement("iframe");
+ if (vFrameName) {
+ f.name = vFrameName;
+ }
+ }
+
+ f.frameBorder = "0";
+ f.frameSpacing = "0";
+
+ f.marginWidth = "0";
+ f.marginHeight = "0";
+
+ f.width = "100%";
+ f.height = "100%";
+
+ f.hspace = "0";
+ f.vspace = "0";
+
+ f.border = "0";
+ f.scrolling = "auto";
+ f.unselectable = "on";
+ f.allowTransparency = "true";
+
+ f.style.position = "absolute";
+ f.style.top = 0;
+ f.style.left = 0;
+ };
+
+qx.ui.embed.Iframe.initBlocker = function()
+{
+
+ if (qx.ui.embed.Iframe._blocker) {
+ return;
+ }
+
+ var b = qx.ui.embed.Iframe._blocker = document.createElement("div");
+
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ b.style.backgroundImage = "url(" + qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif") + ")";
+ }
+
+ b.style.position = "absolute";
+ b.style.top = 0;
+ b.style.left = 0;
+ b.style.width = "100%";
+ b.style.height = "100%";
+ b.style.zIndex = 1;
+ b.style.display = "none";
+};
+
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/LinkEmbed.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/LinkEmbed.js
new file mode 100644
index 0000000000..97bf2a0965
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/LinkEmbed.js
@@ -0,0 +1,88 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.embed.LinkEmbed", qx.ui.embed.HtmlEmbed,
+function(vHtml, vUri, vTarget)
+{
+ qx.ui.embed.HtmlEmbed.call(this, vHtml);
+
+ if (typeof vUri != "undefined") {
+ this.setUri(vUri);
+ }
+
+ if (typeof vTarget != "undefined") {
+ this.setTarget(vTarget);
+ }
+});
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Any valid html URI
+*/
+qx.OO.addProperty({ name : "uri", type : "string", defaultValue : "#", impl : "html" });
+
+/*!
+ Any valid html target
+*/
+qx.OO.addProperty({ name : "target", type : "string", defaultValue : "_blank", impl : "html" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.ui.embed.LinkEmbed.LINK_START = "<a target='";
+qx.ui.embed.LinkEmbed.HREF_START = "' href='";
+qx.ui.embed.LinkEmbed.HREF_STOP = "'>";
+qx.ui.embed.LinkEmbed.LINK_STOP = "</a>";
+
+qx.Proto._syncHtml = function()
+{
+ var vHtml = [];
+
+ vHtml.push(qx.ui.embed.LinkEmbed.LINK_START);
+ vHtml.push(this.getTarget());
+ vHtml.push(qx.ui.embed.LinkEmbed.HREF_START);
+ vHtml.push(this.getUri());
+ vHtml.push(qx.ui.embed.LinkEmbed.HREF_STOP);
+ vHtml.push(this.getHtml());
+ vHtml.push(qx.ui.embed.LinkEmbed.LINK_STOP);
+
+ this.getElement().innerHTML = vHtml.join("");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/NodeEmbed.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/NodeEmbed.js
new file mode 100644
index 0000000000..e5e9fd0d91
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/NodeEmbed.js
@@ -0,0 +1,48 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.embed.NodeEmbed", qx.ui.basic.Terminator,
+function(vId)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ if (qx.util.Validation.isValidString(vId)) {
+ this.setSourceNodeId(vId);
+ }
+});
+
+qx.OO.addProperty({ name : "sourceNodeId", type : "string" });
+
+qx.Proto._createElementImpl = function()
+{
+ var vNode = document.getElementById(this.getSourceNodeId());
+
+ if (!vNode) {
+ throw new Error("Could not find source node with ID: " + this.getSourceNodeId());
+ }
+
+ vNode.style.display = "";
+
+ return this.setElement(vNode);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/TextEmbed.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/TextEmbed.js
new file mode 100644
index 0000000000..d702eef789
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/embed/TextEmbed.js
@@ -0,0 +1,121 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#require(qx.renderer.font.FontCache)
+#after(qx.renderer.font.FontObject)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.embed.TextEmbed", qx.ui.basic.Terminator,
+function(vText)
+{
+ qx.ui.basic.Terminator.call(this);
+
+ if (qx.util.Validation.isValidString(vText)) {
+ this.setText(vText);
+ }
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Any text string which can contain TEXT, too
+*/
+qx.OO.addProperty({ name : "text", type : "string" });
+
+/*!
+ The font property describes how to paint the font on the widget.
+*/
+qx.OO.addProperty({ name : "font", type : "object", instance : "qx.renderer.font.Font", convert : qx.renderer.font.FontCache, allowMultipleArguments : true });
+
+/*!
+ Wrap the text?
+*/
+qx.OO.addProperty({ name : "wrap", type : "boolean", defaultValue : true });
+
+/** The horizontal alignment of the text. */
+qx.OO.addProperty({ name : "textAlign", type : "string", defaultValue : "left", possibleValues : [ "left", "center", "right", "justify" ], allowNull : false });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyText = function()
+{
+ if (this._isCreated) {
+ this._syncText();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyFont = function(propValue, propOldValue, propData)
+{
+ if (propValue) {
+ propValue._applyWidget(this);
+ } else if (propOldValue) {
+ propOldValue._resetWidget(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyWrap = function(propValue, propOldValue, propData)
+{
+ this.setStyleProperty("whiteSpace", propValue ? "normal" : "nowrap");
+ return true;
+}
+
+// property modifier
+qx.Proto._modifyTextAlign = function(propValue, propOldValue, propData) {
+ this.setStyleProperty("textAlign", propValue);
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ELEMENT HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyElementData = function() {
+ this.getElement().appendChild(document.createTextNode(this.getText()));
+}
+
+qx.Proto._syncText = function() {
+ this.getElement().firstChild.nodeValue = this.getText();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Button.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Button.js
new file mode 100644
index 0000000000..29412a39d8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Button.js
@@ -0,0 +1,200 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.Button", qx.ui.basic.Atom,
+function(vText, vIcon, vIconWidth, vIconHeight, vFlash)
+{
+ // ************************************************************************
+ // INIT
+ // ************************************************************************
+ qx.ui.basic.Atom.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+
+ // Make focusable
+ this.setTabIndex(1);
+
+
+ // ************************************************************************
+ // MOUSE EVENTS
+ // ************************************************************************
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mouseout", this._onmouseout);
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+
+
+ // ************************************************************************
+ // KEY EVENTS
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keyup", this._onkeyup);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "button" });
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseover = function(e)
+{
+ if (e.getTarget() != this) {
+ return;
+ }
+
+ if (this.hasState("abandoned"))
+ {
+ this.removeState("abandoned");
+ this.addState("pressed");
+ }
+
+ this.addState("over");
+}
+
+qx.Proto._onmouseout = function(e)
+{
+ if (e.getTarget() != this) {
+ return;
+ }
+
+ this.removeState("over");
+
+ if (this.hasState("pressed"))
+ {
+ // Activate capturing if the button get a mouseout while
+ // the button is pressed.
+ this.setCapture(true);
+
+ this.removeState("pressed");
+ this.addState("abandoned");
+ }
+}
+
+qx.Proto._onmousedown = function(e)
+{
+ if (e.getTarget() != this || !e.isLeftButtonPressed()) {
+ return;
+ }
+
+ this.removeState("abandoned");
+ this.addState("pressed");
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ this.setCapture(false);
+
+ // We must remove the states before executing the command
+ // because in cases were the window lost the focus while
+ // executing we get the capture phase back (mouseout).
+ var hasPressed = this.hasState("pressed");
+ var hasAbandoned = this.hasState("abandoned");
+
+ if (hasPressed) {
+ this.removeState("pressed");
+ }
+
+ if (hasAbandoned) {
+ this.removeState("abandoned");
+ }
+
+ if (!hasAbandoned)
+ {
+ this.addState("over");
+
+ if (hasPressed) {
+ this.execute();
+ }
+ }
+}
+
+qx.Proto._onkeydown = function(e)
+{
+ switch(e.getKeyIdentifier())
+ {
+ case "Enter":
+ case "Space":
+ this.removeState("abandoned");
+ this.addState("pressed");
+ }
+}
+
+qx.Proto._onkeyup = function(e)
+{
+ switch(e.getKeyIdentifier())
+ {
+ case "Enter":
+ case "Space":
+ if (this.hasState("pressed"))
+ {
+ this.removeState("abandoned");
+ this.removeState("pressed");
+ this.execute();
+ }
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // ************************************************************************
+ // MOUSE EVENTS
+ // ************************************************************************
+ this.removeEventListener("mouseover", this._onmouseover, this);
+ this.removeEventListener("mouseout", this._onmouseout, this);
+ this.removeEventListener("mousedown", this._onmousedown, this);
+ this.removeEventListener("mouseup", this._onmouseup, this);
+
+
+ // ************************************************************************
+ // KEY EVENTS
+ // ************************************************************************
+ this.removeEventListener("keydown", this._onkeydown, this);
+ this.removeEventListener("keyup", this._onkeyup, this);
+
+
+ // ************************************************************************
+ // SUPER CLASS
+ // ************************************************************************
+ return qx.ui.basic.Atom.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/CheckBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/CheckBox.js
new file mode 100644
index 0000000000..6e414bf30f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/CheckBox.js
@@ -0,0 +1,210 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.CheckBox", qx.ui.basic.Atom,
+function(vText, vValue, vName, vChecked)
+{
+ qx.ui.basic.Atom.call(this, vText);
+
+ this.setTabIndex(1);
+ this.setPadding(2, 3);
+
+ this._createIcon();
+
+ if (qx.util.Validation.isValidString(vValue)) {
+ this.setValue(vValue);
+ }
+
+ if (qx.util.Validation.isValidString(vName)) {
+ this.setName(vName);
+ }
+
+ if (qx.util.Validation.isValidBoolean(vChecked)) {
+ this.setChecked(vChecked);
+ } else {
+ this.setChecked(false);
+ }
+
+ this.addEventListener("click", this._onclick);
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keyup", this._onkeyup);
+});
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.OO.removeProperty({ name : "icon" });
+qx.OO.removeProperty({ name : "disabledIcon" });
+
+/*!
+ The HTML name of the form element used by the widget
+*/
+qx.OO.addProperty({ name : "name", type : "string" });
+
+/*!
+ The HTML value of the form element used by the widget
+*/
+qx.OO.addProperty({ name : "value", type : "string" });
+
+/*!
+ If the widget is checked
+*/
+qx.OO.addProperty({ name : "checked", type : "boolean", getAlias : "isChecked" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ICON HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.INPUT_TYPE = "checkbox";
+
+qx.Proto._createIcon = function()
+{
+ var i = this._iconObject = new qx.ui.form.InputCheckSymbol;
+
+ i.setType(this.INPUT_TYPE);
+ i.setChecked(this.isChecked());
+ i.setEnabled(this.isEnabled());
+ i.setAnonymous(true);
+
+ this.addAtBegin(i);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData)
+{
+ if (this._iconObject) {
+ this._iconObject.setChecked(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ if (this._iconObject) {
+ this._iconObject.setEnabled(propValue);
+ }
+
+ return qx.ui.basic.Atom.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._handleIcon = function()
+{
+ switch(this.getShow())
+ {
+ case qx.ui.basic.Atom.SHOW_ICON:
+ case qx.ui.basic.Atom.SHOW_BOTH:
+ this._iconIsVisible = true;
+ break;
+
+ default:
+ this._iconIsVisible = false;
+ }
+
+ if (this._iconIsVisible)
+ {
+ this._iconObject ? this._iconObject.setDisplay(true) : this._createIcon();
+ }
+ else if (this._iconObject)
+ {
+ this._iconObject.setDisplay(false);
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onclick = function(e) {
+ this.toggleChecked();
+};
+
+
+qx.Proto._onkeydown = function(e)
+{
+ if(e.getKeyIdentifier() == "Enter" && !e.getAltKey()) {
+ this.toggleChecked();
+ }
+};
+
+
+qx.Proto._onkeyup = function(e)
+{
+ if(e.getKeyIdentifier() == "Space") {
+ this.toggleChecked();
+ }
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("click", this._onclick);
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keyup", this._onkeyup);
+
+ return qx.ui.basic.Atom.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBox.js
new file mode 100644
index 0000000000..ad73ccbf1c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBox.js
@@ -0,0 +1,826 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+/**
+ * A combo-box for qooxdoo.
+ *
+ * The major additional feature compared to typical select fields is that it allows
+ * it to be editable. Also images are supported inside the popup list.
+ *
+ * Features:
+ * <ul>
+ * <li>Editable text field</li>
+ * <li>Complete key-navigation</li>
+ * <li>Images inside the list</li>
+ * <li>Images and text inside the list</li>
+ * </ul>
+ *
+ * @event beforeInitialOpen {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.form.ComboBox", qx.ui.layout.HorizontalBoxLayout,
+function()
+{
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+
+ // ************************************************************************
+ // LIST
+ // ************************************************************************
+ var l = this._list = new qx.ui.form.List;
+
+ l.setAppearance("combo-box-list");
+
+
+ // ************************************************************************
+ // MANAGER
+ // ************************************************************************
+ var m = this._manager = this._list.getManager();
+
+ m.setMultiSelection(false);
+ m.setDragSelection(false);
+
+
+ // ************************************************************************
+ // POPUP
+ // ************************************************************************
+ var p = this._popup = new qx.ui.popup.Popup;
+
+ p.setAppearance("combo-box-popup");
+ p.setAutoHide(false);
+
+ p.add(l);
+
+
+ // ************************************************************************
+ // TEXTFIELD
+ // ************************************************************************
+ var f = this._field = new qx.ui.form.TextField;
+
+ f.setAppearance("combo-box-text-field");
+ f.setTabIndex(-1);
+
+ this.add(f);
+
+
+ // ************************************************************************
+ // BUTTON
+ // ************************************************************************
+
+ // Use qx.ui.basic.Atom instead of qx.ui.form.Button here to omit the registration
+ // of the unneeded and complex button events.
+ var b = this._button = new qx.ui.basic.Atom(null, "widget/arrows/down.gif");
+
+ b.setAppearance("combo-box-button");
+ b.setTabIndex(-1);
+
+ this.add(b);
+
+
+ // ************************************************************************
+ // BEHAVIOR
+ // ************************************************************************
+ this.setTabIndex(1);
+ this.setEditable(false);
+
+
+ // ************************************************************************
+ // WIDGET MOUSE EVENTS
+ // ************************************************************************
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mousewheel", this._onmousewheel);
+
+
+ // ************************************************************************
+ // WIDGET KEY EVENTS
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+ this.addEventListener("keyinput", this._onkeyinput);
+
+
+ // ************************************************************************
+ // WIDGET STATE EVENTS
+ // ************************************************************************
+ this.addEventListener("beforeDisappear", this._onbeforedisappear);
+
+
+ // ************************************************************************
+ // CHILDREN EVENTS
+ // ************************************************************************
+ this._popup.addEventListener("appear", this._onpopupappear, this);
+ this._field.addEventListener("input", this._oninput, this);
+
+
+ // ************************************************************************
+ // DOCUMENT EVENTS
+ // ************************************************************************
+ var vDoc = qx.ui.core.ClientDocument.getInstance();
+ vDoc.addEventListener("windowblur", this._onwindowblur, this);
+
+
+ // ************************************************************************
+ // REMAPPING
+ // ************************************************************************
+ this.remapChildrenHandlingTo(l);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "combo-box" });
+
+qx.OO.addProperty({ name: "editable", type: "boolean", getAlias: "isEditable" });
+qx.OO.addProperty({ name: "selected", type: "object", instance : "qx.ui.form.ListItem" });
+qx.OO.addProperty({ name: "value", type : "string" });
+qx.OO.addProperty({ name: "pagingInterval", type: "number", defaultValue: 10 });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+qx.Proto.getPopup = function() {
+ return this._popup;
+}
+
+qx.Proto.getList = function() {
+ return this._list;
+}
+
+qx.Proto.getField = function() {
+ return this._field;
+}
+
+qx.Proto.getButton = function() {
+ return this._button;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifySelected = function(propValue, propOldValue, propData)
+{
+ this._fromSelected = true;
+
+ // only do this if we called setSelected seperatly
+ // and not from the property "value".
+ if (!this._fromValue) {
+ this.setValue(propValue ? propValue.getLabel() : "");
+ }
+
+ // reset manager cache
+ this._manager.setLeadItem(propValue);
+ this._manager.setAnchorItem(propValue);
+
+ // sync to manager
+ if (propValue)
+ {
+ this._manager.setSelectedItem(propValue);
+ }
+ else
+ {
+ this._manager.deselectAll();
+ }
+
+ // reset hint
+ delete this._fromSelected;
+
+ return true;
+}
+
+qx.Proto._modifyValue = function(propValue, propOldValue, propData)
+{
+ this._fromValue = true;
+
+ // only do this if we called setValue seperatly
+ // and not from the event "input".
+ if (!this._fromInput)
+ {
+ if (this._field.getValue() == propValue) {
+ this._field.forceValue(null);
+ }
+
+ this._field.setValue(propValue);
+ }
+
+ // only do this if we called setValue seperatly
+ // and not from the property "selected".
+ if (!this._fromSelected)
+ {
+ // inform selected property
+ var vSelItem = this._list.findStringExact(propValue);
+
+ // ignore disabled items
+ if (vSelItem != null && !vSelItem.getEnabled()) {
+ vSelItem = null;
+ }
+
+ this.setSelected(vSelItem);
+ }
+
+ // reset hint
+ delete this._fromValue;
+
+ return true;
+}
+
+qx.Proto._modifyEditable = function(propValue, propOldValue, propData)
+{
+ var f = this._field;
+
+ f.setReadOnly(!propValue);
+ f.setCursor(propValue ? null : "default");
+ f.setSelectable(propValue);
+
+ return true;
+}
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ if (this._button) {
+ this._button.setEnabled(propValue);
+ }
+
+ if (this._field) {
+ this._field.setEnabled(propValue);
+ }
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ POPUP HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oldSelected = null;
+
+qx.Proto._openPopup = function()
+{
+ var p = this._popup;
+ var el = this.getElement();
+
+ if (!p.isCreated()) {
+ this.createDispatchEvent("beforeInitialOpen");
+ }
+
+ if (this._list.getChildrenLength() == 0) {
+ return;
+ }
+
+ p.positionRelativeTo(el, 1, qx.dom.Dimension.getBoxHeight(el));
+ p.setWidth(this.getBoxWidth()-2);
+
+ p.setParent(this.getTopLevelWidget());
+ p.show();
+
+ this._oldSelected = this.getSelected();
+
+ this.setCapture(true);
+}
+
+qx.Proto._closePopup = function()
+{
+ this._popup.hide();
+ this.setCapture(false);
+}
+
+qx.Proto._testClosePopup = function()
+{
+ if (this._popup.isSeeable()) {
+ this._closePopup();
+ }
+}
+
+qx.Proto._togglePopup = function() {
+ this._popup.isSeeable() ? this._closePopup() : this._openPopup();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OTHER EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onpopupappear = function(e)
+{
+ var vSelItem = this.getSelected();
+ if (vSelItem) {
+ vSelItem.scrollIntoView();
+ }
+}
+
+qx.Proto._oninput = function(e)
+{
+ // Hint for modifier
+ this._fromInput = true;
+
+ this.setValue(this._field.getComputedValue());
+
+ // be sure that the found item is in view
+ if (this.getPopup().isSeeable() && this.getSelected()) {
+ this.getSelected().scrollIntoView();
+ }
+
+ delete this._fromInput;
+}
+
+qx.Proto._onbeforedisappear = function(e)
+{
+ this._testClosePopup();
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ var vTarget = e.getTarget();
+
+ switch(vTarget)
+ {
+ case this._field:
+ if (this.getEditable()) {
+ break;
+ }
+
+ // no break here
+
+ case this._button:
+ this._button.addState("pressed");
+ this._togglePopup();
+ break;
+
+ case this:
+ case this._list:
+ break;
+
+ default:
+ if (vTarget instanceof qx.ui.form.ListItem && vTarget.getParent() == this._list)
+ {
+ this._list._onmousedown(e);
+ this.setSelected(this._list.getSelectedItem());
+
+ this._closePopup();
+ this.setFocused(true);
+ }
+ else if (this._popup.isSeeable())
+ {
+ this._popup.hide();
+ this.setCapture(false);
+ }
+ }
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ switch(e.getTarget())
+ {
+ case this._field:
+ if (this.getEditable()) {
+ break;
+ }
+
+ // no break here
+
+ default:
+ this._button.removeState("pressed");
+ break;
+ }
+}
+
+qx.Proto._onmouseover = function(e)
+{
+ var vTarget = e.getTarget();
+
+ if (vTarget instanceof qx.ui.form.ListItem)
+ {
+ var vManager = this._manager;
+
+ vManager.deselectAll();
+
+ vManager.setLeadItem(vTarget);
+ vManager.setAnchorItem(vTarget);
+
+ vManager.setSelectedItem(vTarget);
+ }
+}
+
+qx.Proto._onmousewheel = function(e)
+{
+ if (!this._popup.isSeeable())
+ {
+ var toSelect;
+
+ var isSelected = this.getSelected();
+
+ if (e.getWheelDelta() < 0)
+ {
+ toSelect = isSelected ? this._manager.getNext(isSelected) : this._manager.getFirst();
+ }
+ else
+ {
+ toSelect = isSelected ? this._manager.getPrevious(isSelected) : this._manager.getLast();
+ }
+
+ if (toSelect)
+ {
+ this.setSelected(toSelect);
+ }
+ }
+ /* close the popup if the event target is not the combobox or
+ * not one of the list items of the popup list
+ */
+ else {
+ var vTarget = e.getTarget();
+
+ if (vTarget!=this && vTarget.getParent()!=this._list) {
+ this._popup.hide();
+ this.setCapture(false);
+ }
+ }
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e)
+{
+ var vManager = this._manager;
+ var vVisible = this._popup.isSeeable();
+
+ switch(e.getKeyIdentifier())
+ {
+ // Handle <ENTER>
+ case "Enter":
+ if (vVisible)
+ {
+ this.setSelected(this._manager.getSelectedItem());
+ this._closePopup();
+ this.setFocused(true);
+ }
+ else
+ {
+ this._openPopup();
+ }
+
+ return;
+
+ // Handle <ESC>
+ case "Escape":
+ if (vVisible)
+ {
+ vManager.setLeadItem(this._oldSelected);
+ vManager.setAnchorItem(this._oldSelected);
+
+ vManager.setSelectedItem(this._oldSelected);
+
+ this._field.setValue(this._oldSelected ? this._oldSelected.getLabel() : "");
+
+ this._closePopup();
+ this.setFocused(true);
+ }
+
+ return;
+
+ // Handle Alt+Down
+ case "Down":
+ if (e.getAltKey())
+ {
+ this._togglePopup();
+ return;
+ }
+
+ break;
+ }
+};
+
+
+qx.Proto._onkeypress = function(e)
+{
+ var vVisible = this._popup.isSeeable();
+ var vManager = this._manager;
+
+ switch(e.getKeyIdentifier())
+ {
+ // Handle <PAGEUP>
+ case "PageUp":
+ if (!vVisible)
+ {
+ var vPrevious;
+ var vTemp = this.getSelected();
+
+ if (vTemp)
+ {
+ var vInterval = this.getPagingInterval();
+
+ do {
+ vPrevious = vTemp;
+ } while(--vInterval && (vTemp = vManager.getPrevious(vPrevious)));
+ }
+ else
+ {
+ vPrevious = vManager.getLast();
+ }
+
+ this.setSelected(vPrevious);
+
+ return;
+ }
+
+ break;
+
+ // Handle <PAGEDOWN>
+ case "PageDown":
+ if (!vVisible)
+ {
+ var vNext;
+ var vTemp = this.getSelected();
+
+ if (vTemp)
+ {
+ var vInterval = this.getPagingInterval();
+
+ do {
+ vNext = vTemp;
+ } while(--vInterval && (vTemp = vManager.getNext(vNext)));
+ }
+ else
+ {
+ vNext = vManager.getFirst();
+ }
+
+ this.setSelected(vNext);
+
+ return;
+ }
+
+ break;
+ }
+
+ // Default Handling
+ if (!this.isEditable() || vVisible)
+ {
+ this._list._onkeypress(e);
+
+ var vSelected = this._manager.getSelectedItem();
+
+ if (!vVisible)
+ {
+ this.setSelected(vSelected);
+ }
+ else if (vSelected)
+ {
+ this._field.setValue(vSelected.getLabel());
+ }
+ }
+};
+
+
+qx.Proto._onkeyinput = function(e)
+{
+ var vVisible = this._popup.isSeeable();
+ if (!this.isEditable() || vVisible)
+ {
+ this._list._onkeyinput(e);
+
+ var vSelected = this._manager.getSelectedItem();
+
+ if (!vVisible)
+ {
+ this.setSelected(vSelected);
+ }
+ else if (vSelected)
+ {
+ this._field.setValue(vSelected.getLabel());
+ }
+ }
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ GLOBAL BLUR/FOCUS HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onwindowblur = qx.Proto._testClosePopup;
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FOCUS HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._visualizeBlur = function()
+{
+ // Force blur, even if mouseFocus is not active because we
+ // need to be sure that the previous focus rect gets removed.
+ // But this only needs to be done, if there is no new focused element.
+ if (qx.sys.Client.getInstance().isMshtml())
+ {
+ if (this.getEnableElementFocus() && !this.getFocusRoot().getFocusedChild())
+ {
+ try
+ {
+ if (this.getEditable())
+ {
+ this.getField().getElement().blur();
+ }
+ else
+ {
+ this.getElement().blur();
+ }
+ }
+ catch(ex) {};
+ }
+ }
+ else
+ {
+ if (this.getEnableElementFocus())
+ {
+ try
+ {
+ if (this.getEditable())
+ {
+ this.getField().getElement().blur();
+ }
+ else if (!this.getFocusRoot().getFocusedChild())
+ {
+ this.getElement().blur();
+ }
+ }
+ catch(ex) {};
+ }
+ }
+
+ this.removeState("focused");
+ return true;
+}
+
+qx.Proto._visualizeFocus = function()
+{
+ if (!qx.event.handler.FocusHandler.mouseFocus && this.getEnableElementFocus())
+ {
+ try
+ {
+ if (this.getEditable())
+ {
+ this.getField().getElement().focus();
+ this.getField()._ontabfocus();
+ }
+ else
+ {
+ this.getElement().focus();
+ }
+ }
+ catch(ex) {};
+ }
+
+ this.addState("focused");
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // ************************************************************************
+ // WIDGET MOUSE EVENTS
+ // ************************************************************************
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mousewheel", this._onmousewheel);
+
+
+ // ************************************************************************
+ // WIDGET KEY EVENTS
+ // ************************************************************************
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+ this.removeEventListener("keyinput", this._onkeyinput);
+
+ // ************************************************************************
+ // DOCUMENT EVENTS
+ // ************************************************************************
+ var vDoc = qx.ui.core.ClientDocument.getInstance();
+ vDoc.removeEventListener("windowblur", this._onwindowblur, this);
+
+ if (this._list)
+ {
+ this._list.dispose();
+ this._list = null;
+ }
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ if (this._popup)
+ {
+ this._popup.removeEventListener("appear", this._onpopupappear, this);
+ this._popup.dispose();
+ this._popup = null;
+ }
+
+ if (this._field)
+ {
+ this._field.removeEventListener("input", this._oninput, this);
+ this._field.dispose();
+ this._field = null;
+ }
+
+ if (this._button)
+ {
+ this._button.dispose();
+ this._button = null;
+ }
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBoxEx.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBoxEx.js
new file mode 100644
index 0000000000..935b2e78a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ComboBoxEx.js
@@ -0,0 +1,1044 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * David Perez Carmona (david-perez), based on qx.ui.form.ComboBox
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_comboboxex)
+#require(qx.ui.table.Table)
+
+************************************************************************ */
+
+/**
+ * An enhanced combo-box for qooxdoo.
+ *
+ * <p>Features:</p>
+ * <ul>
+ * <li>Editable text field</li>
+ * <li>Complete key-navigation</li>
+ * <li>Mouse wheel navigation</li>
+ * <li>Multicolumn display in list</li>
+ * <li>If more than one column, headers are automatically shown</li>
+ * <li>Can show the ID and/or description of each list item</li>
+ * <li>Automatically calculating needed width</li>
+ * <li>Popup list always shows full contents, and can be wider than text field</li>
+ * <li>Search values through popup dialog</li>
+ * <li>Internationalization support of messages (through custom settings)</li>
+ * </ul>
+ * <p>Pending features:</p>
+ * <ul>
+ * <li>Images inside the list</li>
+ * <li>Autocomplete on key input</li>
+ * </ul>
+ *
+ * @event beforeInitialOpen {qx.event.type.Event}
+ */
+qx.OO.defineClass('qx.ui.form.ComboBoxEx', qx.ui.layout.HorizontalBoxLayout, function() {
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ // ************************************************************************
+ // POPUP
+ // ************************************************************************
+ var p = this._popup = new qx.ui.popup.Popup;
+ p.setAppearance('combo-box-ex-popup');
+
+ // ************************************************************************
+ // LIST
+ // ************************************************************************
+ this._createList([ this._getComboSetting('idHeader'), this._getComboSetting('descriptionHeader') ]);
+
+ // ************************************************************************
+ // FIELD
+ // ************************************************************************
+ var f = this._field = new qx.ui.form.TextField;
+ f.setAppearance('combo-box-ex-text-field');
+ f.addEventListener("input", this._oninput, this);
+ this.add(f);
+ this.setEditable(false);
+
+ // ************************************************************************
+ // BUTTON
+ // ************************************************************************
+
+ // Use qx.ui.basic.Atom instead of qx.ui.form.Button here to omit the registration
+ // of the unneeded and complex button events.
+ var b = this._button = new qx.ui.basic.Atom(null, "widget/arrows/down.gif");
+ b.set({
+ appearance: "combo-box-button",
+ tabIndex: -1
+ });
+ this.add(b);
+
+ // ************************************************************************
+ // BEHAVIOR
+ // ************************************************************************
+ this.setTabIndex(1);
+
+ // ************************************************************************
+ // WIDGET MOUSE EVENTS
+ // ************************************************************************
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("mousewheel", this._onmousewheel);
+ this.addEventListener("dblclick", function() {
+ if (this.getAllowSearch()) {
+ this.openSearchDialog();
+ }
+ });
+
+ // ************************************************************************
+ // WIDGET KEY EVENTS
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+
+ // ************************************************************************
+ // WIDGET STATE EVENTS
+ // ************************************************************************
+ this.addEventListener("beforeDisappear", this._testClosePopup);
+
+ // ************************************************************************
+ // CHILDREN EVENTS
+ // ************************************************************************
+ this._popup.addEventListener("appear", this._onpopupappear, this);
+});
+
+/*
+---------------------------------------------------------------------------
+ LOCALIZATION SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Settings.setDefault('titleSearch', 'Search items in list');
+qx.Settings.setDefault('toolTipSearchNext', 'Search next occurrence');
+qx.Settings.setDefault('idHeader', 'ID');
+qx.Settings.setDefault('descriptionHeader', 'Description');
+qx.Settings.setDefault('caseSensitiveCaption', 'Case sensitive');
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "combo-box-ex" });
+
+/*!Is the text field component editable or the user can only select from the list?*/
+qx.OO.addProperty({ name: "editable", type: "boolean", getAlias: "isEditable" });
+
+/*!0 based. -1 means no selected index. It retrieves always the value column of the selection, not the description.*/
+qx.OO.addProperty({ name: "value", type : "string" });
+
+/*!How many items to transverse with PageUp and PageDn.*/
+qx.OO.addProperty({ name: "pagingInterval", type: "number", defaultValue: 10 });
+
+/*!Show the ID column (column 0) of the selection data?*/
+qx.OO.addProperty({ name: "idColumnVisible", type: "boolean", getAlias: "isIdColumnVisible", defaultValue: false });
+
+/*!Only used when editable is false. It determines what to show in the text field of the combo box.*/
+qx.OO.addProperty({ name: "showOnTextField", type: "string", defaultValue: 'description', possibleValues : [ 'description', 'idAndDescription' ] });
+
+/*!Only used when editable is false and showOnTextField=='idAndDescription'.*/
+qx.OO.addProperty({ name: "idDescriptionSeparator", type: "string", defaultValue: '- ' });
+
+/*!Ensures that always an item is selected (in case the selection isn't empty). Only used when editable is false.*/
+qx.OO.addProperty({ name: 'ensureSomethingSelected', type: "boolean", defaultValue: true });
+
+/*!Allow the search dialog when double clicking the combo, or pressing special keys?.*/
+qx.OO.addProperty({ name: 'allowSearch', type: "boolean", defaultValue: true });
+
+/*!Maximum number of visible rows in the popup list.*/
+qx.OO.addProperty({ name: 'maxVisibleRows', type: "number", defaultValue: 10 });
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getPopup = function() {
+ return this._popup;
+}
+
+qx.Proto.getList = function() {
+ return this._list;
+}
+
+qx.Proto.getField = function() {
+ return this._field;
+}
+
+qx.Proto.getButton = function() {
+ return this._button;
+}
+
+qx.Proto._getComboSetting = function(key) {
+ return qx.Settings.getValueOfClass('qx.ui.form.ComboBoxEx', key);
+}
+
+/**Gets the current selected row of the selection.
+ * @return null if nothing selected or an array*/
+qx.Proto.getSelectedRow = function() {
+ var ind = this.getSelectedIndex();
+ return ind < 0 ? null : this._model.getData()[ind];
+}
+
+/**Creates the list component.*/
+qx.Proto._createList = function(columns) {
+ this._model = new qx.ui.table.SimpleTableModel;
+ // Default column titles
+ this._model.setColumns(columns);
+ var l = this._list = new qx.ui.table.Table(this._model);
+ l.setFocusedCell = function() {}
+ l.setAppearance('combo-box-ex-list');
+ // We receive this: Modification of property "keepFirstVisibleRowComplete" failed with exception: TypeError - vCurrentChild has no properties or
+ // this: Modification of property "keepFirstVisibleRowComplete" failed with exception: TypeError - this.getParent() has no properties
+ l.forceKeepFirstVisibleRowComplete(false);
+ var selMan = l._getSelectionManager();
+ var oldHandle = selMan.handleMouseUp, me = this;
+ selMan.handleMouseUp = function(vItem, e) {
+ oldHandle.apply(selMan, arguments);
+ if (e.isLeftButtonPressed()) {
+ me._testClosePopup();
+ }
+ }
+ this._modifyIdColumnVisible(this.getIdColumnVisible());
+ this._manager = l.getSelectionModel();
+ this._manager.addEventListener('changeSelection', this._onChangeSelection, this);
+ // Avoid deselection from user
+ this._manager.removeSelectionInterval = function() {};
+ this._manager.setSelectionMode(qx.ui.table.SelectionModel.SINGLE_SELECTION);
+ this._popup.add(l);
+ // Invalidate calculation of column widths
+ delete this._calcDimensions;
+}
+
+
+/*
+---------------------------------------------------------------------------
+ PSEUDO-PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**Sets the header for each column.
+ * @param columns {String[]}*/
+qx.Proto.setColumnHeaders = function(columns) {
+ if (!this._list || columns.length != this._model.getColumnCount()) {
+ if (this._list) {
+ var data = this._model.getData();
+ this._list.setParent(null);
+ this._list.dispose();
+ this._list = null;
+ }
+ this._createList(columns);
+ if (data && data.length) {
+ this._model.setData(data);
+ }
+ } else {
+ this._model.setColumns(columns);
+ this._list.getTableColumnModel().init(columns.length);
+ delete this._calcDimensions;
+ }
+ this._modifyIdColumnVisible(this.getIdColumnVisible());
+}
+
+/**Getter for {@link #setColumnHeaders}.
+ * @return {String[]}*/
+qx.Proto.getColumnHeaders = function(propVal) {
+ var cols = [];
+ cols.length = this._model.getColumnCount();
+ for (var col = 0; col < cols.length; col++) {
+ cols[col] = this._model.getColumnName(col);
+ }
+ return cols;
+}
+
+/**Sets the list of selectable items.
+ * @param data {var[][]} Array of values. Its value is an array, with the following info:<ul>.
+ * <li>Column 0 represents the ID, i.e. the value that is stored internally and used by the app.</li>
+ * <li>Column 1 represents the description, the text that the end user normally sees.</li>
+ * <li>Columns > 1 will also be shown in the popup list, it you have set the appropiate column headers with {@link #setColumnHeaders}.</li>
+ * </ul>*/
+qx.Proto.setSelection = function(data) {
+ // Invalidate calculation of column widths
+ delete this._calcDimensions;
+ this._model.setData(data);
+ // Try to preserve currently selected value
+ if (!this.getEditable()) {
+ this._modifyValue(this.getValue());
+ }
+}
+
+/**Getter for {@link #setSelection}.
+ * @return {Array}*/
+qx.Proto.getSelection = function() {
+ return this._model.getData();
+}
+
+/**Sets the index of the currently selected item in the list.
+ * @param index {Number} -1 means no selected index*/
+qx.Proto.setSelectedIndex = function(index) {
+ var items = this.getSelection().length;
+ if (items >= 0) {
+ if (index < 0 && !this.getEditable() && this.getEnsureSomethingSelected()) {
+ index = 0;
+ }
+ if (index >= 0) {
+ index = qx.lang.Number.limit(index, 0, items-1);
+ this._manager.setSelectionInterval(index, index);
+ if (this._popup.isSeeable()) {
+ this._list.scrollCellVisible(0, index);
+ }
+ } else {
+ this._manager.clearSelection();
+ }
+ }
+ return true;
+}
+
+/**Getter for {@link #setSelectedIndex}.*/
+qx.Proto.getSelectedIndex = function() {
+ var index = this._manager.getAnchorSelectionIndex();
+ return this._manager.isSelectedIndex(index) ? index:-1;
+}
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyShowOnTextField = function(propVal) {
+ if (!this.getEditable()) {
+ this.setSelectedIndex(this.getSelectedIndex());
+ delete this._calcDimensions; // Invalidate this._neededTextFieldWidth
+ }
+ return true;
+}
+
+qx.Proto._modifyMaxVisibleRows = function() {
+ delete this._calcDimensions; // Invalidate this._list.height
+ return true;
+}
+
+qx.Proto._checkIdDescriptionSeparator = function(propVal) {
+ // For measuring widths, it is better to replace spaces with non-breakable spaces
+ return String(propVal).replace(/ /g, '\u00A0')
+}
+
+qx.Proto._modifyIdDescriptionSeparator = function(propVal) {
+ if (!this.getEditable() && this.getShowOnTextField() == 'idAndDescription') {
+ this.setSelectedIndex(this.getSelectedIndex());
+ delete this._calcDimensions; // Invalidate this._neededTextFieldWidth
+ }
+ return true;
+}
+
+qx.Proto._modifyIdColumnVisible = function(propVal) {
+ this._list.getTableColumnModel().setColumnVisible(0, propVal);
+ delete this._calcDimensions;
+ return true;
+}
+
+qx.Proto._modifyEditable = function(propValue/*, propOldValue, propData*/) {
+ var f = this._field;
+ f.setReadOnly(!propValue);
+ f.setCursor(propValue ? null : "default");
+ f.setSelectable(propValue);
+ return true;
+}
+
+qx.Proto._modifyValue = function(propValue/*, propOldValue, propData*/) {
+ this._fromValue = true;
+
+ var values = this._model.getData();
+ var i = -1;
+ if (propValue != null) {
+ for (var i = 0; i < values.length; i++) {
+ if (propValue == values[i][0]) {
+ break;
+ }
+ }
+ if (i == values.length) {
+ i = -1;
+ }
+ }
+ if (this.getEditable()) {
+ this._field.setValue(propValue);
+ }
+ // only do this if we called setValue separately
+ // and not from the property "selected".
+ if (!this._fromSelected) {
+ this.setSelectedIndex(i);
+ }
+ // reset hint
+ delete this._fromValue;
+ return true;
+}
+
+qx.Proto._modifyEnabled = function(propValue/*, propOldValue, propData*/) {
+ if (this._button) {
+ this._button.setEnabled(propValue);
+ }
+ if (this._field) {
+ this._field.setEnabled(propValue);
+ }
+ return qx.ui.layout.HorizontalBoxLayout.prototype._modifyEnabled.apply(this, arguments);
+}
+
+
+/*
+---------------------------------------------------------------------------
+ POPUP HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oldSelected = null;
+
+qx.Proto._openPopup = function() {
+ if (this.isSearchInProgress()) {
+ return;
+ }
+ var p = this._popup;
+ p.setAutoHide(false);
+ var el = this.getElement();
+ if (!p.isCreated()) {
+ this.createDispatchEvent("beforeInitialOpen");
+ }
+ if (!this.getSelection().length) {
+ return;
+ }
+ p.positionRelativeTo(el, 1, qx.dom.Dimension.getBoxHeight(el));
+ this._calculateDimensions();
+ p.setParent(this.getTopLevelWidget());
+ p.auto();
+ p.show();
+ this._oldSelected = this.getSelectedIndex();
+ window.setInterval(function() {
+ p.setAutoHide(true);
+ }, 0);
+}
+
+/**Hide the popup list.*/
+qx.Proto._closePopup = function() {
+ this._popup.hide();
+}
+
+/**Hide the popup list only when needed.*/
+qx.Proto._testClosePopup = function() {
+ if (this._popup.isSeeable()) {
+ this._closePopup();
+ }
+}
+
+/**Toggle the visibility of the popup list.*/
+qx.Proto._togglePopup = function() {
+ this._popup.isSeeable() ? this._closePopup() : this._openPopup();
+}
+
+/*
+---------------------------------------------------------------------------
+ DIMENSIONING
+---------------------------------------------------------------------------
+*/
+
+/**Sizes the width of the text field component to the needed value to show any selection item.*/
+qx.Proto.sizeTextFieldToContent = function() {
+ this._calculateDimensions();
+ this._field.setWidth(this._neededTextFieldWidth);
+}
+
+/**Calculates the needed dimensions for the text field and list components*/
+qx.Proto._calculateDimensions = function() {
+ if (this._calcDimensions) {
+ // Already calculated
+ return;
+ }
+ var data = this.getSelection();
+ var cols = this.getColumnHeaders(), nCols = cols.length;
+ var columnWidths = [];
+ this._neededTextFieldWidth = 0;
+ columnWidths.length = cols.length;
+ for (var col = 0; col < cols.length; col++) {
+ columnWidths[col] = 0;
+ }
+ var withDescript = this.getShowOnTextField() == 'idAndDescription';
+ for (var row = 0, rows = Math.min(data.length, 50); row < rows; row++) {
+ var r = data[row], wi0, wi1;
+ for (col = 0; col < nCols; col++) {
+ var wi = this._getTextWidth(r[col]);
+ if (col == 0) {
+ wi0 = wi;
+ } else if (col == 1) {
+ wi1 = wi;
+ }
+ columnWidths[col] = Math.max(wi, columnWidths[col]);
+ }
+ this._neededTextFieldWidth = Math.max(this._neededTextFieldWidth,
+ wi1+(withDescript ? wi0:0));
+ }
+ if (this.getShowOnTextField() == 'idAndDescription') {
+ this._neededTextFieldWidth += this._getTextWidth(this.getIdDescriptionSeparator());
+ }
+ this._neededTextFieldWidth += 8; /*Extra margins*/
+ var maxRows = this.getMaxVisibleRows(),
+ // Only assign room for the vertical scrollbar when needed
+ width = data.length > maxRows ? (new qx.ui.core.ScrollBar)._getScrollBarWidth():0,
+ colModel = this._list.getTableColumnModel(),
+ countVisible = 0;
+
+ // ##Only show headers if we have more than 1 column visible
+ for (col = 0; col < nCols; col++) {
+ if (colModel.isColumnVisible(col)) {
+ countVisible++;
+ }
+ }
+ var hasHeaders = countVisible > 1;
+ this._list.getPaneScroller(0).getHeader().setHeight(hasHeaders ? 'auto' : 1);
+
+ // ##Size each column
+ for (col = 0; col < nCols; col++) {
+ if (colModel.isColumnVisible(col)) {
+ var w = columnWidths[col];
+ if (hasHeaders) {
+ w = Math.max(w, this._getTextWidth(cols[col]));
+ }
+ w += 8;
+ this._list.setColumnWidth(col, w);
+ width += w;
+ }
+ }
+
+ // ##Final width and height
+ this._list.set({
+ width: width,
+ height: this._list.getRowHeight()*
+ Math.min(maxRows, (hasHeaders ? 1:0)+data.length)+2+(hasHeaders ? 2:0)
+ });
+ // This denotes dimensions are already calculated
+ this._calcDimensions = true;
+}
+
+/**Calculates the width of the given text.
+ * The default font is used.
+ * @return {integer}*/
+qx.Proto._getTextWidth = function(text) {
+ var lab = new qx.ui.basic.Label(text);
+ var res = lab.getPreferredBoxWidth();
+ lab.dispose();
+ return res;
+}
+
+
+/*
+---------------------------------------------------------------------------
+ SEARCHING
+---------------------------------------------------------------------------
+*/
+
+/**Does this combo have the searched dialog open?*/
+qx.Proto.isSearchInProgress = function() {
+ return !this._popup.contains(this._list);
+}
+
+/**Searches the given text. Called from the search dialog.
+ * @param startIndex {Number} Start index, 0 based
+ * @param txt {String} Text to find
+ * @param caseSens {Boolean} Case sensivity flag.*/
+qx.Proto._search = function(startIndex, txt, caseSens) {
+ if (txt == null || !txt.length) {
+ return;
+ }
+ var row = startIndex,
+ nCols = this._model.getColumnCount(),
+ nRows = this.getSelection().length,
+ data = this._model.getData();
+ if (!caseSens) {
+ txt = txt.toLowerCase();
+ }
+ var colModel = this._list.getTableColumnModel();
+ while (true) {
+ var dataRow = data[row];
+ if (dataRow) {
+ for (var col = 0; col < nCols; col++) {
+ if (colModel.isColumnVisible(col)) {
+ var txtCol = dataRow[col];
+ if (!caseSens) {
+ txtCol = txtCol.toLowerCase();
+ }
+ if (txtCol.indexOf(txt) >= 0) {
+ this._manager.setSelectionInterval(row, row);
+ this._list.scrollCellVisible(1, row);
+ return;
+ }
+ }
+ }
+ }
+ row = (row+1)% nRows;
+ if (row == startIndex) {
+ break;
+ }
+ }
+}
+
+/**Opens a popup search dialog, useful when the combo has a lot of items.
+ * This dialog is triggered by double clicking the combo, pressing F3 or Ctrl+F.*/
+qx.Proto.openSearchDialog = function() {
+ var sel = this.getSelection();
+ if (!sel || !sel.length || this.isSearchInProgress()) {
+ return;
+ }
+ this._testClosePopup();
+
+ var me = this,
+ oldSelectedIndex = this.getSelectedIndex(),
+ startIndex = oldSelectedIndex;
+
+ //###searchField
+ function search() {
+ me._search(startIndex, searchField.getComputedValue(), checkCase.isChecked());
+ }
+ var searchField = new qx.ui.form.TextField;
+ searchField.set({
+ minWidth: this._field.getWidth(),
+ width: '100%'
+ });
+ searchField.addEventListener("input", function() {
+ search();
+ });
+
+ //###checkCase
+ var checkCase = new qx.ui.form.CheckBox(this._getComboSetting('caseSensitiveCaption'));
+ checkCase.set({
+ horizontalAlign: 'center',
+ marginBottom: 4
+ });
+
+ //###vbox
+ var vbox = new qx.ui.layout.VerticalBoxLayout;
+ vbox.set({
+ spacing: 6,
+ horizontalChildrenAlign: 'center',
+ height: '100%'
+ });
+ vbox.auto();
+ vbox.add(searchField, checkCase);
+
+ //###list, we reuse the same list in the popup
+ this._calculateDimensions();
+ var border = qx.renderer.border.BorderPresets.getInstance().inset;
+ var newListSettings = {
+ /*minHeight: border.getTopWidth()+this._list.getHeight()+border.getBottomWidth(),
+ height: '1*',*/
+ height: border.getTopWidth()+this._list.getHeight()+border.getBottomWidth(),
+ width: border.getLeftWidth()+this._list.getWidth()+border.getRightWidth(),
+ border: border,
+ parent: vbox
+ };
+ // Save old list settings
+ var oldListSettings = {};
+ for (var prop in newListSettings) {
+ oldListSettings[prop] = this._list[qx.OO.getter[prop]]();
+ }
+ this._list.set(newListSettings);
+
+ //###buttons
+ var butNext = new qx.ui.form.Button('', 'icon/16/find.png');
+ butNext.set({
+ toolTip: new qx.ui.popup.ToolTip(this._getComboSetting('toolTipSearchNext'))
+ });
+ butNext.addEventListener("execute", function() {
+ startIndex = (this.getSelectedIndex()+1) % sel.length;
+ search();
+ }, this);
+
+ var butOk = new qx.ui.form.Button('', 'icon/16/button-ok.png');
+ butOk.addEventListener('execute', function() {
+ oldSelectedIndex = null;
+ win.close();
+ }, this);
+
+ var butCancel = new qx.ui.form.Button('', 'icon/16/button-cancel.png');
+ butCancel.addEventListener('execute', function() {
+ win.close();
+ }, this);
+
+ var butBox = new qx.ui.layout.VerticalBoxLayout;
+ butBox.auto();
+ butBox.set({
+ spacing: 10
+ });
+ butBox.add(butNext, butOk, butCancel);
+
+ //###hbox
+ var hbox = new qx.ui.layout.BoxLayout;
+ hbox.auto();
+ hbox.setPadding(10);
+ hbox.set({
+ spacing: 8,
+ minHeight: 'auto',
+ height: '100%'
+ });
+ hbox.add(vbox, butBox);
+
+ //###Window
+ var win = new qx.ui.window.Window(this._getComboSetting('titleSearch'), 'icon/16/find.png');
+ win.add(hbox);
+ win.positionRelativeTo(this);
+ win.set({
+ autoHide: true,
+ allowMaximize: false,
+ showMaximize: false,
+ allowMinimize: false,
+ showMinimize: false
+ });
+ win.addEventListener("appear", function() {
+ searchField.focus();
+ });
+ win.addEventListener("disappear", function() {
+ if (oldSelectedIndex != null) {
+ // Hit Cancel button
+ this.setSelectedIndex(oldSelectedIndex);
+ }
+ this._list.set(oldListSettings);
+ this.focus();
+ }, this);
+ win.addEventListener("keydown", function(e) {
+ switch (e.getKeyIdentifier()) {
+ case "Enter":
+ butOk.createDispatchEvent('execute');
+ break;
+ case "Escape":
+ butCancel.createDispatchEvent('execute');
+ break;
+ case "F3":
+ butNext.createDispatchEvent('execute');
+ break;
+ default:
+ return;
+ }
+ e.preventDefault();
+ }, this);
+ win.auto();
+ win.addToDocument();
+ win.open();
+}
+
+/*
+---------------------------------------------------------------------------
+ OTHER EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onChangeSelection = function(e) {
+ this._fromSelected = true;
+
+ // only do this if we called setValue separately
+ // and not from the event "input".
+ if (!this._fromInput) {
+ var index = this.getSelectedIndex();
+ if (index >= 0) {
+ var row = this._model.getData()[index];
+ }
+ if (row || !this.getEditable()) {
+ this.setValue(row && row[0]);
+ }
+ // In case of editable, this.setValue() already calls this._field.setValue()
+ if (!this.getEditable()) {
+ var val = "";
+ if (row) {
+ val = this.getShowOnTextField() == 'description' ?
+ row[1] :
+ (row[0] != null && row[0] != '' ? row[0] + this.getIdDescriptionSeparator() + row[1]:row[1]);
+ }
+ this._field.setValue(val);
+ }
+ }
+ // reset hint
+ delete this._fromSelected;
+}
+
+qx.Proto._onpopupappear = function(e) {
+ var index = this.getSelectedIndex();
+ if (index >= 0) {
+ this._list.scrollCellVisible(0, index);
+ }
+}
+
+qx.Proto._oninput = function(e) {
+ // Hint for modifier
+ this._fromInput = true;
+ this.setValue(this._field.getComputedValue());
+ delete this._fromInput;
+}
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e) {
+ switch(e.getTarget()) {
+ case this._field:
+ if (this.getEditable()) {
+ break;
+ }
+ // no break here
+ case this._button:
+ this._button.addState("pressed");
+ this._togglePopup();
+ // Assure we receive the mouse up event
+ this.setCapture(true);
+ break;
+ }
+}
+
+qx.Proto._onmouseup = function(e) {
+ switch(e.getTarget()) {
+ case this._field:
+ if (this.getEditable()) {
+ break;
+ }
+ // no break here
+ default:
+ this._button.removeState("pressed");
+ break;
+ }
+ this.setCapture(false);
+}
+
+qx.Proto._onmousewheel = function(e) {
+ if (!this._popup.isSeeable()) {
+ this.setSelectedIndex(Math.max(0, this.getSelectedIndex()+(e.getWheelDelta() < 0 ? -1:1)));
+ }
+}
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e) {
+ var vVisible = this._popup.isSeeable();
+
+ switch (e.getKeyIdentifier()) {
+ case "Enter":
+ if (vVisible) {
+ this._closePopup();
+ this.setFocused(true);
+ } else {
+ this._openPopup();
+ }
+ break;
+
+ case "Escape":
+ if (vVisible) {
+ this.setSelectedIndex(this._oldSelected);
+ this._closePopup();
+ this.setFocused(true);
+ }
+ break;
+
+ case "Home":
+ this.setSelectedIndex(0);
+ break;
+
+ case "End":
+ var items = this.getSelection().length;
+ if (items) {
+ this.setSelectedIndex(items-1);
+ }
+ break;
+
+ case "Down":
+ if (e.getAltKey()) {
+ this._togglePopup();
+ }
+ break;
+
+ case "F3":
+ if (this.getAllowSearch()) {
+ this.openSearchDialog();
+ }
+ break;
+
+ case "F":
+ if (e.getCtrlKey()) {
+ if (this.getAllowSearch()) {
+ this.openSearchDialog();
+ }
+ break;
+ }
+ return;
+
+ default:
+ if (vVisible) {
+ this._list.dispatchEvent(e);
+ }
+ return;
+ }
+ e.preventDefault();
+}
+
+
+qx.Proto._onkeypress = function(e) {
+ var vVisible = this._popup.isSeeable();
+
+ switch (e.getKeyIdentifier()) {
+ case "Up":
+ this.setSelectedIndex(Math.max(0, this.getSelectedIndex()-1));
+ break;
+
+ case "Down":
+ this.setSelectedIndex(Math.max(0, this.getSelectedIndex()+1));
+ break;
+
+ case "PageUp":
+ this.setSelectedIndex(Math.max(0, this.getSelectedIndex()-this.getPagingInterval()));
+ break;
+
+ case "PageDown":
+ this.setSelectedIndex(this.getSelectedIndex()+this.getPagingInterval());
+ break;
+
+ default:
+ if (vVisible) {
+ this._list.dispatchEvent(e);
+ }
+ return;
+ }
+ e.preventDefault();
+
+ if (!this.isEditable() && this._list.isSeeable()) {
+ this._list.dispatchEvent(e);
+ }
+
+}
+
+
+/*
+---------------------------------------------------------------------------
+ FOCUS HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._visualizeBlur = function() {
+ // Force blur, even if mouseFocus is not active because we
+ // need to be sure that the previous focus rect gets removed.
+ // But this only needs to be done, if there is no new focused element.
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ if (this.getEnableElementFocus() && !this.getFocusRoot().getFocusedChild()) {
+ try {
+ if (this.getEditable()) {
+ this.getField().getElement().blur();
+ } else {
+ this.getElement().blur();
+ }
+ }
+ catch(ex) {};
+ }
+ } else {
+ if (this.getEnableElementFocus()) {
+ try {
+ if (this.getEditable()) {
+ this.getField().getElement().blur();
+ } else if (!this.getFocusRoot().getFocusedChild()) {
+ this.getElement().blur();
+ }
+ }
+ catch(ex) {};
+ }
+ }
+ this.removeState("focused");
+ return true;
+}
+
+qx.Proto._visualizeFocus = function() {
+ if (!qx.event.handler.FocusHandler.mouseFocus && this.getEnableElementFocus()) {
+ try {
+ if (this.getEditable()) {
+ this.getField().getElement().focus();
+ this.getField()._ontabfocus();
+ } else {
+ this.getElement().focus();
+ }
+ } catch(ex) {
+ }
+ }
+ this.addState("focused");
+ return true;
+}
+
+/*
+---------------------------------------------------------------------------
+ DISPOSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // ************************************************************************
+ // WIDGET MOUSE EVENTS
+ // ************************************************************************
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("mousewheel", this._onmousewheel);
+
+
+ // ************************************************************************
+ // WIDGET KEY EVENTS
+ // ************************************************************************
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+
+
+ this._model = null;
+ if (this._manager) {
+ this._manager.removeEventListener('changeSelection', this._onChangeSelection);
+ this._manager = null;
+ }
+ if (this._list) {
+ this._list.dispose();
+ this._list = null;
+ }
+ if (this._popup) {
+ this._popup.removeEventListener("appear", this._onpopupappear, this);
+ this._popup.dispose();
+ this._popup = null;
+ }
+ if (this._field) {
+ if (this.getEditable()) {
+ this._field.removeEventListener("input", this._oninput, this);
+ }
+ this._field.dispose();
+ this._field = null;
+ }
+ if (this._button) {
+ this._button.dispose();
+ this._button = null;
+ }
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/InputCheckSymbol.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/InputCheckSymbol.js
new file mode 100644
index 0000000000..a7acf6f65a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/InputCheckSymbol.js
@@ -0,0 +1,93 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.InputCheckSymbol", qx.ui.basic.Terminator,
+function()
+{
+ qx.ui.basic.Terminator.call(this);
+
+ this.setTagName("input");
+ this.setSelectable(false);
+
+ if (qx.sys.Client.getInstance().isMshtml())
+ {
+ // Take control over size of element (mshtml)
+ this.setWidth(13);
+ this.setHeight(13);
+ }
+ else if (qx.sys.Client.getInstance().isGecko())
+ {
+ // Remove gecko default margin
+ this.setMargin(0);
+ }
+
+ // we need to be sure that the dom protection of this is added
+ this.forceTabIndex(1);
+ this.setTabIndex(-1);
+ this.setChecked(false);
+});
+
+qx.OO.addProperty({ name : "name", type : "string", impl : "apply" });
+qx.OO.addProperty({ name : "value", impl : "apply" });
+qx.OO.addProperty({ name : "type", impl : "apply" });
+qx.OO.addProperty({ name : "checked", type : "boolean", impl : "apply", getAlias : "isChecked" });
+
+qx.Proto._modifyApply = function(propValue, propOldValue, propData) {
+ return this.setHtmlProperty(propData.name, propValue);
+}
+
+qx.Proto.getPreferredBoxWidth = function() {
+ return 13;
+}
+
+qx.Proto.getPreferredBoxHeight = function() {
+ return 13;
+}
+
+qx.Proto.getBoxWidth = qx.Proto.getPreferredBoxWidth;
+qx.Proto.getBoxHeight = qx.Proto.getPreferredBoxHeight;
+
+qx.Proto.getInnerWidth = qx.Proto.getPreferredBoxWidth;
+qx.Proto.getInnerHeight = qx.Proto.getPreferredBoxHeight;
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._afterAppear = function()
+ {
+ qx.ui.basic.Terminator.prototype._afterAppear.call(this);
+
+ var vElement = this.getElement();
+ vElement.checked = this.getChecked();
+
+ if (!this.getEnabled()) {
+ vElement.disabled = true;
+ }
+ }
+}
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ propValue ? this.removeHtmlAttribute("disabled") : this.setHtmlAttribute("disabled", "disabled");
+ return qx.ui.basic.Terminator.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/List.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/List.js
new file mode 100644
index 0000000000..da58b6a960
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/List.js
@@ -0,0 +1,383 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.List", qx.ui.layout.VerticalBoxLayout,
+function()
+{
+ qx.ui.layout.VerticalBoxLayout.call(this);
+
+
+ // ************************************************************************
+ // INITILISIZE MANAGER
+ // ************************************************************************
+ this._manager = new qx.manager.selection.SelectionManager(this);
+
+
+ // ************************************************************************
+ // BEHAVIOR
+ // ************************************************************************
+ this.setSelectable(false);
+ this.setTabIndex(1);
+
+
+ // ************************************************************************
+ // MOUSE EVENT LISTENER
+ // ************************************************************************
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("click", this._onclick);
+ this.addEventListener("dblclick", this._ondblclick);
+
+
+ // ************************************************************************
+ // KEY EVENT LISTENER
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+ this.addEventListener("keyinput", this._onkeyinput);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list" });
+
+qx.OO.addProperty({ name : "enableInlineFind", type : "boolean", defaultValue : true });
+qx.OO.addProperty({ name : "markLeadingItem", type : "boolean", defaultValue : false });
+
+qx.Proto._pressedString = "";
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER BINDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+qx.Proto.getListItemTarget = function(vItem)
+{
+ while (vItem != null && vItem.getParent() != this) {
+ vItem = vItem.getParent();
+ }
+
+ return vItem;
+}
+
+qx.Proto.getSelectedItem = function() {
+ return this.getSelectedItems()[0];
+}
+
+qx.Proto.getSelectedItems = function() {
+ return this._manager.getSelectedItems();
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseover = function(e)
+{
+ var vItem = this.getListItemTarget(e.getTarget());
+
+ if (vItem) {
+ this._manager.handleMouseOver(vItem, e);
+ }
+}
+
+qx.Proto._onmousedown = function(e)
+{
+ var vItem = this.getListItemTarget(e.getTarget());
+
+ if (vItem) {
+ this._manager.handleMouseDown(vItem, e);
+ }
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vItem = this.getListItemTarget(e.getTarget());
+
+ if (vItem) {
+ this._manager.handleMouseUp(vItem, e);
+ }
+}
+
+qx.Proto._onclick = function(e)
+{
+ var vItem = this.getListItemTarget(e.getTarget());
+
+ if (vItem) {
+ this._manager.handleClick(vItem, e);
+ }
+}
+
+qx.Proto._ondblclick = function(e)
+{
+ var vItem = this.getListItemTarget(e.getTarget());
+
+ if (vItem) {
+ this._manager.handleDblClick(vItem, e);
+ }
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e)
+{
+ // Execute action on press <ENTER>
+ if (e.getKeyIdentifier() == "Enter" && !e.getAltKey())
+ {
+ var items = this.getSelectedItems();
+ var currentItem;
+
+ for (var i=0; i<items.length; i++) {
+ items[i].createDispatchEvent("action");
+ }
+ }
+};
+
+
+qx.Proto._onkeypress = function(e)
+{
+ // Give control to selectionManager
+ this._manager.handleKeyPress(e);
+};
+
+
+qx.Proto._lastKeyPress = 0;
+
+qx.Proto._onkeyinput = function(e)
+{
+ if (!this.getEnableInlineFind()) {
+ return;
+ }
+
+ // Reset string after a second of non pressed key
+ if (((new Date).valueOf() - this._lastKeyPress) > 1000) {
+ this._pressedString = "";
+ }
+
+ // Combine keys the user pressed to a string
+ this._pressedString += String.fromCharCode(e.getCharCode());
+
+ // Find matching item
+ var matchedItem = this.findString(this._pressedString, null);
+
+ if (matchedItem)
+ {
+ var oldVal = this._manager._getChangeValue();
+
+ // Temporary disable change event
+ var oldFireChange = this._manager.getFireChange();
+ this._manager.setFireChange(false);
+
+ // Reset current selection
+ this._manager._deselectAll();
+
+ // Update manager
+ this._manager.setItemSelected(matchedItem, true);
+ this._manager.setAnchorItem(matchedItem);
+ this._manager.setLeadItem(matchedItem);
+
+ // Scroll to matched item
+ matchedItem.scrollIntoView();
+
+ // Recover event status
+ this._manager.setFireChange(oldFireChange);
+
+ // Dispatch event if there were any changes
+ if (oldFireChange && this._manager._hasChanged(oldVal)) {
+ this._manager._dispatchChange();
+ }
+ }
+
+ // Store timestamp
+ this._lastKeyPress = (new Date).valueOf();
+ e.preventDefault();
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FIND SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._findItem = function(vUserValue, vStartIndex, vType)
+{
+ var vAllItems = this.getChildren();
+
+ // If no startIndex given try to get it by current selection
+ if (vStartIndex == null)
+ {
+ vStartIndex = vAllItems.indexOf(this.getSelectedItem());
+
+ if (vStartIndex == -1) {
+ vStartIndex = 0;
+ }
+ }
+
+ var methodName = "matches" + vType;
+
+ // Mode #1: Find all items after the startIndex
+ for (var i=vStartIndex; i<vAllItems.length; i++) {
+ if (vAllItems[i][methodName](vUserValue)) {
+ return vAllItems[i];
+ }
+ }
+
+ // Mode #2: Find all items before the startIndex
+ for (var i=0; i<vStartIndex; i++) {
+ if (vAllItems[i][methodName](vUserValue)) {
+ return vAllItems[i];
+ }
+ }
+
+ return null;
+}
+
+qx.Proto.findString = function(vText, vStartIndex) {
+ return this._findItem(vText, vStartIndex || 0, "String");
+}
+
+qx.Proto.findStringExact = function(vText, vStartIndex) {
+ return this._findItem(vText, vStartIndex || 0, "StringExact");
+}
+
+qx.Proto.findValue = function(vText, vStartIndex) {
+ return this._findItem(vText, vStartIndex || 0, "Value");
+}
+
+qx.Proto.findValueExact = function(vText, vStartIndex) {
+ return this._findItem(vText, vStartIndex || 0, "ValueExact");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SORT SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._sortItemsCompare = function(a, b) {
+ return a.key < b.key ? -1 : a.key == b.key ? 0 : 1;
+}
+
+qx.Proto.sortItemsByString = function(vReverse)
+{
+ var sortitems = [];
+ var items = this.getChildren();
+
+ for(var i=0, l=items.length; i<l; i++) {
+ sortitems[i] = { key : items[i].getLabel(), item : items[i] }
+ }
+
+ sortitems.sort(this._sortItemsCompare);
+ if (vReverse) {
+ sortitems.reverse();
+ }
+
+ for(var i=0; i<l; i++) {
+ this.addAt(sortitems[i].item, i);
+ }
+}
+
+qx.Proto.sortItemsByValue = function(vReverse)
+{
+ var sortitems = [];
+ var items = this.getChildren();
+
+ for(var i=0, l=items.length; i<l; i++) {
+ sortitems[i] = { key : items[i].getValue(), item : items[i] }
+ }
+
+ sortitems.sort(this._sortItemsCompare);
+ if (vReverse) {
+ sortitems.reverse();
+ }
+
+ for(var i=0; i<l; i++) {
+ this.addAt(sortitems[i].item, i);
+ }
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("click", this._onclick);
+ this.removeEventListener("dblclick", this._ondblclick);
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+ this.removeEventListener("keyinput", this._onkeyinput);
+
+ return qx.ui.layout.VerticalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ListItem.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ListItem.js
new file mode 100644
index 0000000000..2499bc5823
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/ListItem.js
@@ -0,0 +1,115 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+/**
+ * @event action {qx.event.type.Event} (Fired by {@link qx.ui.form.List})
+ */
+qx.OO.defineClass("qx.ui.form.ListItem", qx.ui.basic.Atom,
+function(vText, vIcon, vValue)
+{
+ qx.ui.basic.Atom.call(this, vText, vIcon);
+
+ if (qx.util.Validation.isValid(vValue)) {
+ this.setValue(vValue);
+ }
+
+
+ // ************************************************************************
+ // EVENT LISTENER
+ // ************************************************************************
+ this.addEventListener("dblclick", this._ondblclick);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-item" });
+qx.OO.addProperty({ name : "value" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.handleStateChange = function()
+{
+ if (this.hasState("lead"))
+ {
+ this.setStyleProperty("MozOutline", "1px dotted invert");
+ this.setStyleProperty("outline", "1px dotted invert");
+ }
+ else
+ {
+ this.removeStyleProperty("MozOutline");
+ this.setStyleProperty("outline", "0px none");
+ }
+}
+
+// Remove default outline focus border
+qx.Proto._applyStateStyleFocus = function(vStates) {};
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.matchesString = function(vText) {
+ return vText != "" && this.getLabel().toLowerCase().indexOf(vText.toLowerCase()) == 0;
+}
+
+qx.Proto.matchesStringExact = function(vText) {
+ return vText != "" && this.getLabel().toLowerCase() == String(vText).toLowerCase();
+}
+
+qx.Proto.matchesValue = function(vText) {
+ return vText != "" && this.getValue().toLowerCase().indexOf(vText.toLowerCase()) == 0;
+}
+
+qx.Proto.matchesValueExact = function(vText) {
+ return vText != "" && this.getValue().toLowerCase() == String(vText).toLowerCase();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._ondblclick = function(e)
+{
+ var vCommand = this.getCommand();
+ if (vCommand) {
+ vCommand.execute();
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/PasswordField.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/PasswordField.js
new file mode 100644
index 0000000000..17e0894a76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/PasswordField.js
@@ -0,0 +1,31 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.PasswordField", qx.ui.form.TextField,
+function(vText)
+{
+ qx.ui.form.TextField.call(this, vText);
+
+ this.setHtmlProperty("type", "password");
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RadioButton.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RadioButton.js
new file mode 100644
index 0000000000..97486822c1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RadioButton.js
@@ -0,0 +1,185 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.RadioButton", qx.ui.form.CheckBox,
+function(vText, vValue, vName, vChecked) {
+ qx.ui.form.CheckBox.call(this, vText, vValue, vName, vChecked);
+
+ this.addEventListener("keypress", this._onkeypress);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The assigned qx.manager.selection.RadioManager which handles the switching between registered buttons
+*/
+qx.OO.addProperty({ name : "manager", type : "object", instance : "qx.manager.selection.RadioManager", allowNull : true });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ICON HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.INPUT_TYPE = "radio";
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData)
+{
+ if (this._iconObject) {
+ this._iconObject.setChecked(propValue);
+ }
+
+ var vManager = this.getManager();
+ if (vManager) {
+ vManager.handleItemChecked(this, propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyManager = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue) {
+ propValue.add(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyName = function(propValue, propOldValue, propData)
+{
+ if (this._iconObject) {
+ this._iconObject.setName(propValue);
+ }
+
+ if (this.getManager()) {
+ this.getManager().setName(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyValue = function(propValue, propOldValue, propData)
+{
+ if (this.isCreated() && this._iconObject) {
+ this._iconObject.setValue(propValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e)
+{
+ if (e.getKeyIdentifier() == "Enter" && !e.getAltKey()) {
+ this.setChecked(true);
+ }
+};
+
+
+qx.Proto._onkeypress = function(e)
+{
+ switch(e.getKeyIdentifier())
+ {
+ case "Left":
+ case "Up":
+ qx.event.handler.FocusHandler.mouseFocus = false;
+ // we want to have a focus border when using arrows to select
+ qx.event.handler.FocusHandler.mouseFocus = false;
+
+ return this.getManager() ? this.getManager().selectPrevious(this) : true;
+
+ case "Right":
+ case "Down":
+ // we want to have a focus border when using arrows to select
+ qx.event.handler.FocusHandler.mouseFocus = false;
+
+ return this.getManager() ? this.getManager().selectNext(this) : true;
+ }
+};
+
+
+qx.Proto._onclick = function(e) {
+ this.setChecked(true);
+}
+
+qx.Proto._onkeyup = function(e)
+{
+ if(e.getKeyIdentifier() == "Space") {
+ this.setChecked(true);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("keypress", this._onkeypress);
+ return qx.ui.form.CheckBox.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RepeatButton.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RepeatButton.js
new file mode 100755
index 0000000000..df04fdd3ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/RepeatButton.js
@@ -0,0 +1,127 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+/**
+ * @event execute {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.form.RepeatButton", qx.ui.form.Button,
+function(vText, vIcon, vIconWidth, vIconHeight, vFlash)
+{
+ qx.ui.form.Button.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+
+ this._timer = new qx.client.Timer;
+ this._timer.setInterval(this.getInterval());
+ this._timer.addEventListener("interval", this._oninterval, this);
+});
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "interval", type : "number", defaultValue : 100 });
+qx.OO.addProperty({ name : "firstInterval", type : "number", defaultValue : 500 });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ if (e.getTarget() != this || !e.isLeftButtonPressed()) {
+ return;
+ }
+
+ this._executed = false;
+
+ this._timer.setInterval(this.getFirstInterval());
+ this._timer.start();
+
+ this.removeState("abandoned");
+ this.addState("pressed");
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ this.setCapture(false);
+
+ if (!this.hasState("abandoned"))
+ {
+ this.addState("over");
+
+ if (this.hasState("pressed") && !this._executed) {
+ this.execute();
+ }
+ }
+
+ this._timer.stop();
+
+ this.removeState("abandoned");
+ this.removeState("pressed");
+}
+
+qx.Proto._oninterval = function(e)
+{
+ this._timer.stop();
+ this._timer.setInterval(this.getInterval());
+ this._timer.start();
+
+ this._executed = true;
+ this.createDispatchEvent("execute");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._timer)
+ {
+ this._timer.stop();
+ this._timer.dispose();
+ this._timer = null;
+ }
+
+ return qx.ui.form.Button.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Spinner.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Spinner.js
new file mode 100644
index 0000000000..f2eeab0e5d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/Spinner.js
@@ -0,0 +1,683 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+/**
+ * @event change {qx.event.type.Event}
+ */
+qx.OO.defineClass("qx.ui.form.Spinner", qx.ui.layout.HorizontalBoxLayout,
+function(vMin, vValue, vMax)
+{
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ // ************************************************************************
+ // BEHAVIOR
+ // ************************************************************************
+ this.setTabIndex(-1);
+
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ this.setStyleProperty("fontSize", "0px");
+ }
+
+
+ // ************************************************************************
+ // MANAGER
+ // ************************************************************************
+ this._manager = new qx.type.Range();
+
+
+ // ************************************************************************
+ // TEXTFIELD
+ // ************************************************************************
+ this._textfield = new qx.ui.form.TextField;
+ this._textfield.setAppearance("spinner-field");
+ this._textfield.setValue(String(this._manager.getValue()));
+
+ this.add(this._textfield);
+
+
+ // ************************************************************************
+ // BUTTON LAYOUT
+ // ************************************************************************
+ this._buttonlayout = new qx.ui.layout.VerticalBoxLayout;
+ this._buttonlayout.setWidth("auto");
+ this.add(this._buttonlayout);
+
+
+ // ************************************************************************
+ // UP-BUTTON
+ // ************************************************************************
+ this._upbutton = new qx.ui.basic.Image("widget/arrows/up_small.gif");
+ this._upbutton.setAppearance("spinner-button-up");
+ this._buttonlayout.add(this._upbutton);
+
+
+ // ************************************************************************
+ // DOWN-BUTTON
+ // ************************************************************************
+ this._downbutton = new qx.ui.basic.Image("widget/arrows/down_small.gif");
+ this._downbutton.setAppearance("spinner-button-down");
+ this._buttonlayout.add(this._downbutton);
+
+
+ // ************************************************************************
+ // TIMER
+ // ************************************************************************
+ this._timer = new qx.client.Timer(this.getInterval());
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+ this.addEventListener("keypress", this._onkeypress, this);
+ this.addEventListener("keydown", this._onkeydown, this);
+ this.addEventListener("keyup", this._onkeyup, this);
+ this.addEventListener("mousewheel", this._onmousewheel, this);
+
+ this._textfield.addEventListener("input", this._oninput, this);
+ this._textfield.addEventListener("blur", this._onblur, this);
+ this._upbutton.addEventListener("mousedown", this._onmousedown, this);
+ this._downbutton.addEventListener("mousedown", this._onmousedown, this);
+ this._manager.addEventListener("change", this._onchange, this);
+ this._timer.addEventListener("interval", this._oninterval, this);
+
+
+ // ************************************************************************
+ // INITIALIZATION
+ // ************************************************************************
+
+ if(qx.util.Validation.isValidNumber(vMin)) {
+ this.setMin(vMin);
+ }
+
+ if(qx.util.Validation.isValidNumber(vMax)) {
+ this.setMax(vMax);
+ }
+
+ if(qx.util.Validation.isValidNumber(vValue)) {
+ this.setValue(vValue);
+ }
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "spinner" });
+
+/*!
+ The amount to increment on each event (keypress or mousedown).
+*/
+qx.OO.addProperty({ name : "incrementAmount", type : "number", defaultValue : 1 });
+
+/*!
+ The amount to increment on each event (keypress or mousedown).
+*/
+qx.OO.addProperty({ name : "wheelIncrementAmount", type : "number", defaultValue : 1 });
+
+/*!
+ The amount to increment on each pageup / pagedown keypress
+*/
+qx.OO.addProperty({ name : "pageIncrementAmount", type : "number", defaultValue : 10 });
+
+/*!
+ The current value of the interval (this should be used internally only).
+*/
+qx.OO.addProperty({ name : "interval", type : "number", defaultValue : 100 });
+
+/*!
+ The first interval on event based shrink/growth of the value.
+*/
+qx.OO.addProperty({ name : "firstInterval", type : "number", defaultValue : 500 });
+
+/*!
+ This configures the minimum value for the timer interval.
+*/
+qx.OO.addProperty({ name : "minTimer", type : "number", defaultValue : 20 });
+
+/*!
+ Decrease of the timer on each interval (for the next interval) until minTimer reached.
+*/
+qx.OO.addProperty({ name : "timerDecrease", type : "number", defaultValue : 2 });
+
+/*!
+ If minTimer was reached, how much the amount of each interval should growth (in relation to the previous interval).
+*/
+qx.OO.addProperty({ name : "amountGrowth", type : "number", defaultValue : 1.01 });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computePreferredInnerWidth = function() {
+ return 50;
+}
+
+qx.Proto._computePreferredInnerHeight = function() {
+ return 14;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENT-HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeypress = function(e)
+{
+ var vIdentifier = e.getKeyIdentifier();
+
+ if (vIdentifier == "Enter" && !e.getAltKey())
+ {
+ this._checkValue(true, false, false);
+ this._textfield.selectAll();
+ }
+ else
+ {
+ switch (vIdentifier)
+ {
+ case "Up":
+ case "Down":
+
+ case "Left":
+ case "Right":
+
+ case "Shift":
+ case "Control":
+ case "Alt":
+
+ case "Escape":
+ case "Delete":
+ case "Backspace":
+
+ case "Insert":
+
+ case "Home":
+ case "End":
+
+ case "PageUp":
+ case "PageDown":
+
+ case "NumLock":
+ case "Tab":
+ break;
+
+ default:
+ if (vIdentifier >= "0" && vIdentifier <= "9") {
+ return;
+ }
+
+ e.preventDefault();
+ }
+ }
+}
+
+qx.Proto._onkeydown = function(e)
+{
+ var vIdentifier = e.getKeyIdentifier();
+
+ if (this._intervalIncrease == null)
+ {
+ switch(vIdentifier)
+ {
+ case "Up":
+ case "Down":
+ this._intervalIncrease = vIdentifier == "Up";
+ this._intervalMode = "single";
+
+ this._resetIncrements();
+ this._checkValue(true, false, false);
+
+ this._increment();
+ this._timer.startWith(this.getFirstInterval());
+
+ break;
+
+ case "PageUp":
+ case "PageDown":
+ this._intervalIncrease = vIdentifier == "PageUp";
+ this._intervalMode = "page";
+
+ this._resetIncrements();
+ this._checkValue(true, false, false);
+
+ this._pageIncrement();
+ this._timer.startWith(this.getFirstInterval());
+
+ break;
+ }
+ }
+}
+
+qx.Proto._onkeyup = function(e)
+{
+ if (this._intervalIncrease != null)
+ {
+ switch(e.getKeyIdentifier())
+ {
+ case "Up":
+ case "Down":
+ case "PageUp":
+ case "PageDown":
+ this._timer.stop();
+
+ this._intervalIncrease = null;
+ this._intervalMode = null;
+ }
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENT-HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ if (!e.isLeftButtonPressed()) {
+ return;
+ }
+
+ this._checkValue(true);
+
+ var vButton = e.getCurrentTarget();
+
+ vButton.addState("pressed");
+
+ vButton.addEventListener("mouseup", this._onmouseup, this);
+ vButton.addEventListener("mouseout", this._onmouseup, this);
+
+ this._intervalIncrease = vButton == this._upbutton;
+ this._resetIncrements();
+ this._increment();
+
+ this._textfield.selectAll();
+
+ this._timer.setInterval(this.getFirstInterval());
+ this._timer.start();
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vButton = e.getCurrentTarget();
+
+ vButton.removeState("pressed");
+
+ vButton.removeEventListener("mouseup", this._onmouseup, this);
+ vButton.removeEventListener("mouseout", this._onmouseup, this);
+
+ this._textfield.selectAll();
+ this._textfield.setFocused(true);
+
+ this._timer.stop();
+ this._intervalIncrease = null;
+}
+
+qx.Proto._onmousewheel = function(e)
+{
+ this._manager.setValue(this._manager.getValue() + this.getWheelIncrementAmount() * e.getWheelDelta());
+ this._textfield.selectAll();
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ OTHER EVENT-HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oninput = function(e) {
+ this._checkValue(true, true);
+}
+
+qx.Proto._onchange = function(e)
+{
+ var vValue = this._manager.getValue();
+
+ this._textfield.setValue(String(vValue));
+
+ if (vValue == this.getMin())
+ {
+ this._downbutton.removeState("pressed");
+ this._downbutton.setEnabled(false);
+ this._timer.stop();
+ }
+ else
+ {
+ this._downbutton.setEnabled(true);
+ }
+
+ if (vValue == this.getMax())
+ {
+ this._upbutton.removeState("pressed");
+ this._upbutton.setEnabled(false);
+ this._timer.stop();
+ }
+ else
+ {
+ this._upbutton.setEnabled(true);
+ }
+
+ if (this.hasEventListeners("change")) {
+ this.dispatchEvent(new qx.event.type.Event("change"), true);
+ }
+}
+
+qx.Proto._onblur = function(e) {
+ this._checkValue(false);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MAPPING TO RANGE MANAGER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setValue = function(nValue) {
+ this._manager.setValue(nValue);
+}
+
+qx.Proto.getValue = function() {
+ this._checkValue(true);
+ return this._manager.getValue();
+}
+
+qx.Proto.resetValue = function() {
+ return this._manager.resetValue();
+}
+
+qx.Proto.setMax = function(vMax) {
+ return this._manager.setMax(vMax);
+}
+
+qx.Proto.getMax = function() {
+ return this._manager.getMax();
+}
+
+qx.Proto.setMin = function(vMin) {
+ return this._manager.setMin(vMin);
+}
+
+qx.Proto.getMin = function() {
+ return this._manager.getMin();
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INTERVAL HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._intervalIncrease = null;
+
+qx.Proto._oninterval = function(e)
+{
+ this._timer.stop();
+ this.setInterval(Math.max(this.getMinTimer(), this.getInterval()-this.getTimerDecrease()));
+
+ if (this._intervalMode == "page")
+ {
+ this._pageIncrement();
+ }
+ else
+ {
+ if (this.getInterval() == this.getMinTimer()) {
+ this.setIncrementAmount(this.getAmountGrowth() * this.getIncrementAmount());
+ }
+
+ this._increment();
+ }
+
+ switch(this._intervalIncrease)
+ {
+ case true:
+ if (this.getValue() == this.getMax()) {
+ return;
+ }
+
+ case false:
+ if (this.getValue() == this.getMin()) {
+ return;
+ }
+ }
+
+ this._timer.restartWith(this.getInterval());
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._checkValue = function(acceptEmpty, acceptEdit)
+{
+ var el = this._textfield.getElement();
+
+ if (!el) {
+ return;
+ }
+
+ if (el.value == "")
+ {
+ if (!acceptEmpty)
+ {
+ el.value = this.resetValue();
+ this._textfield.selectAll();
+
+ return;
+ }
+ }
+ else
+ {
+ // cache working variable
+ var val = el.value;
+
+ // fix leading '0'
+ if (val.length > 1)
+ {
+ while(val.charAt(0) == "0") {
+ val = val.substr(1, val.length);
+ }
+
+ var f1 = parseInt(val) || 0;
+
+ if (f1 != el.value) {
+ el.value = f1;
+ return;
+ }
+ }
+
+ // fix for negative integer handling
+ if (val == "-" && acceptEmpty && this.getMin() < 0)
+ {
+ if (el.value != val) {
+ el.value = val;
+ }
+
+ return;
+ }
+
+ // parse the string
+ val = parseInt(val);
+
+ // main check routine
+ var doFix = true;
+ var fixedVal = this._manager._checkValue(val);
+
+ if (isNaN(fixedVal)) {
+ fixedVal = this._manager.getValue();
+ }
+
+ // handle empty string
+ if (acceptEmpty && val == "")
+ {
+ doFix = false;
+ }
+ else if (!isNaN(val))
+ {
+ // check for editmode in keypress events
+ if (acceptEdit)
+ {
+ // fix min/max values
+ if (val > fixedVal && !(val > 0 && fixedVal <= 0) && String(val).length < String(fixedVal).length)
+ {
+ doFix = false;
+ }
+ else if (val < fixedVal && !(val < 0 && fixedVal >= 0) && String(val).length < String(fixedVal).length)
+ {
+ doFix = false;
+ }
+ }
+ }
+
+ // apply value fix
+ if (doFix && el.value != fixedVal) {
+ el.value = fixedVal;
+ }
+
+ // inform manager
+ if (!acceptEdit) {
+ this._manager.setValue(fixedVal);
+ }
+ }
+}
+
+qx.Proto._increment = function() {
+ this._manager.setValue(this._manager.getValue() + ((this._intervalIncrease ? 1 : - 1) * this.getIncrementAmount()));
+}
+
+qx.Proto._pageIncrement = function() {
+ this._manager.setValue(this._manager.getValue() + ((this._intervalIncrease ? 1 : - 1) * this.getPageIncrementAmount()));
+}
+
+qx.Proto._resetIncrements = function()
+{
+ this.resetIncrementAmount();
+ this.resetInterval();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("keypress", this._onkeypress, this);
+ this.removeEventListener("keydown", this._onkeydown, this);
+ this.removeEventListener("keyup", this._onkeyup, this);
+ this.removeEventListener("mousewheel", this._onmousewheel, this);
+
+ if (this._textfield)
+ {
+ this._textfield.removeEventListener("blur", this._onblur, this);
+ this._textfield.removeEventListener("input", this._oninput, this);
+ this._textfield.dispose();
+ this._textfield = null;
+ }
+
+ if (this._buttonlayout)
+ {
+ this._buttonlayout.dispose();
+ this._buttonlayout = null;
+ }
+
+ if (this._upbutton)
+ {
+ this._upbutton.removeEventListener("mousedown", this._onmousedown, this);
+ this._upbutton.dispose();
+ this._upbutton = null;
+ }
+
+ if (this._downbutton)
+ {
+ this._downbutton.removeEventListener("mousedown", this._onmousedown, this);
+ this._downbutton.dispose();
+ this._downbutton = null;
+ }
+
+ if (this._timer)
+ {
+ this._timer.removeEventListener("interval", this._oninterval, this);
+ this._timer.stop();
+ this._timer.dispose();
+ this._timer = null;
+ }
+
+ if (this._manager)
+ {
+ this._manager.removeEventListener("change", this._onchange, this);
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextArea.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextArea.js
new file mode 100644
index 0000000000..5796713417
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextArea.js
@@ -0,0 +1,53 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.TextArea", qx.ui.form.TextField,
+function(vValue)
+{
+ qx.ui.form.TextField.call(this, vValue);
+
+ this.setTagName("textarea");
+ this.removeHtmlProperty("type");
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "text-area" });
+
+qx.OO.addProperty({ name : "wrap", type : "boolean" });
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._modifyWrap = function(propValue, propOldValue, propData) {
+ return this.setStyleProperty("whiteSpace", propValue ? "normal" : "nowrap");
+ }
+}
+else
+{
+ qx.Proto._modifyWrap = function(propValue, propOldValue, propData) {
+ return this.setHtmlProperty("wrap", propValue ? "soft" : "off");
+ }
+}
+
+qx.Proto._computePreferredInnerHeight = function() {
+ return 60;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextField.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextField.js
new file mode 100644
index 0000000000..8ab7005128
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/form/TextField.js
@@ -0,0 +1,538 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+#require(qx.renderer.font.FontCache)
+#after(qx.renderer.font.FontObject)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.form.TextField", qx.ui.basic.Terminator,
+function(vValue)
+{
+ // ************************************************************************
+ // INIT
+ // ************************************************************************
+ qx.ui.basic.Terminator.call(this);
+
+ if (typeof vValue === "string") {
+ this.setValue(vValue);
+ }
+
+
+ // ************************************************************************
+ // BEHAVIOR
+ // ************************************************************************
+ this.setTagName("input");
+ this.setHtmlProperty("type", "text");
+ this.setHtmlAttribute("autocomplete", "OFF");
+ this.setTabIndex(1);
+ this.setSelectable(true);
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+ this.enableInlineEvent("input");
+
+ this.addEventListener("blur", this._onblur);
+ this.addEventListener("focus", this._onfocus);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "text-field" });
+
+qx.OO.addProperty({ name : "value", type : "string", defaultValue : "" });
+qx.OO.addProperty({ name : "maxLength", type : "number" });
+qx.OO.addProperty({ name : "readOnly", type : "boolean" });
+
+qx.OO.addProperty({ name : "selectionStart", type : "number" });
+qx.OO.addProperty({ name : "selectionLength", type : "number" });
+qx.OO.addProperty({ name : "selectionText", type : "string" });
+
+qx.OO.addProperty({ name : "validator", type : "function" });
+
+/*!
+ The font property describes how to paint the font on the widget.
+*/
+qx.OO.addProperty({ name : "font", type : "object", instance : "qx.renderer.font.Font", convert : qx.renderer.font.FontCache, allowMultipleArguments : true });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLONING
+---------------------------------------------------------------------------
+*/
+
+// Extend ignore list with selection properties
+qx.Proto._clonePropertyIgnoreList += ",selectionStart,selectionLength,selectionText";
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ propValue ? this.removeHtmlAttribute("disabled") : this.setHtmlAttribute("disabled", "disabled");
+ return qx.ui.basic.Terminator.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+}
+
+qx.Proto._modifyValue = function(propValue, propOldValue, propData)
+{
+ this._inValueProperty = true;
+ this.setHtmlProperty(propData.name, propValue == null ? "" : propValue);
+ delete this._inValueProperty;
+
+ return true;
+}
+
+qx.Proto._modifyMaxLength = function(propValue, propOldValue, propData) {
+ return propValue ? this.setHtmlProperty(propData.name, propValue) : this.removeHtmlProperty(propData.name);
+}
+
+qx.Proto._modifyReadOnly = function(propValue, propOldValue, propData) {
+ return propValue ? this.setHtmlProperty(propData.name, propData.name) : this.removeHtmlProperty(propData.name);
+}
+
+qx.Proto._modifyFont = function(propValue, propOldValue, propData)
+{
+ this._invalidatePreferredInnerDimensions();
+
+ if (propValue) {
+ propValue._applyWidget(this);
+ } else if (propOldValue) {
+ propOldValue._resetWidget(this);
+ }
+
+ return true;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getComputedValue = function(e)
+{
+ this._visualPropertyCheck();
+ return this.getElement().value;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ VALIDATION
+---------------------------------------------------------------------------
+*/
+
+qx.ui.form.TextField.createRegExpValidator = function(vRegExp)
+{
+ return function(s) {
+ return vRegExp.test(s);
+ }
+}
+
+qx.Proto.isValid = function()
+{
+ var vValidator = this.getValidator();
+ return !vValidator || vValidator(this.getValue());
+}
+
+qx.Proto.isComputedValid = function()
+{
+ var vValidator = this.getValidator();
+ return !vValidator || vValidator(this.getComputedValue());
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PREFERRED DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computePreferredInnerWidth = function() {
+ return 120;
+}
+
+qx.Proto._computePreferredInnerHeight = function() {
+ return 15;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ BROWSER QUIRKS
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ qx.Proto._firstInputFixApplied = false;
+
+ qx.Proto._afterAppear = function()
+ {
+ qx.ui.basic.Terminator.prototype._afterAppear.call(this);
+
+ if (!this._firstInputFixApplied) {
+ qx.client.Timer.once(this._ieFirstInputFix, this, 1);
+ }
+ }
+
+ /*!
+ Fix IE's input event for filled text fields
+ */
+ qx.Proto._ieFirstInputFix = function()
+ {
+ this._inValueProperty = true;
+ this.getElement().value = this.getValue() === null ? "" : this.getValue();
+ this._firstInputFixApplied = true;
+ delete this._inValueProperty;
+ }
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._textOnFocus = null;
+
+qx.Proto._ontabfocus = function(e) {
+ this.selectAll();
+}
+
+qx.Proto._onfocus = function(e) {
+ this._textOnFocus = this.getComputedValue();
+}
+
+qx.Proto._onblur = function(e)
+{
+ var vValue = this.getComputedValue().toString();
+
+ if (this._textOnFocus != vValue) {
+ this.setValue(vValue);
+ }
+
+ this.setSelectionLength(0);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CROSS-BROWSER SELECTION HANDLING
+---------------------------------------------------------------------------
+*/
+
+if (qx.sys.Client.getInstance().isMshtml())
+{
+ /*!
+ Microsoft Documentation:
+ http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createrange.asp
+ http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_textrange.asp
+ */
+
+ qx.Proto._getRange = function()
+ {
+ this._visualPropertyCheck();
+ return this.getElement().createTextRange();
+ }
+
+ qx.Proto._getSelectionRange = function()
+ {
+ this._visualPropertyCheck();
+ return this.getTopLevelWidget().getDocumentElement().selection.createRange();
+ }
+
+ qx.Proto.setSelectionStart = function(vStart)
+ {
+ this._visualPropertyCheck();
+
+ var vText = this.getElement().value;
+
+ // a bit hacky, special handling for line-breaks
+ var i = 0;
+ while (i<vStart)
+ {
+ // find next line break
+ i = vText.indexOf("\r\n", i);
+
+ if (i == -1) {
+ break;
+ }
+
+ vStart--;
+ i++;
+ }
+
+ var vRange = this._getRange();
+
+ vRange.collapse();
+ vRange.move("character", vStart);
+ vRange.select();
+ }
+
+ qx.Proto.getSelectionStart = function()
+ {
+ this._visualPropertyCheck();
+
+ var vSelectionRange = this._getSelectionRange();
+
+ if (!this.getElement().contains(vSelectionRange.parentElement())) {
+ return -1;
+ }
+
+ var vRange = this._getRange();
+
+ vRange.setEndPoint("EndToStart", vSelectionRange);
+ return vRange.text.length;
+ }
+
+ qx.Proto.setSelectionLength = function(vLength)
+ {
+ this._visualPropertyCheck();
+
+ var vSelectionRange = this._getSelectionRange();
+
+ if (!this.getElement().contains(vSelectionRange.parentElement())) {
+ return;
+ }
+
+ vSelectionRange.collapse();
+ vSelectionRange.moveEnd("character", vLength);
+ vSelectionRange.select();
+ }
+
+ qx.Proto.getSelectionLength = function()
+ {
+ this._visualPropertyCheck();
+
+ var vSelectionRange = this._getSelectionRange();
+
+ if (!this.getElement().contains(vSelectionRange.parentElement())) {
+ return 0;
+ }
+
+ return vSelectionRange.text.length;
+ }
+
+ qx.Proto.setSelectionText = function(vText)
+ {
+ this._visualPropertyCheck();
+
+ var vStart = this.getSelectionStart();
+ var vSelectionRange = this._getSelectionRange();
+
+ if (!this.getElement().contains(vSelectionRange.parentElement())) {
+ return;
+ }
+
+ vSelectionRange.text = vText;
+
+ // apply text to internal storage
+ this.setValue(this.getElement().value);
+
+ // recover selection (to behave the same gecko does)
+ this.setSelectionStart(vStart);
+ this.setSelectionLength(vText.length);
+
+ return true;
+ }
+
+ qx.Proto.getSelectionText = function()
+ {
+ this._visualPropertyCheck();
+
+ var vSelectionRange = this._getSelectionRange();
+
+ if (!this.getElement().contains(vSelectionRange.parentElement())) {
+ return "";
+ }
+
+ return vSelectionRange.text;
+ }
+
+ qx.Proto.selectAll = function()
+ {
+ this._visualPropertyCheck();
+
+ if (this.getValue() != null)
+ {
+ this.setSelectionStart(0);
+ this.setSelectionLength(this.getValue().length);
+ }
+
+ // to be sure we get the element selected
+ this.getElement().select();
+ }
+
+ qx.Proto.selectFromTo = function(vStart, vEnd)
+ {
+ this._visualPropertyCheck();
+
+ this.setSelectionStart(vStart);
+ this.setSelectionLength(vEnd-vStart);
+ }
+}
+else
+{
+ qx.Proto.setSelectionStart = function(vStart)
+ {
+ this._visualPropertyCheck();
+ this.getElement().selectionStart = vStart;
+ }
+
+ qx.Proto.getSelectionStart = function()
+ {
+ this._visualPropertyCheck();
+ return this.getElement().selectionStart;
+ }
+
+ qx.Proto.setSelectionLength = function(vLength)
+ {
+ this._visualPropertyCheck();
+
+ var el = this.getElement();
+ if (qx.util.Validation.isValidString(el.value)) {
+ el.selectionEnd = el.selectionStart + vLength;
+ }
+ }
+
+ qx.Proto.getSelectionLength = function()
+ {
+ this._visualPropertyCheck();
+
+ var el = this.getElement();
+ return el.selectionEnd - el.selectionStart;
+ }
+
+ qx.Proto.setSelectionText = function(vText)
+ {
+ this._visualPropertyCheck();
+
+ var el = this.getElement();
+
+ var vOldText = el.value;
+ var vStart = el.selectionStart;
+
+ var vOldTextBefore = vOldText.substr(0, vStart);
+ var vOldTextAfter = vOldText.substr(el.selectionEnd);
+
+ var vValue = el.value = vOldTextBefore + vText + vOldTextAfter;
+
+ // recover selection
+ el.selectionStart = vStart;
+ el.selectionEnd = vStart + vText.length;
+
+ // apply new value to internal cache
+ this.setValue(vValue);
+
+ return true;
+ }
+
+ qx.Proto.getSelectionText = function()
+ {
+ this._visualPropertyCheck();
+
+ return this.getElement().value.substr(this.getSelectionStart(), this.getSelectionLength());
+ }
+
+ qx.Proto.selectAll = function()
+ {
+ this._visualPropertyCheck();
+
+ this.getElement().select();
+ }
+
+ qx.Proto.selectFromTo = function(vStart, vEnd)
+ {
+ this._visualPropertyCheck();
+
+ var el = this.getElement();
+ el.selectionStart = vStart;
+ el.selectionEnd = vEnd;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("blur", this._onblur);
+ this.removeEventListener("focus", this._onfocus);
+
+ qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/CheckGroupBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/CheckGroupBox.js
new file mode 100644
index 0000000000..9dcca10179
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/CheckGroupBox.js
@@ -0,0 +1,39 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.groupbox.CheckGroupBox", qx.ui.groupbox.GroupBox,
+function(vLegend) {
+ qx.ui.groupbox.GroupBox.call(this, vLegend);
+});
+
+qx.Proto._createLegendObject = function()
+{
+ this._legendObject = new qx.ui.form.CheckBox;
+ this._legendObject.setAppearance("check-box-field-set-legend");
+ this._legendObject.setChecked(true);
+
+ this.add(this._legendObject);
+}
+
+qx.Proto.setIcon = qx.Proto.getIcon = null;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/GroupBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/GroupBox.js
new file mode 100644
index 0000000000..2457c3bdd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/GroupBox.js
@@ -0,0 +1,156 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.groupbox.GroupBox", qx.ui.layout.CanvasLayout,
+function(vLegend, vIcon)
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+
+ // ************************************************************************
+ // SUB WIDGETS
+ // ************************************************************************
+ this._createFrameObject();
+ this._createLegendObject();
+
+
+ // ************************************************************************
+ // INIT
+ // ************************************************************************
+ this.setLegend(vLegend);
+
+ if (qx.util.Validation.isValidString(vIcon)) {
+ this.setIcon(vIcon);
+ }
+
+
+ // ************************************************************************
+ // REMAPPING
+ // ************************************************************************
+ this.remapChildrenHandlingTo(this._frameObject);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "field-set" });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SUB WIDGET CREATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createLegendObject = function()
+{
+ this._legendObject = new qx.ui.basic.Atom;
+ this._legendObject.setAppearance("field-set-legend");
+
+ this.add(this._legendObject);
+}
+
+qx.Proto._createFrameObject = function()
+{
+ this._frameObject = new qx.ui.layout.CanvasLayout;
+ this._frameObject.setAppearance("field-set-frame");
+
+ this.add(this._frameObject);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ GETTER FOR SUB WIDGETS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getFrameObject = function() {
+ return this._frameObject;
+}
+
+qx.Proto.getLegendObject = function() {
+ return this._legendObject;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SETTER/GETTER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setLegend = function(vLegend) {
+ this._legendObject.setLabel(vLegend);
+}
+
+qx.Proto.getLegend = function() {
+ return this._legendObject.getLabel();
+}
+
+qx.Proto.setIcon = function(vIcon) {
+ this._legendObject.setIcon(vIcon);
+}
+
+qx.Proto.getIcon = function() {
+ this._legendObject.getIcon();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._legendObject)
+ {
+ this._legendObject.dispose();
+ this._legendObject = null;
+ }
+
+ if (this._frameObject)
+ {
+ this._frameObject.dispose();
+ this._frameObject = null;
+ }
+
+ return qx.ui.layout.CanvasLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/RadioGroupBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/RadioGroupBox.js
new file mode 100644
index 0000000000..bcb230e6b7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/groupbox/RadioGroupBox.js
@@ -0,0 +1,39 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_form)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.groupbox.RadioGroupBox", qx.ui.groupbox.GroupBox,
+function(vLegend) {
+ qx.ui.groupbox.GroupBox.call(this, vLegend);
+});
+
+qx.Proto._createLegendObject = function()
+{
+ this._legendObject = new qx.ui.form.RadioButton;
+ this._legendObject.setAppearance("radio-button-field-set-legend");
+ this._legendObject.setChecked(true);
+
+ this.add(this._legendObject);
+}
+
+qx.Proto.setIcon = qx.Proto.getIcon = null;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/BoxLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/BoxLayout.js
new file mode 100644
index 0000000000..c31e9c796c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/BoxLayout.js
@@ -0,0 +1,273 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.BoxLayout", qx.ui.core.Parent,
+function(vOrientation)
+{
+ qx.ui.core.Parent.call(this);
+
+ // apply orientation
+ if (qx.util.Validation.isValidString(vOrientation)) {
+ this.setOrientation(vOrientation);
+ }
+});
+
+qx.ui.layout.BoxLayout.STR_REVERSED = "-reversed";
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The orientation of the layout control. Allowed values are "horizontal" (default) and "vertical".
+*/
+qx.OO.addProperty({ name : "orientation", type : "string", possibleValues : [ "horizontal", "vertical" ], addToQueueRuntime : true });
+
+/*!
+ The spacing between childrens. Could be any positive integer value.
+*/
+qx.OO.addProperty({ name : "spacing", type : "number", defaultValue : 0, addToQueueRuntime : true, impl : "layout" });
+
+/*!
+ The horizontal align of the children. Allowed values are: "left", "center" and "right"
+*/
+qx.OO.addProperty({ name : "horizontalChildrenAlign", type : "string", defaultValue : "left", possibleValues : [ "left", "center", "right" ], impl : "layoutOrder", addToQueueRuntime : true });
+
+/*!
+ The vertical align of the children. Allowed values are: "top", "middle" and "bottom"
+*/
+qx.OO.addProperty({ name : "verticalChildrenAlign", type : "string", defaultValue : "top", possibleValues : [ "top", "middle", "bottom" ], impl : "layoutOrder", addToQueueRuntime : true });
+
+/*!
+ Should the children be layouted in reverse order?
+*/
+qx.OO.addProperty({ name : "reverseChildrenOrder", type : "boolean", defaultValue : false, impl : "layoutOrder", addToQueueRuntime : true });
+
+/*!
+ Should the widgets be stretched to the available width (orientation==vertical) or height (orientation==horizontal)?
+ This only applies if the child has not configured a own value for this axis.
+*/
+qx.OO.addProperty({ name : "stretchChildrenOrthogonalAxis", type : "boolean", defaultValue : true, addToQueueRuntime : true });
+
+/*!
+ If there are min/max values in combination with flex try to optimize placement.
+ This is more complex and produces more time for the layouter but sometimes this feature is needed.
+*/
+qx.OO.addProperty({ name : "useAdvancedFlexAllocation", type : "boolean", defaultValue : false, addToQueueRuntime : true });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return this.getOrientation() == "vertical" ? new qx.renderer.layout.VerticalBoxLayoutImpl(this) : new qx.renderer.layout.HorizontalBoxLayoutImpl(this);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HELPERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._layoutHorizontal = false;
+qx.Proto._layoutVertical = false;
+qx.Proto._layoutMode = "left";
+
+qx.Proto.isHorizontal = function() {
+ return this._layoutHorizontal;
+}
+
+qx.Proto.isVertical = function() {
+ return this._layoutVertical;
+}
+
+qx.Proto.getLayoutMode = function()
+{
+ if (this._layoutMode == null) {
+ this._updateLayoutMode();
+ }
+
+ return this._layoutMode;
+}
+
+qx.Proto._updateLayoutMode = function()
+{
+ this._layoutMode = this._layoutVertical ? this.getVerticalChildrenAlign() : this.getHorizontalChildrenAlign();
+
+ if (this.getReverseChildrenOrder()) {
+ this._layoutMode += qx.ui.layout.BoxLayout.STR_REVERSED;
+ }
+}
+
+qx.Proto._invalidateLayoutMode = function() {
+ this._layoutMode = null;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyOrientation = function(propValue, propOldValue, propData)
+{
+ // update fast access variables
+ this._layoutHorizontal = propValue == "horizontal";
+ this._layoutVertical = propValue == "vertical";
+
+ // Layout Implementation
+ if (this._layoutImpl)
+ {
+ this._layoutImpl.dispose();
+ this._layoutImpl = null;
+ }
+
+ if (qx.util.Validation.isValidString(propValue)) {
+ this._layoutImpl = this._createLayoutImpl();
+ }
+
+ // call other core modifier
+ return this._modifyLayoutOrder(propValue, propOldValue, propData);
+}
+
+qx.Proto._modifyLayoutOrder = function(propValue, propOldValue, propData)
+{
+ // update layout mode
+ this._invalidateLayoutMode();
+
+ // call other core modifier
+ return this._modifyLayout(propValue, propOldValue, propData);
+}
+
+qx.Proto._modifyLayout = function(propValue, propOldValue, propData)
+{
+ // invalidate inner preferred dimensions
+ this._invalidatePreferredInnerDimensions();
+
+ // accumulated width needs to be invalidated
+ this._invalidateAccumulatedChildrenOuterWidth();
+ this._invalidateAccumulatedChildrenOuterHeight();
+
+ // make property handling happy :)
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ACCUMULATED CHILDREN WIDTH/HEIGHT
+--------------------------------------------------------------------------------
+
+ Needed for center/middle and right/bottom alignment
+
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "accumulatedChildrenOuterWidth", defaultValue : null });
+qx.OO.addCachedProperty({ name : "accumulatedChildrenOuterHeight", defaultValue : null });
+
+qx.Proto._computeAccumulatedChildrenOuterWidth = function()
+{
+ var ch=this.getVisibleChildren(), chc, i=-1, sp=this.getSpacing(), s=-sp;
+
+ while(chc=ch[++i]) {
+ s += chc.getOuterWidth() + sp;
+ }
+
+ return s;
+}
+
+qx.Proto._computeAccumulatedChildrenOuterHeight = function()
+{
+ var ch=this.getVisibleChildren(), chc, i=-1, sp=this.getSpacing(), s=-sp;
+
+ while(chc=ch[++i]) {
+ s += chc.getOuterHeight() + sp;
+ }
+
+ return s;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STRETCHING SUPPORT
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._recomputeChildrenStretchingX = function()
+{
+ var ch=this.getVisibleChildren(), chc, i=-1;
+
+ while(chc=ch[++i])
+ {
+ if (chc._recomputeStretchingX() && chc._recomputeBoxWidth()) {
+ chc._recomputeOuterWidth();
+ }
+ }
+}
+
+qx.Proto._recomputeChildrenStretchingY = function()
+{
+ var ch=this.getVisibleChildren(), chc, i=-1;
+
+ while(chc=ch[++i])
+ {
+ if (chc._recomputeStretchingY() && chc._recomputeBoxHeight()) {
+ chc._recomputeOuterHeight();
+ }
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/CanvasLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/CanvasLayout.js
new file mode 100644
index 0000000000..977d6a8525
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/CanvasLayout.js
@@ -0,0 +1,45 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_core)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.CanvasLayout", qx.ui.core.Parent,
+function() {
+ qx.ui.core.Parent.call(this);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return new qx.renderer.layout.CanvasLayoutImpl(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/DockLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/DockLayout.js
new file mode 100644
index 0000000000..7002036e5f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/DockLayout.js
@@ -0,0 +1,116 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.DockLayout", qx.ui.core.Parent,
+function() {
+ qx.ui.core.Parent.call(this);
+});
+
+/*!
+ The layout mode (in which order the children should be layouted)
+*/
+qx.OO.addProperty({ name : "mode", type : "string", defaultValue : "vertical", possibleValues : [ "vertical", "horizontal", "ordered" ], addToQueueRuntime : true });
+
+/*
+ Overwrite from qx.ui.core.Widget, we do not support 'auto' and 'flex'
+*/
+qx.OO.changeProperty({ name : "width", addToQueue : true, unitDetection : "pixelPercent" });
+qx.OO.changeProperty({ name : "minWidth", defaultValue : -Infinity, addToQueue : true, unitDetection : "pixelPercent" });
+qx.OO.changeProperty({ name : "minWidth", defaultValue : -Infinity, addToQueue : true, unitDetection : "pixelPercent" });
+qx.OO.changeProperty({ name : "height", addToQueue : true, unitDetection : "pixelPercent" });
+qx.OO.changeProperty({ name : "minHeight", defaultValue : -Infinity, addToQueue : true, unitDetection : "pixelPercent" });
+qx.OO.changeProperty({ name : "minHeight", defaultValue : -Infinity, addToQueue : true, unitDetection : "pixelPercent" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return new qx.renderer.layout.DockLayoutImpl(this);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ENHANCED CHILDREN FEATURES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Add multiple childrens and make them left aligned
+*/
+qx.Proto.addLeft = function() {
+ this._addAlignedHorizontal("left", arguments);
+}
+
+/*!
+ Add multiple childrens and make them right aligned
+*/
+qx.Proto.addRight = function() {
+ this._addAlignedHorizontal("right", arguments);
+}
+
+/*!
+ Add multiple childrens and make them top aligned
+*/
+qx.Proto.addTop = function() {
+ this._addAlignedVertical("top", arguments);
+}
+
+/*!
+ Add multiple childrens and make them bottom aligned
+*/
+qx.Proto.addBottom = function() {
+ this._addAlignedVertical("bottom", arguments);
+}
+
+qx.Proto._addAlignedVertical = function(vAlign, vArgs)
+{
+ for (var i=0, l=vArgs.length; i<l; i++) {
+ vArgs[i].setVerticalAlign(vAlign);
+ }
+
+ this.add.apply(this, vArgs);
+}
+
+qx.Proto._addAlignedHorizontal = function(vAlign, vArgs)
+{
+ for (var i=0, l=vArgs.length; i<l; i++) {
+ vArgs[i].setHorizontalAlign(vAlign);
+ }
+
+ this.add.apply(this, vArgs);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/FlowLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/FlowLayout.js
new file mode 100644
index 0000000000..d2c1d934b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/FlowLayout.js
@@ -0,0 +1,106 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.FlowLayout", qx.ui.core.Parent,
+function() {
+ qx.ui.core.Parent.call(this);
+});
+
+/*!
+ The spacing between childrens. Could be any positive integer value.
+*/
+qx.OO.addProperty({ name : "horizontalSpacing", type : "number", defaultValue : 0, addToQueueRuntime : true, impl : "layout" });
+
+/*!
+ The spacing between childrens. Could be any positive integer value.
+*/
+qx.OO.addProperty({ name : "verticalSpacing", type : "number", defaultValue : 0, addToQueueRuntime : true, impl : "layout" });
+
+/*!
+ The horizontal align of the children. Allowed values are: "left" and "right"
+*/
+qx.OO.addProperty({ name : "horizontalChildrenAlign", type : "string", defaultValue : "left", possibleValues : [ "left", "right" ], addToQueueRuntime : true });
+
+/*!
+ The vertical align of the children. Allowed values are: "top" and "bottom"
+*/
+qx.OO.addProperty({ name : "verticalChildrenAlign", type : "string", defaultValue : "top", possibleValues : [ "top", "bottom" ], addToQueueRuntime : true });
+
+/*!
+ Should the children be layouted in reverse order?
+*/
+qx.OO.addProperty({ name : "reverseChildrenOrder", type : "boolean", defaultValue : false, addToQueueRuntime : true, impl : "layout" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return new qx.renderer.layout.FlowLayoutImpl(this);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIMENSION CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._changeInnerWidth = function(vNew, vOld)
+{
+ qx.ui.core.Parent.prototype._changeInnerWidth.call(this, vNew, vOld);
+
+ // allow 'auto' values for height to update when the inner width changes
+ this._invalidatePreferredInnerHeight();
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyLayout = function(propValue, propOldValue, propData)
+{
+ // invalidate inner preferred dimensions
+ this._invalidatePreferredInnerDimensions();
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/GridLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/GridLayout.js
new file mode 100644
index 0000000000..d823c5b9d9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/GridLayout.js
@@ -0,0 +1,864 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.GridLayout", qx.ui.core.Parent,
+function()
+{
+ qx.ui.core.Parent.call(this);
+
+ this._columnData = [];
+ this._rowData = [];
+
+ this._spans = [];
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The spacing between childrens. Could be any positive integer value.
+*/
+qx.OO.addProperty({ name : "horizontalSpacing", type : "number", defaultValue : 0, addToQueueRuntime : true, impl : "layout" });
+
+/*!
+ The spacing between childrens. Could be any positive integer value.
+*/
+qx.OO.addProperty({ name : "verticalSpacing", type : "number", defaultValue : 0, addToQueueRuntime : true, impl : "layout" });
+
+/*!
+ The horizontal align of the children. Allowed values are: "left", "center" and "right"
+*/
+qx.OO.addProperty({ name : "horizontalChildrenAlign", type : "string", defaultValue : "left", possibleValues : [ "left", "center", "right" ], addToQueueRuntime : true });
+
+/*!
+ The vertical align of the children. Allowed values are: "top", "middle" and "bottom"
+*/
+qx.OO.addProperty({ name : "verticalChildrenAlign", type : "string", defaultValue : "top", possibleValues : [ "top", "middle", "bottom" ], addToQueueRuntime : true });
+
+/*!
+ Cell padding top of all cells, if not locally defined
+*/
+qx.OO.addProperty({ name : "cellPaddingTop", type : "number" });
+
+/*!
+ Cell padding right of all cells, if not locally defined
+*/
+qx.OO.addProperty({ name : "cellPaddingRight", type : "number" });
+
+/*!
+ Cell padding bottom of all cells, if not locally defined
+*/
+qx.OO.addProperty({ name : "cellPaddingBottom", type : "number" });
+
+/*!
+ Cell padding left of all cells, if not locally defined
+*/
+qx.OO.addProperty({ name : "cellPaddingLeft", type : "number" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return new qx.renderer.layout.GridLayoutImpl(this);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CORE FUNCTIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.add = function(vChild, vCol, vRow)
+{
+ vChild._col = vCol;
+ vChild._row = vRow;
+
+ if (this.isFillCell(vCol, vRow)) {
+ throw new Error("Could not insert child " + vChild + " into a fill cell: " + vCol + "x" + vRow);
+ }
+
+ qx.ui.core.Parent.prototype.add.call(this, vChild);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyLayout = function(propValue, propOldValue, propData)
+{
+ // invalidate inner preferred dimensions
+ this._invalidatePreferredInnerDimensions();
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ GRID SETUP
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._syncDataFields = function(vData, vOldLength, vNewLength)
+{
+ if (vNewLength > vOldLength)
+ {
+ for (var i=vOldLength; i<vNewLength; i++) {
+ vData[i] = {};
+ }
+ }
+ else if (vOldLength > vNewLength)
+ {
+ vData.splice(vNewLength, vOldLength - vNewLength);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ GRID SETUP: COLUMNS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._columnCount = 0;
+
+qx.Proto.setColumnCount = function(vCount)
+{
+ this._columnCount = vCount;
+ this._syncColumnDataFields();
+}
+
+qx.Proto.getColumnCount = function() {
+ return this._columnCount;
+}
+
+qx.Proto.addColumn = function()
+{
+ this._columnCount++;
+ this._syncColumnDataFields();
+}
+
+qx.Proto.removeColumn = function()
+{
+ if (this._columnCount > 0)
+ {
+ this._columnCount--;
+ this._syncColumnDataFields();
+ }
+}
+
+qx.Proto._syncColumnDataFields = function()
+{
+ var vData = this._columnData;
+ var vOldLength = vData.length;
+ var vNewLength = this._columnCount;
+
+ this._syncDataFields(vData, vOldLength, vNewLength);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ GRID SETUP: ROWS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._rowCount = 0;
+
+qx.Proto.setRowCount = function(vCount)
+{
+ this._rowCount = vCount;
+ this._syncRowDataFields();
+}
+
+qx.Proto.getRowCount = function() {
+ return this._rowCount;
+}
+
+qx.Proto.addRow = function()
+{
+ this._rowCount++;
+ this._syncRowDataFields();
+}
+
+qx.Proto.removeRow = function()
+{
+ if (this._rowCount > 0)
+ {
+ this._rowCount--;
+ this._syncRowDataFields();
+ }
+}
+
+qx.Proto._syncRowDataFields = function()
+{
+ var vData = this._rowData;
+ var vOldLength = vData.length;
+ var vNewLength = this._rowCount;
+
+ this._syncDataFields(vData, vOldLength, vNewLength);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA HANDLING: COLUMNS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._getColumnProperty = function(vColumnIndex, vProperty)
+{
+ try
+ {
+ return this._columnData[vColumnIndex][vProperty] || null;
+ }
+ catch(ex)
+ {
+ this.error("Error while getting column property (" + vColumnIndex + "|" + vProperty + ")", ex);
+ return null;
+ }
+}
+
+qx.Proto._setupColumnProperty = function(vColumnIndex, vProperty, vValue)
+{
+ this._columnData[vColumnIndex][vProperty] = vValue;
+ this._invalidateColumnLayout();
+}
+
+qx.Proto._removeColumnProperty = function(vColumnIndex, vProperty, vValue)
+{
+ delete this._columnData[vColumnIndex][vProperty];
+ this._invalidateColumnLayout();
+}
+
+qx.Proto._invalidateColumnLayout = function()
+{
+ if (!this._initialLayoutDone || !this._isDisplayable) {
+ return;
+ }
+
+ this.forEachVisibleChild(function() {
+ this.addToQueue("width");
+ });
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DATA HANDLING: ROWS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._getRowProperty = function(vRowIndex, vProperty)
+{
+ try
+ {
+ return this._rowData[vRowIndex][vProperty] || null;
+ }
+ catch(ex)
+ {
+ this.error("Error while getting row property (" + vRowIndex + "|" + vProperty + ")", ex);
+ return null;
+ }
+}
+
+qx.Proto._setupRowProperty = function(vRowIndex, vProperty, vValue)
+{
+ this._rowData[vRowIndex][vProperty] = vValue;
+ this._invalidateRowLayout();
+}
+
+qx.Proto._removeRowProperty = function(vRowIndex, vProperty, vValue)
+{
+ delete this._rowData[vRowIndex][vProperty];
+ this._invalidateRowLayout();
+}
+
+qx.Proto._invalidateRowLayout = function()
+{
+ if (!this._initialLayoutDone || !this._isDisplayable) {
+ return;
+ }
+
+ this.forEachVisibleChild(function() {
+ this.addToQueue("height");
+ });
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES: CELL DIMENSIONS
+---------------------------------------------------------------------------
+*/
+
+// SETTER
+
+qx.Proto.setColumnWidth = function(vIndex, vValue)
+{
+ this._setupColumnProperty(vIndex, "widthValue", vValue);
+
+ var vType = qx.ui.core.Parent.prototype._evalUnitsPixelPercentAutoFlex(vValue);
+
+ this._setupColumnProperty(vIndex, "widthType", vType);
+
+ var vParsed, vComputed;
+
+ switch(vType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ vParsed = vComputed = Math.round(vValue);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ case qx.ui.core.Widget.TYPE_FLEX:
+ vParsed = parseFloat(vValue);
+ vComputed = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ vParsed = vComputed = null;
+ break;
+
+ default:
+ vParsed = vComputed = null;
+ }
+
+ this._setupColumnProperty(vIndex, "widthParsed", vParsed);
+ this._setupColumnProperty(vIndex, "widthComputed", vComputed);
+}
+
+qx.Proto.setRowHeight = function(vIndex, vValue)
+{
+ this._setupRowProperty(vIndex, "heightValue", vValue);
+
+ var vType = qx.ui.core.Widget.prototype._evalUnitsPixelPercentAutoFlex(vValue);
+ this._setupRowProperty(vIndex, "heightType", vType);
+
+ var vParsed, vComputed;
+
+ switch(vType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ vParsed = vComputed = Math.round(vValue);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ case qx.ui.core.Widget.TYPE_FLEX:
+ vParsed = parseFloat(vValue);
+ vComputed = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ vParsed = vComputed = null;
+ break;
+
+ default:
+ vParsed = vComputed = null;
+ }
+
+ this._setupRowProperty(vIndex, "heightParsed", vParsed);
+ this._setupRowProperty(vIndex, "heightComputed", vComputed);
+}
+
+
+
+// GETTER: BOX
+
+qx.Proto.getColumnBoxWidth = function(vIndex)
+{
+ var vComputed = this._getColumnProperty(vIndex, "widthComputed");
+
+ if (vComputed != null) {
+ return vComputed;
+ }
+
+ var vType = this._getColumnProperty(vIndex, "widthType");
+ var vParsed = this._getColumnProperty(vIndex, "widthParsed");
+ var vComputed = null;
+
+ switch(vType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ vComputed = Math.max(0, vParsed);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ vComputed = this.getInnerWidth() * Math.max(0, vParsed) * 0.01;
+ break;
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ // TODO
+ vComputed = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_FLEX:
+ // TODO
+ vComputed = null;
+ break;
+ }
+
+ this._setupColumnProperty(vIndex, "widthComputed", vComputed);
+ return vComputed;
+}
+
+qx.Proto.getRowBoxHeight = function(vIndex)
+{
+ var vComputed = this._getRowProperty(vIndex, "heightComputed");
+
+ if (vComputed != null) {
+ return vComputed;
+ }
+
+ var vType = this._getRowProperty(vIndex, "heightType");
+ var vParsed = this._getRowProperty(vIndex, "heightParsed");
+ var vComputed = null;
+
+ switch(vType)
+ {
+ case qx.ui.core.Widget.TYPE_PIXEL:
+ vComputed = Math.max(0, vParsed);
+ break;
+
+ case qx.ui.core.Widget.TYPE_PERCENT:
+ vComputed = this.getInnerHeight() * Math.max(0, vParsed) * 0.01;
+ break;
+
+ case qx.ui.core.Widget.TYPE_AUTO:
+ // TODO
+ vComputed = null;
+ break;
+
+ case qx.ui.core.Widget.TYPE_FLEX:
+ // TODO
+ vComputed = null;
+ break;
+ }
+
+ this._setupRowProperty(vIndex, "heightComputed", vComputed);
+ return vComputed;
+}
+
+
+// GETTER: PADDING
+
+qx.Proto.getComputedCellPaddingLeft = function(vCol, vRow) {
+ return this.getColumnPaddingLeft(vCol) || this.getRowPaddingLeft(vRow) || this.getCellPaddingLeft() || 0;
+}
+
+qx.Proto.getComputedCellPaddingRight = function(vCol, vRow) {
+ return this.getColumnPaddingRight(vCol) || this.getRowPaddingRight(vRow) || this.getCellPaddingRight() || 0;
+}
+
+qx.Proto.getComputedCellPaddingTop = function(vCol, vRow) {
+ return this.getRowPaddingTop(vRow) || this.getColumnPaddingTop(vCol) || this.getCellPaddingTop() || 0;
+}
+
+qx.Proto.getComputedCellPaddingBottom = function(vCol, vRow) {
+ return this.getRowPaddingBottom(vRow) || this.getColumnPaddingBottom(vCol) || this.getCellPaddingBottom() || 0;
+}
+
+
+// GETTER: INNER
+
+qx.Proto.getColumnInnerWidth = function(vCol, vRow) {
+ return this.getColumnBoxWidth(vCol) - this.getComputedCellPaddingLeft(vCol, vRow) - this.getComputedCellPaddingRight(vCol, vRow);
+}
+
+qx.Proto.getRowInnerHeight = function(vCol, vRow) {
+ return this.getRowBoxHeight(vRow) - this.getComputedCellPaddingTop(vCol, vRow) - this.getComputedCellPaddingBottom(vCol, vRow);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES: CELL ALIGNMENT
+---------------------------------------------------------------------------
+*/
+
+// SETTER
+
+qx.Proto.setColumnHorizontalAlignment = function(vIndex, vValue) {
+ this._setupColumnProperty(vIndex, "horizontalAlignment", vValue);
+}
+
+qx.Proto.setColumnVerticalAlignment = function(vIndex, vValue) {
+ this._setupColumnProperty(vIndex, "verticalAlignment", vValue);
+}
+
+qx.Proto.setRowHorizontalAlignment = function(vIndex, vValue) {
+ this._setupRowProperty(vIndex, "horizontalAlignment", vValue);
+}
+
+qx.Proto.setRowVerticalAlignment = function(vIndex, vValue) {
+ this._setupRowProperty(vIndex, "verticalAlignment", vValue);
+}
+
+
+
+// GETTER
+
+qx.Proto.getColumnHorizontalAlignment = function(vIndex) {
+ return this._getColumnProperty(vIndex, "horizontalAlignment");
+}
+
+qx.Proto.getColumnVerticalAlignment = function(vIndex) {
+ return this._getColumnProperty(vIndex, "verticalAlignment");
+}
+
+qx.Proto.getRowHorizontalAlignment = function(vIndex) {
+ return this._getRowProperty(vIndex, "horizontalAlignment");
+}
+
+qx.Proto.getRowVerticalAlignment = function(vIndex) {
+ return this._getRowProperty(vIndex, "verticalAlignment");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES: CELL PADDING
+---------------------------------------------------------------------------
+*/
+
+// SETTER
+
+qx.Proto.setColumnPaddingTop = function(vIndex, vValue) {
+ this._setupColumnProperty(vIndex, "paddingTop", vValue);
+}
+
+qx.Proto.setColumnPaddingRight = function(vIndex, vValue) {
+ this._setupColumnProperty(vIndex, "paddingRight", vValue);
+}
+
+qx.Proto.setColumnPaddingBottom = function(vIndex, vValue) {
+ this._setupColumnProperty(vIndex, "paddingBottom", vValue);
+}
+
+qx.Proto.setColumnPaddingLeft = function(vIndex, vValue) {
+ this._setupColumnProperty(vIndex, "paddingLeft", vValue);
+}
+
+qx.Proto.setRowPaddingTop = function(vIndex, vValue) {
+ this._setupRowProperty(vIndex, "paddingTop", vValue);
+}
+
+qx.Proto.setRowPaddingRight = function(vIndex, vValue) {
+ this._setupRowProperty(vIndex, "paddingRight", vValue);
+}
+
+qx.Proto.setRowPaddingBottom = function(vIndex, vValue) {
+ this._setupRowProperty(vIndex, "paddingBottom", vValue);
+}
+
+qx.Proto.setRowPaddingLeft = function(vIndex, vValue) {
+ this._setupRowProperty(vIndex, "paddingLeft", vValue);
+}
+
+
+
+// GETTER
+
+qx.Proto.getColumnPaddingTop = function(vIndex) {
+ return this._getColumnProperty(vIndex, "paddingTop");
+}
+
+qx.Proto.getColumnPaddingRight = function(vIndex) {
+ return this._getColumnProperty(vIndex, "paddingRight");
+}
+
+qx.Proto.getColumnPaddingBottom = function(vIndex) {
+ return this._getColumnProperty(vIndex, "paddingBottom");
+}
+
+qx.Proto.getColumnPaddingLeft = function(vIndex) {
+ return this._getColumnProperty(vIndex, "paddingLeft");
+}
+
+qx.Proto.getRowPaddingTop = function(vIndex) {
+ return this._getRowProperty(vIndex, "paddingTop");
+}
+
+qx.Proto.getRowPaddingRight = function(vIndex) {
+ return this._getRowProperty(vIndex, "paddingRight");
+}
+
+qx.Proto.getRowPaddingBottom = function(vIndex) {
+ return this._getRowProperty(vIndex, "paddingBottom");
+}
+
+qx.Proto.getRowPaddingLeft = function(vIndex) {
+ return this._getRowProperty(vIndex, "paddingLeft");
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIMENSION CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._changeInnerWidth = function(vNew, vOld)
+{
+ for (var i=0, l=this.getColumnCount(); i<l; i++) {
+ if (this._getColumnProperty(i, "widthType") == qx.ui.core.Widget.TYPE_PERCENT) {
+ this._setupColumnProperty(i, "widthComputed", null);
+ }
+ }
+
+ qx.ui.core.Parent.prototype._changeInnerWidth.call(this, vNew, vOld);
+}
+
+qx.Proto._changeInnerHeight = function(vNew, vOld)
+{
+ for (var i=0, l=this.getRowCount(); i<l; i++) {
+ if (this._getRowProperty(i, "heightType") == qx.ui.core.Widget.TYPE_PERCENT) {
+ this._setupRowProperty(i, "heightComputed", null);
+ }
+ }
+
+ qx.ui.core.Parent.prototype._changeInnerHeight.call(this, vNew, vOld);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIMENSION CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getInnerWidthForChild = function(vChild) {
+ return this._getColumnProperty(vChild._col, "widthComputed");
+}
+
+qx.Proto.getInnerHeightForChild = function(vChild) {
+ return this._getRowProperty(vChild._row, "heightComputed");
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SPAN CELLS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.mergeCells = function(vStartCol, vStartRow, vColLength, vRowLength)
+{
+ var vSpans = this._spans;
+ var vLength = vSpans.length;
+
+ // Find end cols/rows
+ var vEndCol = vStartCol + vColLength - 1;
+ var vEndRow = vStartRow + vRowLength - 1;
+
+ if (this._collidesWithSpans(vStartCol, vStartRow, vEndCol, vEndRow))
+ {
+ this.debug("Span collision detected!");
+
+ // Send out warning
+ return false;
+ }
+
+ // Finally store new span entry
+ vSpans.push({ startCol : vStartCol, startRow : vStartRow, endCol : vEndCol, endRow : vEndRow, colLength : vColLength, rowLength : vRowLength });
+
+ // Send out ok
+ return true;
+}
+
+qx.Proto.hasSpans = function() {
+ return this._spans.length > 0;
+}
+
+qx.Proto.getSpanEntry = function(vCol, vRow)
+{
+ for (var i=0, s=this._spans, l=s.length, c; i<l; i++)
+ {
+ c = s[i];
+
+ if (vCol >= c.startCol && vCol <= c.endCol && vRow >= c.startRow && vRow <= c.endRow) {
+ return c;
+ }
+ }
+
+ return null;
+}
+
+qx.Proto.isSpanStart = function(vCol, vRow)
+{
+ for (var i=0, s=this._spans, l=s.length, c; i<l; i++)
+ {
+ c = s[i];
+
+ if (c.startCol == vCol && c.startRow == vRow) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+qx.Proto.isSpanCell = function(vCol, vRow)
+{
+ for (var i=0, s=this._spans, l=s.length, c; i<l; i++)
+ {
+ c = s[i];
+
+ if (vCol >= c.startCol && vCol <= c.endCol && vRow >= c.startRow && vRow <= c.endRow) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+qx.Proto.isFillCell = function(vCol, vRow)
+{
+ for (var i=0, s=this._spans, l=s.length, c; i<l; i++)
+ {
+ c = s[i];
+
+ if (vCol >= c.startCol && vCol <= c.endCol && vRow >= c.startRow && vRow <= c.endRow && (vCol > c.startCol || vRow > c.startRow)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+qx.Proto._collidesWithSpans = function(vStartCol, vStartRow, vEndCol, vEndRow)
+{
+ for (var i=0, s=this._spans, l=s.length, c; i<l; i++)
+ {
+ c = s[i];
+
+ if (vEndCol >= c.startCol && vStartCol <= c.endCol && vEndRow >= c.startRow && vStartRow <= c.endRow ) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+
+ delete this._columnData;
+ delete this._rowData;
+
+ delete this._spans;
+
+ return qx.ui.core.Parent.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/HorizontalBoxLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/HorizontalBoxLayout.js
new file mode 100644
index 0000000000..8eb08fec65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/HorizontalBoxLayout.js
@@ -0,0 +1,29 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.HorizontalBoxLayout", qx.ui.layout.BoxLayout,
+function() {
+ qx.ui.layout.BoxLayout.call(this, "horizontal");
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/VerticalBoxLayout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/VerticalBoxLayout.js
new file mode 100644
index 0000000000..9b188f613a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/layout/VerticalBoxLayout.js
@@ -0,0 +1,29 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_basic)
+#module(ui_layout)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.layout.VerticalBoxLayout", qx.ui.layout.BoxLayout,
+function() {
+ qx.ui.layout.BoxLayout.call(this, "vertical");
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellHtml.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellHtml.js
new file mode 100644
index 0000000000..ed73e294cb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellHtml.js
@@ -0,0 +1,37 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ContentCellHtml", qx.ui.embed.HtmlEmbed,
+function(vHtml)
+{
+ qx.ui.embed.HtmlEmbed.call(this, vHtml);
+
+ this.setSelectable(false);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-content-cell-html" });
+
+qx.ui.listview.ContentCellHtml.empty = {
+ html : ""
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellIconHtml.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellIconHtml.js
new file mode 100644
index 0000000000..7203299e38
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellIconHtml.js
@@ -0,0 +1,39 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ContentCellIconHtml", qx.ui.embed.IconHtmlEmbed,
+function(vHtml, vIcon, vIconWidth, vIconHeight)
+{
+ qx.ui.embed.IconHtmlEmbed.call(this, vHtml, vIcon, vIconWidth, vIconHeight);
+
+ this.setSelectable(false);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-content-cell-icon-html" });
+
+qx.ui.listview.ContentCellIconHtml.empty =
+{
+ icon : "",
+ html : ""
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellImage.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellImage.js
new file mode 100644
index 0000000000..421f2e0f43
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellImage.js
@@ -0,0 +1,57 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ContentCellImage", qx.ui.basic.Image,
+function(vSource, vWidth, vHeight) {
+ qx.ui.basic.Image.call(this, vSource, vWidth, vHeight);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-content-cell-image" });
+
+qx.ui.listview.ContentCellImage.empty = {
+ source : "static/image/blank.gif"
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ CUSTOM SETTER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.setSource = function(vSource)
+{
+ if (this._initialLayoutDone)
+ {
+ return this._updateContent(qx.manager.object.AliasManager.getInstance().resolvePath(vSource == "" ? "static/image/blank.gif" : vSource));
+ }
+ else
+ {
+ return qx.ui.basic.Image.prototype.setSource.call(this, vSource);
+ }
+}
+
+// Omit dimension setup in list-view
+qx.Proto._postApplyDimensions = qx.util.Return.returnTrue;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellLink.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellLink.js
new file mode 100644
index 0000000000..b53338a595
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellLink.js
@@ -0,0 +1,40 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ContentCellLink", qx.ui.embed.LinkEmbed,
+function(vHtml)
+{
+ qx.ui.embed.LinkEmbed.call(this, vHtml);
+
+ // selectable = false will break links in gecko based browsers
+ this.setSelectable(true);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-content-cell-link" });
+
+qx.ui.listview.ContentCellLink.empty =
+{
+ html : "",
+ uri : "#"
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellText.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellText.js
new file mode 100644
index 0000000000..2d4b28544f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ContentCellText.js
@@ -0,0 +1,40 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ContentCellText", qx.ui.embed.TextEmbed,
+function(vText)
+{
+ qx.ui.embed.TextEmbed.call(this, vText);
+
+ this.setStyleProperty("whiteSpace", "nowrap");
+ this.setStyleProperty("textOverflow", "ellipsis");
+
+ this.setSelectable(false);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-content-cell-text" });
+
+qx.ui.listview.ContentCellText.empty = {
+ text : ""
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/Header.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/Header.js
new file mode 100644
index 0000000000..5d11d5bdc0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/Header.js
@@ -0,0 +1,294 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.Header", qx.ui.layout.HorizontalBoxLayout,
+function(vColumns)
+{
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ // This fixes the innerWidth calculation difference between the grid(pane) and the head.
+ this.setPaddingRight(qx.ui.core.Widget.SCROLLBAR_SIZE);
+
+
+ // ************************************************************************
+ // STORE REFERENCE TO CONFIG ENTRY
+ // ************************************************************************
+ this._columns = vColumns;
+
+
+ // ************************************************************************
+ // CREATE HEADER CELLS
+ // ************************************************************************
+ var vHeadCell, vHeadSeparator;
+
+ for (var vCol in vColumns)
+ {
+ vHeadCell = new qx.ui.listview.HeaderCell(vColumns[vCol], vCol);
+ vHeadSeparator = new qx.ui.listview.HeaderSeparator;
+
+ this.add(vHeadCell, vHeadSeparator);
+
+ if (vColumns[vCol].align) {
+ vHeadCell.setHorizontalChildrenAlign(vColumns[vCol].align);
+
+ if (vColumns[vCol].align == "right") {
+ vHeadCell.setReverseChildrenOrder(true);
+ }
+ }
+
+ // store some additional data
+ vColumns[vCol].contentClass = qx.OO.classes["qx.ui.listview.ContentCell" + qx.lang.String.toFirstUp(vColumns[vCol].type || "text")];
+ vColumns[vCol].headerCell = vHeadCell;
+ }
+
+
+ // ************************************************************************
+ // ADD EVENT LISTENERS
+ // ************************************************************************
+ this.addEventListener("mousemove", this._onmousemove);
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("mouseout", this._onmouseout);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-header" });
+
+
+
+/*
+---------------------------------------------------------------------------
+ RESIZE SYNC
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._syncColumnWidth = function(vWidth)
+{
+ var vChildren = this.getChildren();
+ var vColumn = Math.ceil(vChildren.indexOf(this._resizeCell) / 2);
+
+ this.getParent().getPane().setColumnWidth(vColumn, vWidth);
+}
+
+qx.Proto._syncResizeLine = function()
+{
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ var vParent = this.getParent();
+ var vLine = vParent.getResizeLine();
+ var vLeft = qx.dom.Location.getPageBoxLeft(this._resizeSeparator.getElement()) - qx.dom.Location.getPageInnerLeft(this.getElement());
+ var vTop = qx.dom.Dimension.getBoxHeight(vParent.getHeader().getElement());
+ var vHeight = qx.dom.Dimension.getBoxHeight(vParent.getElement()) - vTop;
+
+ vLine._applyRuntimeTop(vTop);
+ vLine._applyRuntimeHeight(vHeight);
+ vLine._applyRuntimeLeft(vLeft);
+
+ vLine.removeStyleProperty("visibility");
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._mshtml = qx.sys.Client.getInstance().isMshtml();
+
+qx.Proto._onmousemove = function(e)
+{
+ if (!this.getParent().getResizable()) {
+ return;
+ }
+
+ if (this._resizingActive)
+ {
+ // Slow down mshtml a bit
+ if (this._mshtml)
+ {
+ if ((new Date).valueOf() - this._last < 50) {
+ return;
+ }
+
+ this._last = (new Date).valueOf();
+ }
+
+ var vNewLeft = e.getPageX();
+ var vSizeDiff = vNewLeft - this._resizeStart;
+ var vCell = this._resizeCell;
+
+ vCell.setWidth(Math.max(4, vCell.getWidth() + vSizeDiff));
+ this._resizeStart = vNewLeft;
+
+ if (this.getParent().getLiveResize())
+ {
+ this._syncColumnWidth(vCell._computeBoxWidth());
+ }
+ else
+ {
+ this._syncResizeLine();
+ }
+ }
+ else
+ {
+ var vTarget = e.getTarget();
+ var vEventPos = e.getPageX();
+ var vTargetPosLeft = qx.dom.Location.getPageBoxLeft(vTarget.getElement());
+ var vTargetPosRight = vTargetPosLeft + qx.dom.Dimension.getBoxWidth(vTarget.getElement());
+
+ var vResizeCursor = false;
+ var vResizeSeparator = null;
+
+ if (vTarget instanceof qx.ui.listview.HeaderSeparator)
+ {
+ vResizeCursor = true;
+ vResizeSeparator = vTarget;
+ }
+ else if ((vEventPos - vTargetPosLeft) <= 10)
+ {
+ // Ignore first column
+ if (!vTarget.isFirstChild())
+ {
+ vResizeCursor = true;
+ vResizeSeparator = vTarget.getPreviousSibling();
+ }
+ }
+ else if ((vTargetPosRight - vEventPos) <= 10)
+ {
+ vResizeCursor = true;
+ vResizeSeparator = vTarget.getNextSibling();
+ }
+
+ if (!(vResizeSeparator instanceof qx.ui.listview.HeaderSeparator))
+ {
+ vResizeSeparator = vTarget = vResizeCursor = null;
+ }
+
+ // Check if child is marked as resizable
+ else if (vResizeSeparator)
+ {
+ var vResizeCell = vResizeSeparator.getPreviousSibling();
+
+ if (vResizeCell && (vResizeCell._computedWidthTypePercent || vResizeCell._config.resizable == false)) {
+ vResizeSeparator = vTarget = vResizeCursor = null;
+ }
+ }
+
+ // Apply global cursor
+ this.getTopLevelWidget().setGlobalCursor(vResizeCursor ? "e-resize" : null);
+
+ // Store data for mousedown
+ this._resizeSeparator = vResizeSeparator;
+ this._resizeTarget = vTarget;
+ }
+}
+
+qx.Proto._onmousedown = function(e)
+{
+ if (!this._resizeSeparator) {
+ return;
+ }
+
+ this._resizingActive = true;
+ this._resizeStart = e.getPageX();
+ this._resizeCell = this._resizeSeparator.getPreviousSibling();
+
+ if (!this.getParent().getLiveResize()) {
+ this._syncResizeLine();
+ }
+
+ this.setCapture(true);
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ if (!this._resizingActive) {
+ return;
+ }
+
+ this._syncColumnWidth(this._resizeCell.getBoxWidth());
+
+ this.setCapture(false);
+ this.getTopLevelWidget().setGlobalCursor(null);
+
+ // Remove hover effect
+ this._resizeTarget.removeState("over");
+
+ // Hide resize line
+ this.getParent().getResizeLine().setStyleProperty("visibility", "hidden");
+
+ this._cleanupResizing();
+}
+
+qx.Proto._onmouseout = function(e)
+{
+ if (!this.getCapture()) {
+ this.getTopLevelWidget().setGlobalCursor(null);
+ }
+}
+
+qx.Proto._cleanupResizing = function()
+{
+ delete this._resizingActive;
+
+ delete this._resizeSeparator;
+ delete this._resizeTarget;
+ delete this._resizeStart;
+ delete this._resizeCell;
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._cleanupResizing();
+
+ this.removeEventListener("mousemove", this._onmousemove);
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("mouseout", this._onmouseout);
+
+ this._columns = null;
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderCell.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderCell.js
new file mode 100644
index 0000000000..46e198b02b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderCell.js
@@ -0,0 +1,255 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.HeaderCell", qx.ui.basic.Atom,
+function(vConfig, vId)
+{
+ qx.ui.basic.Atom.call(this, vConfig.label, vConfig.icon, vConfig.iconWidth, vConfig.iconHeight, vConfig.flash);
+
+ // Text Overflow
+ this.setStyleProperty("textOverflow", "ellipsis");
+
+
+ // ************************************************************************
+ // STORE REFERENCE TO CONFIG ENTRY
+ // ************************************************************************
+ this._config = vConfig;
+ this._id = vId;
+
+
+ // ************************************************************************
+ // ARGUMENTS
+ // ************************************************************************
+ this.setWidth(typeof vConfig.width === "undefined" ? "auto" : vConfig.width);
+
+ if (qx.util.Validation.isValid(vConfig.minWidth)) {
+ this.setMinWidth(vConfig.minWidth);
+ }
+
+ if (qx.util.Validation.isValid(vConfig.maxWidth)) {
+ this.setMaxWidth(vConfig.maxWidth);
+ }
+
+
+ // ************************************************************************
+ // ADDITIONAL CHILDREN
+ // ************************************************************************
+
+ // Re-Enable flex support
+ this.getLayoutImpl().setEnableFlexSupport(true);
+
+ this._spacer = new qx.ui.basic.HorizontalSpacer;
+
+ this._arrowup = new qx.ui.basic.Image("widget/arrows/up.gif");
+ this._arrowup.setVerticalAlign("middle");
+ this._arrowup.setDisplay(false);
+
+ this._arrowdown = new qx.ui.basic.Image("widget/arrows/down.gif");
+ this._arrowdown.setVerticalAlign("middle");
+ this._arrowdown.setDisplay(false);
+
+ this.add(this._spacer, this._arrowup, this._arrowdown);
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mouseout", this._onmouseout);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-header-cell" });
+qx.OO.addProperty({ name : "sortOrder", type : "string", allowNull : true, possibleValues : [ "ascending", "descending" ] });
+
+qx.Class.C_SORT_ASCENDING = "ascending";
+qx.Class.C_SORT_DESCENDING = "descending";
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getView = function() {
+ return this.getParent().getParent();
+}
+
+qx.Proto.getNextSortOrder = function()
+{
+ var vCurrentSortOrder = this.getSortOrder();
+
+ switch(vCurrentSortOrder)
+ {
+ case qx.ui.listview.HeaderCell.C_SORT_ASCENDING:
+ return qx.ui.listview.HeaderCell.C_SORT_DESCENDING;
+
+ default:
+ return qx.ui.listview.HeaderCell.C_SORT_ASCENDING;
+ }
+}
+
+qx.Proto.updateSort = function()
+{
+
+ var vListView = this.getView();
+ var vData = vListView.getData();
+ var vFieldId = this._id;
+ var vSortProp = this._config.sortProp || "text";
+ var vSortMethod = this._config.sortMethod || qx.util.Compare.byString;
+
+ vData.sort(function(a, b) {
+ return vSortMethod(a[vFieldId][vSortProp], b[vFieldId][vSortProp]);
+ });
+
+ if (this.getSortOrder() == qx.ui.listview.HeaderCell.C_SORT_DESCENDING) {
+ vData.reverse();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifySortOrder = function(propValue, propOldValue, propData)
+{
+ var vListView = this.getView();
+
+ switch(propValue)
+ {
+ case qx.ui.listview.HeaderCell.C_SORT_ASCENDING:
+ this._arrowup.setDisplay(true);
+ this._arrowdown.setDisplay(false);
+
+ vListView.setSortBy(this._id);
+ break;
+
+ case qx.ui.listview.HeaderCell.C_SORT_DESCENDING:
+ this._arrowup.setDisplay(false);
+ this._arrowdown.setDisplay(true);
+
+ vListView.setSortBy(this._id);
+ break;
+
+ default:
+ this._arrowup.setDisplay(false);
+ this._arrowdown.setDisplay(false);
+
+ if (vListView.getSortBy() == this._id) {
+ vListView.setSortBy(null);
+ }
+ }
+
+ if (propValue)
+ {
+ this.updateSort();
+ vListView.update();
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseover = function(e) {
+ this.addState("over");
+}
+
+qx.Proto._onmouseout = function(e) {
+ this.removeState("over");
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ if (!this._config.sortable || this.getParent()._resizeSeparator) {
+ return;
+ }
+
+ this.setSortOrder(this.getNextSortOrder());
+ e.stopPropagation();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ delete this._config;
+
+ if (this._spacer)
+ {
+ this._spacer.dispose();
+ this._spacer = null;
+ }
+
+ if (this._arrowup)
+ {
+ this._arrowup.dispose();
+ this._arrowup = null;
+ }
+
+ if (this._arrowdown)
+ {
+ this._arrowdown.dispose();
+ this._arrowdown = null;
+ }
+
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mouseout", this._onmouseout);
+
+ return qx.ui.basic.Atom.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderSeparator.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderSeparator.js
new file mode 100644
index 0000000000..c2058db5d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/HeaderSeparator.js
@@ -0,0 +1,30 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.HeaderSeparator", qx.ui.basic.Terminator,
+function() {
+ qx.ui.basic.Terminator.call(this);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view-header-separator" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListView.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListView.js
new file mode 100644
index 0000000000..567df4075e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListView.js
@@ -0,0 +1,373 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ListView", qx.ui.layout.VerticalBoxLayout,
+function(vData, vColumns)
+{
+ // ************************************************************************
+ // REFERENCES
+ // ************************************************************************
+
+ this._data = vData;
+ this._columns = vColumns;
+
+
+
+ // ************************************************************************
+ // OBJECTS
+ // ************************************************************************
+
+ this._header = new qx.ui.listview.Header(vColumns);
+ this._frame = new qx.ui.layout.HorizontalBoxLayout;
+ this._pane = new qx.ui.listview.ListViewPane(vData, vColumns);
+ this._scroll = new qx.ui.layout.CanvasLayout;
+ this._scrollContent = new qx.ui.basic.Terminator;
+ this._resizeLine = new qx.ui.basic.Terminator;
+
+
+
+ // ************************************************************************
+ // SUPERCLASS CONSTRUCTOR
+ // ************************************************************************
+
+ qx.ui.layout.VerticalBoxLayout.call(this);
+
+
+
+ // ************************************************************************
+ // HEADER
+ // ************************************************************************
+
+ this._header.setParent(this);
+
+
+
+ // ************************************************************************
+ // FRAME
+ // ************************************************************************
+
+ this._frame.setParent(this);
+ this._frame.setHeight("1*");
+ this._frame.setWidth(null);
+
+
+
+ // ************************************************************************
+ // PANE
+ // ************************************************************************
+
+ this._pane.setParent(this._frame);
+
+
+
+ // ************************************************************************
+ // SCROLL AREA
+ // ************************************************************************
+
+ this._scroll.setWidth("auto");
+ this._scroll.setOverflow("scrollY");
+ this._scroll.setParent(this._frame);
+ this._scroll.enableInlineEvent("scroll");
+ this._scroll.addEventListener("scroll", this._onscroll, this);
+
+
+
+ // ************************************************************************
+ // SCROLL CONTENT
+ // ************************************************************************
+
+ this._scrollContent.setWidth(1);
+ this._scrollContent.setParent(this._scroll);
+
+
+
+
+ // ************************************************************************
+ // RESIZE LINE
+ // ************************************************************************
+
+ this._resizeLine.setBackgroundColor("#D6D5D9");
+ this._resizeLine.setWidth(1);
+ this._resizeLine.setParent(this);
+
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+
+ this.addEventListener("mousedown", this._onmousedown);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "list-view" });
+
+qx.OO.addProperty({ name : "resizable", type : "boolean", defaultValue : true });
+qx.OO.addProperty({ name : "liveResize", type : "boolean", defaultValue : false });
+qx.OO.addProperty({ name : "sortBy", type : "string" });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getData = function() {
+ return this._data;
+}
+
+qx.Proto.getColumns = function() {
+ return this._columns;
+}
+
+qx.Proto.getHeader = function() {
+ return this._header;
+}
+
+qx.Proto.getFrame = function() {
+ return this._frame;
+}
+
+qx.Proto.getPane = function() {
+ return this._pane;
+}
+
+qx.Proto.getScroll = function() {
+ return this._scroll;
+}
+
+qx.Proto.getScrollContent = function() {
+ return this._scrollContent;
+}
+
+qx.Proto.getResizeLine = function() {
+ return this._resizeLine;
+}
+
+qx.Proto.update = function()
+{
+ this.updateScrollBar();
+ this.updateContent();
+
+ // ignore updateLayout here, as it is mostly initially used
+}
+
+qx.Proto.updateScrollBar = function() {
+ this._scrollContent.setHeight((this._data.length * this._pane._rowHeight) + this._pane._rowHeight);
+}
+
+/*!
+ Bugfix for gecko 1.8 (the one released with firefox 1.5)
+ Overflow updates if content gets smaller are problematic
+ https://bugzilla.mozilla.org/show_bug.cgi?id=320106
+*/
+if (qx.sys.Client.getInstance().isGecko() && qx.sys.Client.getInstance().getVersion() >= 1.8)
+{
+ qx.Proto._updateScrollBar = qx.Proto.updateScrollBar;
+
+ qx.Proto.updateScrollBar = function()
+ {
+ this._updateScrollBar();
+
+ this._scroll.setStyleProperty("height", "0px");
+ this._scroll.forceHeight(0);
+ this._scroll.setHeight(null);
+ }
+}
+
+qx.Proto.updateContent = function() {
+ this.getPane()._updateRendering(true);
+}
+
+qx.Proto.updateLayout = function() {
+ this.getPane()._updateLayout();
+}
+
+qx.Proto.updateSort = function()
+{
+ var vSortBy = this.getSortBy();
+
+ if (!vSortBy) {
+ return;
+ }
+
+ var vCell = this._getHeaderCell(vSortBy);
+
+ if (vCell) {
+ vCell.updateSort();
+ }
+}
+
+qx.Proto._getHeaderCell = function(vCellId)
+{
+ var vNewEntry = this._columns[vCellId];
+ return vNewEntry ? vNewEntry.headerCell : null;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifySortBy = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ var vOldCell = this._getHeaderCell(propOldValue);
+
+ if (vOldCell) {
+ vOldCell.setSortOrder(null);
+ }
+ }
+
+ if (propValue)
+ {
+ var vNewCell = this._getHeaderCell(propValue);
+
+ if (vNewCell && vNewCell.getSortOrder() == null) {
+ vNewCell.setSortOrder(qx.ui.listview.HeaderCell.C_SORT_ASCENDING);
+ }
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onscroll = function(e) {
+ this._pane._onscroll(e);
+}
+
+qx.Proto._onmousedown = function(e) {
+ this.getFocusRoot().setActiveChild(this.getPane());
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAYBLE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._handleDisplayableCustom = function(vDisplayable, vParent, vHint)
+{
+ qx.ui.layout.VerticalBoxLayout.prototype._handleDisplayableCustom.call(this, vDisplayable, vParent, vHint);
+
+ if (vDisplayable)
+ {
+ this.updateLayout();
+ this.updateScrollBar();
+ this.updateContent();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._header)
+ {
+ this._header.dispose();
+ this._header = null;
+ }
+
+ if (this._frame)
+ {
+ this._frame.dispose();
+ this._frame = null;
+ }
+
+ if (this._pane)
+ {
+ this._pane.dispose();
+ this._pane = null;
+ }
+
+ if (this._scroll)
+ {
+ this._scroll.dispose();
+ this._scroll = null;
+ }
+
+ if (this._scrollContent)
+ {
+ this._scrollContent.dispose();
+ this._scrollContent = null;
+ }
+
+ if (this._resizeLine)
+ {
+ this._resizeLine.dispose();
+ this._resizeLine = null;
+ }
+
+ delete this._columns;
+ delete this._data;
+
+ this.removeEventListener("mousedown", this._onmousedown);
+
+ return qx.ui.layout.VerticalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListViewPane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListViewPane.js
new file mode 100644
index 0000000000..89ae3c6fea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/listview/ListViewPane.js
@@ -0,0 +1,556 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_listview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.listview.ListViewPane", qx.ui.layout.GridLayout,
+function(vData, vColumns)
+{
+ qx.ui.layout.GridLayout.call(this);
+
+ // ************************************************************************
+ // DATA
+ // ************************************************************************
+ // Add aliases for data tables
+ this._data = vData;
+ this._columns = vColumns;
+
+
+ // ************************************************************************
+ // INITIALIZE MANAGER
+ // ************************************************************************
+ this._manager = new qx.manager.selection.VirtualSelectionManager(this);
+
+
+ // ************************************************************************
+ // MOUSE EVENT LISTENER
+ // ************************************************************************
+ // Add handling for mouse wheel events
+ // Needed because the virtual scroll area does not fire browser
+ // understandable events above this pane.
+ this.addEventListener("mousewheel", this._onmousewheel);
+
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("click", this._onclick);
+ this.addEventListener("dblclick", this._ondblclick);
+
+
+ // ************************************************************************
+ // KEY EVENT LISTENER
+ // ************************************************************************
+ this.addEventListener("keypress", this._onkeypress);
+});
+
+qx.OO.changeProperty({ name : "appearance",
+ type : "string",
+ defaultValue : "list-view-pane"
+ });
+
+qx.Proto._rowHeight = 16;
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getView = function() {
+ return this.getParent().getParent();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UPDATER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._lastRowCount = 0;
+
+qx.Proto._updateLayout = function(vUpdate)
+{
+ // this.debug("InnerHeight: " + this._computeInnerHeight());
+ // this.debug("BoxHeight: " + this._computeBoxHeight());
+ // return
+
+ var vColumns = this._columns;
+ var vRowCount = Math.ceil(this.getInnerHeight() / this._rowHeight);
+ var vData = this._data;
+ var vCell;
+
+ // this.debug("Row-Count: " + this._lastRowCount + " => " + vRowCount);
+
+ // Sync cells: Add new ones and configure them
+ if (vRowCount > this._lastRowCount)
+ {
+ for (var i=this._lastRowCount, j=0; i<vRowCount; i++, j=0)
+ {
+ for (var vCol in vColumns)
+ {
+ vCell = new vColumns[vCol].contentClass;
+
+ this.add(vCell, j++, i);
+
+ if (vColumns[vCol].align) {
+ vCell.setStyleProperty("textAlign",
+ vColumns[vCol].align);
+ }
+ }
+ }
+ }
+
+ // Sync cells: Remove existing ones and dispose them
+ else if (this._lastRowCount > vRowCount)
+ {
+ var vChildren = this.getChildren();
+ var vChildrenLength = vChildren.length - 1;
+
+ for (var i=this._lastRowCount; i>vRowCount; i--)
+ {
+ for (var vCol in vColumns)
+ {
+ vCell = vChildren[vChildrenLength--];
+ this.remove(vCell);
+ vCell.dispose();
+ }
+ }
+ }
+
+ // Update row and column count
+ this.setRowCount(vRowCount);
+ if (!vUpdate) {
+ this.setColumnCount(qx.lang.Object.getLength(vColumns));
+ }
+
+ // Apply height to all rows
+ for (var i=0; i<vRowCount; i++) {
+ this.setRowHeight(i, this._rowHeight);
+ }
+
+ if (!vUpdate)
+ {
+ // Apply width and alignment to all columns
+ var vCount = 0;
+ for (var vCol in vColumns)
+ {
+ this.setColumnHorizontalAlignment(vCount, vColumns[vCol].align);
+ this.setColumnWidth(vCount, vColumns[vCol].width);
+
+ vCount++;
+ }
+ }
+
+ // Store last row count
+ this._lastRowCount = vRowCount;
+}
+
+qx.Proto._currentScrollTop = -1;
+
+qx.Proto._updateRendering = function(vForce)
+{
+ if (this._updatingRendering) {
+ return;
+ }
+
+ var vScrollTop = (this._initialLayoutDone
+ ? this.getView().getScroll().getScrollTop()
+ : 0);
+
+ this._updatingRendering = true;
+ this._currentScrollTop = vScrollTop;
+
+ for (var i=0; i<this._rowCount; i++) {
+ this._updateRow(i);
+ }
+
+ delete this._updatingRendering;
+}
+
+qx.Proto._updateRow = function(vRelativeRow)
+{
+ var vData = this._data;
+ var vRowOffset = Math.floor(this._currentScrollTop / this._rowHeight);
+
+ var vColumnCount = this.getColumnCount();
+ var vColumns = this._columns;
+
+ var vChildren = this.getVisibleChildren();
+ var vChild, vEntry, vCol;
+
+ var j=0;
+
+ for (vCol in vColumns)
+ {
+ vEntry = vData[vRowOffset+vRelativeRow];
+ vChild = vChildren[vColumnCount*vRelativeRow+(j++)];
+
+ if (vChild)
+ {
+ if (vEntry && vEntry._selected) {
+ vChild.addState("selected");
+ } else {
+ vChild.removeState("selected");
+ }
+ vChild.set(vEntry
+ ? vEntry[vCol]
+ : vColumns[vCol].empty || vColumns[vCol].contentClass.empty);
+ }
+ }
+}
+
+qx.Proto._onscroll = function(e) {
+ this._updateRendering();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DIMENSION CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._changeInnerHeight = function(vNew, vOld)
+{
+ this._updateLayout(true);
+ this._updateRendering(true);
+
+ return qx.ui.layout.GridLayout.prototype._changeInnerHeight.call(this,
+ vNew,
+ vOld);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER BINDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+qx.Proto.getListViewTarget = function(e)
+{
+ var vEventTop = e.getPageY();
+ var vPaneTop = qx.dom.Location.getPageInnerTop(this.getElement());
+ var vItemNo = Math.floor(this._currentScrollTop / this._rowHeight) +
+ Math.floor((vEventTop - vPaneTop) / this._rowHeight);
+
+ return this._data[vItemNo];
+}
+
+qx.Proto.getSelectedItem = function() {
+ return this.getSelectedItems()[0];
+}
+
+qx.Proto.getSelectedItems = function() {
+ return this._manager.getSelectedItems();
+}
+
+qx.Proto.getData = function() {
+ return this._data;
+}
+
+// use static row height
+qx.Proto.getItemHeight = function(vItem) {
+ return this._rowHeight;
+}
+
+// use the full inner width of the pane
+qx.Proto.getItemWidth = function(vItem) {
+ return qx.dom.Dimension.getInnerWidth(this.getElement());
+}
+
+qx.Proto.getItemLeft = function(vItem) {
+ return 0;
+}
+
+qx.Proto.getItemTop = function(vItem) {
+ return this._data.indexOf(vItem) * this._rowHeight;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MOUSE EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousewheel = function(e)
+{
+ var vScroll = this.getView().getScroll();
+ vScroll.setScrollTop(vScroll.getScrollTop() - (e.getWheelDelta() * 20));
+}
+
+qx.Proto._onmouseover = function(e)
+{
+ var vTarget = this.getListViewTarget(e);
+ if (vTarget) {
+ this._manager.handleMouseOver(vTarget, e);
+ }
+}
+
+qx.Proto._onmousedown = function(e)
+{
+ var vTarget = this.getListViewTarget(e);
+ if (vTarget) {
+ this._manager.handleMouseDown(vTarget, e);
+ }
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vTarget = this.getListViewTarget(e);
+ if (vTarget) {
+ this._manager.handleMouseUp(vTarget, e);
+ }
+}
+
+qx.Proto._onclick = function(e)
+{
+ var vTarget = this.getListViewTarget(e);
+ if (vTarget) {
+ this._manager.handleClick(vTarget, e);
+ }
+}
+
+qx.Proto._ondblclick = function(e)
+{
+ var vTarget = this.getListViewTarget(e);
+ if (vTarget) {
+ this._manager.handleDblClick(vTarget, e);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ KEY EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeypress = function(e)
+{
+ this._manager.handleKeyPress(e);
+ e.preventDefault();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER SELECTION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._updateSelectionState = function(vItem, vIsSelected)
+{
+ vItem._selected = vIsSelected;
+ this._updateItem(vItem);
+}
+
+qx.Proto._updateAnchorState = function(vItem, vIsAnchor)
+{
+ vItem._anchor = vIsAnchor;
+ this._updateItem(vItem);
+}
+
+qx.Proto._updateLeadState = function(vItem, vIsLead)
+{
+ vItem._lead = vIsLead;
+ this._updateItem(vItem);
+}
+
+qx.Proto.scrollItemIntoView = function(vItem, vAlignLeftTop)
+{
+ this.scrollItemIntoViewX(vItem, vAlignLeftTop);
+ this.scrollItemIntoViewY(vItem, vAlignLeftTop);
+}
+
+qx.Proto.scrollItemIntoViewX = function(vItem, vAlignLeft) {
+ // this.error("Not implemented in qx.ui.listview.ListViewPane!");
+}
+
+qx.Proto.scrollItemIntoViewY = function(vItem, vAlignTop)
+{
+ var vItems = this._data;
+ var vOffset = vItems.indexOf(vItem) * this._rowHeight;
+ var vHeight = this._rowHeight;
+
+ // normalize client height (we want that the item is fully visible)
+ var vParentHeight = (Math.floor(this.getClientHeight() / this._rowHeight) *
+ this._rowHeight);
+ var vParentScrollTop = this._currentScrollTop;
+
+ var vNewScrollTop = null;
+
+ if (vAlignTop)
+ {
+ vNewScrollTop = vOffset;
+ }
+ else if (vAlignTop == false)
+ {
+ vNewScrollTop = vOffset + vHeight - vParentHeight;
+ }
+ else if (vHeight > vParentHeight || vOffset < vParentScrollTop)
+ {
+ vNewScrollTop = vOffset;
+ }
+ else if ((vOffset + vHeight) > (vParentScrollTop + vParentHeight))
+ {
+ vNewScrollTop = vOffset + vHeight - vParentHeight;
+ }
+
+ if (vNewScrollTop != null) {
+ this.getView().getScroll().setScrollTop(vNewScrollTop);
+ }
+}
+
+qx.Proto.setScrollTop = function(vScrollTop)
+{
+ this.getView().getScroll().setScrollTop(vScrollTop);
+ this._updateRendering();
+}
+
+qx.Proto.getScrollTop = function() {
+ return this._currentScrollTop;
+}
+
+qx.Proto.setScrollLeft = function() {
+ this.error("Not implemented in qx.ui.listview.ListViewPane!");
+}
+
+qx.Proto.getScrollLeft = function() {
+ return 0;
+}
+
+qx.Proto.isItemVisible = function(vItem)
+{
+ var vIndex = this._data.indexOf(vItem);
+ var vRowStart = Math.floor(this._currentScrollTop / this._rowHeight);
+ var vRowLength = Math.ceil(this.getClientHeight() / this._rowHeight);
+
+ return vIndex >= vRowStart && vIndex <= (vRowStart + vRowLength);
+}
+
+qx.Proto.getRelativeItemPosition = function(vItem)
+{
+ var vIndex = this._data.indexOf(vItem);
+ var vRowStart = Math.floor(this._currentScrollTop / this._rowHeight);
+
+ return vIndex - vRowStart;
+}
+
+qx.Proto._updateItem = function(vItem)
+{
+ var vIndex = this._data.indexOf(vItem);
+ var vRowStart = Math.floor(this._currentScrollTop / this._rowHeight);
+ var vRowLength = Math.ceil(this.getClientHeight() / this._rowHeight);
+
+ if (vIndex < vRowStart || vIndex > (vRowStart + vRowLength)) {
+ return;
+ }
+
+ this._updateRow(vIndex - vRowStart);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+
+ // ************************************************************************
+ // MOUSE EVENT LISTENER
+ // ************************************************************************
+ this.removeEventListener("mousewheel", this._onmousewheel);
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+ this.removeEventListener("click", this._onclick);
+ this.removeEventListener("dblclick", this._ondblclick);
+
+
+ // ************************************************************************
+ // KEY EVENT LISTENER
+ // ************************************************************************
+ this.removeEventListener("keypress", this._onkeypress);
+
+
+ // ************************************************************************
+ // DATA
+ // ************************************************************************
+ delete this._data;
+ delete this._columns;
+
+
+ // ************************************************************************
+ // MANAGER
+ // ************************************************************************
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ return qx.ui.layout.GridLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Button.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Button.js
new file mode 100644
index 0000000000..569419b566
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Button.js
@@ -0,0 +1,354 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.menu.Button", qx.ui.layout.HorizontalBoxLayout,
+function(vLabel, vIcon, vCommand, vMenu)
+{
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+
+ // ************************************************************************
+ // LAYOUT
+ // ************************************************************************
+
+ var io = this._iconObject = new qx.ui.basic.Image;
+ io.setWidth(16);
+ io.setAnonymous(true);
+
+ var lo = this._labelObject = new qx.ui.basic.Label;
+ lo.setAnonymous(true);
+ lo.setSelectable(false);
+
+ var so = this._shortcutObject = new qx.ui.basic.Label;
+ so.setAnonymous(true);
+ so.setSelectable(false);
+
+ var ao = this._arrowObject = new qx.ui.basic.Image("widget/arrows/next.gif");
+ ao.setAnonymous(true);
+
+
+ // ************************************************************************
+ // INIT
+ // ************************************************************************
+
+ if (qx.util.Validation.isValidString(vLabel)) {
+ this.setLabel(vLabel);
+ }
+
+ if (qx.util.Validation.isValidString(vIcon)) {
+ this.setIcon(vIcon);
+ }
+
+ if (qx.util.Validation.isValid(vCommand)) {
+ this.setCommand(vCommand);
+ }
+
+ if (qx.util.Validation.isValid(vMenu)) {
+ this.setMenu(vMenu);
+ }
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+
+ this.addEventListener("mouseup", this._onmouseup);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "menu-button" });
+
+qx.OO.addProperty({ name : "icon", type : "string" });
+qx.OO.addProperty({ name : "label", type : "string" });
+qx.OO.addProperty({ name : "menu", type : "object" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._hasIcon = false;
+qx.Proto._hasLabel = false;
+qx.Proto._hasShortcut = false;
+qx.Proto._hasMenu = false;
+
+qx.Proto.hasIcon = function() {
+ return this._hasIcon;
+}
+
+qx.Proto.hasLabel = function() {
+ return this._hasLabel;
+}
+
+qx.Proto.hasShortcut = function() {
+ return this._hasShortcut;
+}
+
+qx.Proto.hasMenu = function() {
+ return this._hasMenu;
+}
+
+qx.Proto.getIconObject = function() {
+ return this._iconObject;
+}
+
+qx.Proto.getLabelObject = function() {
+ return this._labelObject;
+}
+
+qx.Proto.getShortcutObject = function() {
+ return this._shortcutObject;
+}
+
+qx.Proto.getArrowObject = function() {
+ return this._arrowObject;
+}
+
+qx.Proto.getParentMenu = function()
+{
+ var vParent = this.getParent();
+ if (vParent)
+ {
+ vParent = vParent.getParent();
+
+ if (vParent && vParent instanceof qx.ui.menu.Menu) {
+ return vParent;
+ }
+ }
+
+ return null;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return new qx.renderer.layout.MenuButtonLayoutImpl(this);
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyEnabled = function(propValue, propOldValue, propData)
+{
+ if (this._iconObject) {
+ this._iconObject.setEnabled(propValue);
+ }
+
+ if (this._labelObject) {
+ this._labelObject.setEnabled(propValue);
+ }
+
+ if (this._shortcutObject) {
+ this._shortcutObject.setEnabled(propValue);
+ }
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype._modifyEnabled.call(this, propValue, propOldValue, propData);
+}
+
+qx.Proto._modifyIcon = function(propValue, propOldValue, propData)
+{
+ this._iconObject.setSource(propValue);
+
+ if (qx.util.Validation.isValidString(propValue))
+ {
+ this._hasIcon = true;
+
+ if (qx.util.Validation.isInvalidString(propOldValue)) {
+ this.addAtBegin(this._iconObject);
+ }
+ }
+ else
+ {
+ this._hasIcon = false;
+ this.remove(this._iconObject);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyLabel = function(propValue, propOldValue, propData)
+{
+ this._labelObject.setHtml(propValue);
+
+ if (qx.util.Validation.isValidString(propValue))
+ {
+ this._hasLabel = true;
+
+ if (qx.util.Validation.isInvalidString(propOldValue)) {
+ this.addAt(this._labelObject, this.getFirstChild() == this._iconObject ? 1 : 0);
+ }
+ }
+ else
+ {
+ this._hasLabel = false;
+ this.remove(this._labelObject);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyCommand = function(propValue, propOldValue, propData)
+{
+ var vHtml = propValue ? propValue.getShortcut() : "";
+
+ this._shortcutObject.setHtml(vHtml);
+
+ if (qx.util.Validation.isValidString(vHtml))
+ {
+ this._hasShortcut = true;
+
+ var vOldHtml = propOldValue ? propOldValue.getShortcut() : "";
+
+ if (qx.util.Validation.isInvalidString(vOldHtml))
+ {
+ if (this.getLastChild() == this._arrowObject)
+ {
+ this.addBefore(this._shortcutObject, this._arrowObject);
+ }
+ else
+ {
+ this.addAtEnd(this._shortcutObject);
+ }
+ }
+ }
+ else
+ {
+ this._hasShortcut = false;
+ this.remove(this._shortcutObject);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyMenu = function(propValue, propOldValue, propData)
+{
+ if (qx.util.Validation.isValidObject(propValue))
+ {
+ this._hasMenu = true;
+
+ if (qx.util.Validation.isInvalidObject(propOldValue)) {
+ this.addAtEnd(this._arrowObject);
+ }
+ }
+ else
+ {
+ this._hasMenu = false;
+ this.remove(this._arrowObject);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseup = function(e) {
+ this.execute();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ // Dispose children
+ if (this._iconObject)
+ {
+ this._iconObject.dispose();
+ this._iconObject = null;
+ }
+
+ if (this._labelObject)
+ {
+ this._labelObject.dispose();
+ this._labelObject = null;
+ }
+
+ if (this._shortcutObject)
+ {
+ this._shortcutObject.dispose();
+ this._shortcutObject = null;
+ }
+
+ if (this._arrowObject)
+ {
+ this._arrowObject.dispose();
+ this._arrowObject = null;
+ }
+
+ // Remove event listeners
+ this.removeEventListener("mouseup", this._onmouseup);
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/CheckBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/CheckBox.js
new file mode 100644
index 0000000000..a6380f8fd2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/CheckBox.js
@@ -0,0 +1,85 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+/*!
+ A checkbox for the menu system.
+*/
+qx.OO.defineClass("qx.ui.menu.CheckBox", qx.ui.menu.Button,
+function(vLabel, vCommand, vChecked)
+{
+ qx.ui.menu.Button.call(this, vLabel, "static/image/blank.gif", vCommand);
+
+ if (qx.util.Validation.isValidBoolean(vChecked)) {
+ this.setChecked(vChecked);
+ }
+
+ qx.manager.object.ImageManager.getInstance().preload("widget/menu/checkbox.gif");
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "menu-check-box" });
+qx.OO.addProperty({ name : "name", type : "string" });
+qx.OO.addProperty({ name : "value", type : "string" });
+qx.OO.addProperty({ name : "checked", type : "boolean", defaultValue : false, getAlias : "isChecked" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData)
+{
+ propValue ? this.addState("checked") : this.removeState("checked");
+ this.getIconObject().setSource(propValue ? "widget/menu/checkbox.gif" : "static/image/blank.gif");
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EXECUTE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.execute = function()
+{
+ this.setChecked(!this.getChecked());
+ qx.ui.menu.Button.prototype.execute.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Layout.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Layout.js
new file mode 100644
index 0000000000..3f06492782
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Layout.js
@@ -0,0 +1,56 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+/*!
+ A small helper class to create a special layout handler for qx.ui.menu.Menus
+*/
+qx.OO.defineClass("qx.ui.menu.Layout", qx.ui.layout.VerticalBoxLayout,
+function()
+{
+ qx.ui.layout.VerticalBoxLayout.call(this);
+
+ this.setAnonymous(true);
+});
+
+
+/*!
+ Appearance of the widget
+*/
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "menu-layout" });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INIT LAYOUT IMPL
+---------------------------------------------------------------------------
+*/
+
+/*!
+ This creates an new instance of the layout impl this widget uses
+*/
+qx.Proto._createLayoutImpl = function() {
+ return new qx.renderer.layout.MenuLayoutImpl(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Menu.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Menu.js
new file mode 100644
index 0000000000..7006c95336
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Menu.js
@@ -0,0 +1,907 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.menu.Menu", qx.ui.popup.Popup,
+function()
+{
+ qx.ui.popup.Popup.call(this);
+
+
+ // ************************************************************************
+ // LAYOUT
+ // ************************************************************************
+
+ var l = this._layout = new qx.ui.menu.Layout;
+ this.add(l);
+
+
+ // ************************************************************************
+ // TIMER
+ // ************************************************************************
+ this._openTimer = new qx.client.Timer(this.getOpenInterval());
+ this._openTimer.addEventListener("interval", this._onopentimer, this);
+
+ this._closeTimer = new qx.client.Timer(this.getCloseInterval());
+ this._closeTimer.addEventListener("interval", this._onclosetimer, this);
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mousemove", this._onmouseover);
+ this.addEventListener("mouseout", this._onmouseout);
+
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+
+
+ // ************************************************************************
+ // REMAPPING
+ // ************************************************************************
+
+ this.remapChildrenHandlingTo(this._layout);
+});
+
+qx.Proto._remappingChildTable = [ "add", "remove", "addAt", "addAtBegin", "addAtEnd", "removeAt", "addBefore", "addAfter", "removeAll", "getFirstChild", "getFirstActiveChild", "getLastChild", "getLastActiveChild" ];
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "menu" });
+
+qx.OO.addProperty({ name : "iconContentGap", type : "number", defaultValue : 4 });
+qx.OO.addProperty({ name : "labelShortcutGap", type : "number", defaultValue : 10 });
+qx.OO.addProperty({ name : "contentArrowGap", type : "number", defaultValue : 8 });
+qx.OO.addProperty({ name : "contentNonIconPadding", type : "number", defaultValue : 20 });
+qx.OO.addProperty({ name : "contentNonArrowPadding", type : "number", defaultValue : 8 });
+
+qx.OO.addProperty({ name : "hoverItem", type : "object" });
+qx.OO.addProperty({ name : "openItem", type : "object" });
+qx.OO.addProperty({ name : "opener", type : "object" });
+qx.OO.addProperty({ name : "parentMenu", type : "object" });
+
+qx.OO.addProperty({ name : "fastReopen", type : "boolean", defaultValue : false });
+qx.OO.addProperty({ name : "openInterval", type : "number", defaultValue : 250 });
+qx.OO.addProperty({ name : "closeInterval", type : "number", defaultValue : 250 });
+
+qx.OO.addProperty({ name : "subMenuHorizontalOffset", type : "number", defaultValue : -3 });
+qx.OO.addProperty({ name : "subMenuVerticalOffset", type : "number", defaultValue : -2 });
+
+qx.OO.addProperty({ name : "indentShortcuts", type : "boolean", defaultValue : true });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getLayout = function() {
+ return this._layout;
+}
+
+qx.Proto.isSubButton = function(vButton)
+{
+ if (vButton.getParent() === this._layout) {
+ return true;
+ }
+
+ for (var a=this._layout.getChildren(), l=a.length, i=0; i<l; i++)
+ {
+ if (a[i].getMenu && a[i].getMenu() && a[i].getMenu().isSubButton(vButton)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEAR/DISAPPEAR
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeAppear = function()
+{
+ // Intentionally bypass superclass and call super.super._beforeAppear
+ qx.ui.layout.CanvasLayout.prototype._beforeAppear.call(this);
+
+ // register to menu manager as active widget
+ qx.manager.object.MenuManager.getInstance().add(this);
+
+ // zIndex handling
+ this.bringToFront();
+
+ //setup as global active widget
+ this._makeActive();
+}
+
+qx.Proto._beforeDisappear = function()
+{
+ // Intentionally bypass superclass and call super.super._beforeDisappear
+ qx.ui.layout.CanvasLayout.prototype._beforeDisappear.call(this);
+
+ // deregister as opened from qx.manager.object.MenuManager
+ qx.manager.object.MenuManager.getInstance().remove(this);
+
+ // reset global active widget
+ this._makeInactive();
+
+ // reset properties on close
+ this.setHoverItem(null);
+ this.setOpenItem(null);
+
+ // be sure that the opener button gets the correct state
+ var vOpener = this.getOpener();
+ if (vOpener) {
+ vOpener.removeState("pressed");
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyHoverItem = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.removeState("over");
+ }
+
+ if (propValue) {
+ propValue.addState("over");
+ }
+
+ return true;
+}
+
+qx.Proto._modifyOpenItem = function(propValue, propOldValue, propData)
+{
+ var vMakeActive = false;
+
+ if (propOldValue)
+ {
+ var vOldSub = propOldValue.getMenu();
+
+ if (vOldSub)
+ {
+ vOldSub.setParentMenu(null);
+ vOldSub.setOpener(null);
+ vOldSub.hide();
+ }
+ }
+
+ if (propValue)
+ {
+ var vSub = propValue.getMenu();
+
+ if (vSub)
+ {
+ vSub.setOpener(propValue);
+ vSub.setParentMenu(this);
+
+ var pl = propValue.getElement();
+ var el = this.getElement();
+
+ vSub.setTop(qx.dom.Location.getPageBoxTop(pl) + this.getSubMenuVerticalOffset());
+ vSub.setLeft(qx.dom.Location.getPageBoxLeft(el) + qx.dom.Dimension.getBoxWidth(el) + this.getSubMenuHorizontalOffset());
+
+ vSub.show();
+
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOCATIONS AND DIMENSIONS OF CHILDRENS CHILDREN:
+ CREATE VARIABLES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addCachedProperty({ name : "maxIconWidth" });
+qx.OO.addCachedProperty({ name : "maxLabelWidth" });
+qx.OO.addCachedProperty({ name : "maxLabelWidthIncShortcut" });
+qx.OO.addCachedProperty({ name : "maxShortcutWidth" });
+qx.OO.addCachedProperty({ name : "maxArrowWidth" });
+qx.OO.addCachedProperty({ name : "maxContentWidth" });
+
+qx.OO.addCachedProperty({ name : "iconPosition", defaultValue : 0 });
+qx.OO.addCachedProperty({ name : "labelPosition" });
+qx.OO.addCachedProperty({ name : "shortcutPosition" });
+qx.OO.addCachedProperty({ name : "arrowPosition" });
+
+qx.OO.addCachedProperty({ name : "menuButtonNeededWidth" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOCATIONS AND DIMENSIONS OF CHILDRENS CHILDREN:
+ MAX WIDTH COMPUTERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computeMaxIconWidth = function()
+{
+ var ch=this.getLayout().getChildren(), chl=ch.length, chc, m=0;
+
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+
+ if (chc.hasIcon()) {
+ // Make static as long as not supported well
+ // m = Math.max(m, chc.getIconObject().getPreferredBoxWidth());
+ m = Math.max(m, 16);
+ }
+ }
+
+ return m;
+}
+
+qx.Proto._computeMaxLabelWidth = function()
+{
+ var ch=this.getLayout().getChildren(), chl=ch.length, chc, m=0;
+
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+
+ if (chc.hasLabel()) {
+ m = Math.max(m, chc.getLabelObject().getPreferredBoxWidth());
+ }
+ }
+
+ return m;
+}
+
+qx.Proto._computeMaxLabelWidthIncShortcut = function()
+{
+ var ch=this.getLayout().getChildren(), chl=ch.length, chc, m=0;
+
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+
+ if (chc.hasLabel() && chc.hasShortcut()) {
+ m = Math.max(m, chc.getLabelObject().getPreferredBoxWidth());
+ }
+ }
+
+ return m;
+}
+
+qx.Proto._computeMaxShortcutWidth = function()
+{
+ var ch=this.getLayout().getChildren(), chl=ch.length, chc, m=0;
+
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+
+ if (chc.hasShortcut()) {
+ m = Math.max(m, chc.getShortcutObject().getPreferredBoxWidth());
+ }
+ }
+
+ return m;
+}
+
+qx.Proto._computeMaxArrowWidth = function()
+{
+ var ch=this.getLayout().getChildren(), chl=ch.length, chc, m=0;
+
+ for (var i=0; i<chl; i++)
+ {
+ chc = ch[i];
+
+ if (chc.hasMenu()) {
+ // Make static as long as not supported well
+ // m = Math.max(m, chc.getArrowObject().getPreferredBoxWidth());
+ m = Math.max(m, 4);
+ }
+ }
+
+ return m;
+}
+
+qx.Proto._computeMaxContentWidth = function()
+{
+ var vSum;
+
+ var lw = this.getMaxLabelWidth();
+ var sw = this.getMaxShortcutWidth();
+
+ if (this.getIndentShortcuts())
+ {
+ var vTemp = sw+this.getMaxLabelWidthIncShortcut();
+
+ if (sw > 0) {
+ vTemp += this.getLabelShortcutGap();
+ }
+
+ vSum = Math.max(lw, vTemp);
+ }
+ else
+ {
+ vSum = lw + sw;
+
+ if (lw > 0 && sw > 0) {
+ vSum += this.getLabelShortcutGap();
+ }
+ }
+
+ return vSum;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOCATIONS AND DIMENSIONS OF CHILDRENS CHILDREN:
+ POSITION COMPUTERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computeIconPosition = function() {
+ return 0;
+}
+
+qx.Proto._computeLabelPosition = function()
+{
+ var v = this.getMaxIconWidth();
+ return v > 0 ? v + this.getIconContentGap() : this.getContentNonIconPadding();
+}
+
+qx.Proto._computeShortcutPosition = function() {
+ return this.getLabelPosition() + this.getMaxContentWidth() - this.getMaxShortcutWidth();
+}
+
+qx.Proto._computeArrowPosition = function()
+{
+ var v = this.getMaxContentWidth();
+ return this.getLabelPosition() + (v > 0 ? v + this.getContentArrowGap() : v);
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOCATIONS AND DIMENSIONS OF CHILDRENS CHILDREN:
+ INVALIDATION OF CACHE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._invalidateMaxIconWidth = function()
+{
+ this._cachedMaxIconWidth = null;
+
+ this._invalidateLabelPosition();
+ this._invalidateMenuButtonNeededWidth();
+}
+
+qx.Proto._invalidateMaxLabelWidth = function()
+{
+ this._cachedMaxLabelWidth = null;
+
+ this._invalidateShortcutPosition();
+ this._invalidateMaxLabelWidthIncShortcut();
+ this._invalidateMaxContentWidth();
+ this._invalidateMenuButtonNeededWidth();
+}
+
+qx.Proto._invalidateMaxShortcutWidth = function()
+{
+ this._cachedMaxShortcutWidth = null;
+
+ this._invalidateArrowPosition();
+ this._invalidateMaxContentWidth();
+ this._invalidateMenuButtonNeededWidth();
+}
+
+qx.Proto._invalidateMaxLabelWidth = function()
+{
+ this._cachedMaxArrowWidth = null;
+ this._invalidateMenuButtonNeededWidth();
+}
+
+qx.Proto._invalidateLabelPosition = function()
+{
+ this._cachedLabelPosition = null;
+ this._invalidateShortcutPosition();
+}
+
+qx.Proto._invalidateShortcutPosition = function()
+{
+ this._cachedShortcutPosition = null;
+ this._invalidateArrowPosition();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ LOCATIONS AND DIMENSIONS OF CHILDRENS CHILDREN:
+ NEEDED WIDTH COMPUTERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._computeMenuButtonNeededWidth = function()
+{
+ var vSum = 0;
+
+ var vMaxIcon = this.getMaxIconWidth();
+ var vMaxContent = this.getMaxContentWidth();
+ var vMaxArrow = this.getMaxArrowWidth();
+
+ if (vMaxIcon > 0)
+ {
+ vSum += vMaxIcon;
+ }
+ else
+ {
+ vSum += this.getContentNonIconPadding();
+ }
+
+ if (vMaxContent > 0)
+ {
+ if (vMaxIcon > 0) {
+ vSum += this.getIconContentGap();
+ }
+
+ vSum += vMaxContent;
+ }
+
+ if (vMaxArrow > 0)
+ {
+ if (vMaxIcon > 0 || vMaxContent > 0) {
+ vSum += this.getContentArrowGap();
+ }
+
+ vSum += vMaxArrow;
+ }
+ else
+ {
+ vSum += this.getContentNonArrowPadding();
+ }
+
+ return vSum;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT-HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseover = function(e)
+{
+ /* ------------------------------
+ HANDLE PARENT MENU
+ ------------------------------ */
+
+ // look if we have a parent menu
+ // if so we need to stop the close event started there
+ var vParent = this.getParentMenu();
+
+ if (vParent)
+ {
+ // stop the close event
+ vParent._closeTimer.stop();
+
+ // look if we have a opener, too (normally this should be)
+ var vOpener = this.getOpener();
+
+ // then setup it to look hovered
+ if (vOpener) {
+ vParent.setHoverItem(vOpener);
+ }
+ }
+
+
+
+
+ /* ------------------------------
+ HANDLING FOR HOVERING MYSELF
+ ------------------------------ */
+
+ var t = e.getTarget();
+
+ if (t == this)
+ {
+ this._openTimer.stop();
+ this._closeTimer.start();
+
+ this.setHoverItem(null);
+
+ return;
+ }
+
+
+
+
+ /* ------------------------------
+ HANDLING FOR HOVERING ITEMS
+ ------------------------------ */
+
+ var vOpen = this.getOpenItem();
+
+ // if we have a open item
+ if (vOpen)
+ {
+ this.setHoverItem(t);
+ this._openTimer.stop();
+
+ // if the new one has also a sub menu
+ if (t.hasMenu())
+ {
+ // check if we should use fast reopen (this will open the menu instantly)
+ if (this.getFastReopen())
+ {
+ this.setOpenItem(t);
+ this._closeTimer.stop();
+ }
+
+ // otherwise we use the default timer interval
+ else
+ {
+ this._openTimer.start();
+ }
+ }
+
+ // otherwise start the close timer for the old menu
+ else
+ {
+ this._closeTimer.start();
+ }
+ }
+
+ // otherwise handle the mouseover and restart the timer
+ else
+ {
+ this.setHoverItem(t);
+
+ // stop timer for the last open request
+ this._openTimer.stop();
+
+ // and restart it if the new one has a menu, too
+ if (t.hasMenu()) {
+ this._openTimer.start();
+ }
+ }
+}
+
+qx.Proto._onmouseout = function(e)
+{
+ // stop the open timer (for any previous open requests)
+ this._openTimer.stop();
+
+ // start the close timer to hide a menu if needed
+ var t = e.getTarget();
+ if (t != this && t.hasMenu()) {
+ this._closeTimer.start();
+ }
+
+ // reset the current hover item
+ this.setHoverItem(null);
+}
+
+qx.Proto._onopentimer = function(e)
+{
+ // stop the open timer (we need only the first interval)
+ this._openTimer.stop();
+
+ // if we have a item which is currently hovered, open it
+ var vHover = this.getHoverItem();
+ if (vHover && vHover.hasMenu()) {
+ this.setOpenItem(vHover);
+ }
+}
+
+qx.Proto._onclosetimer = function(e)
+{
+ // stop the close timer (we need only the first interval)
+ this._closeTimer.stop();
+
+ // reset the current opened item
+ this.setOpenItem(null);
+}
+
+/*!
+ Wraps key events to target functions
+*/
+qx.Proto._onkeydown = function(e)
+{
+ if (e.getKeyIdentifier() == "Enter") {
+ this._onkeydown_enter(e);
+ }
+ e.preventDefault();
+};
+
+
+qx.Proto._onkeypress = function(e)
+{
+ switch(e.getKeyIdentifier())
+ {
+ case "Up":
+ this._onkeypress_up(e);
+ break;
+
+ case "Down":
+ this._onkeypress_down(e);
+ break;
+
+ case "Left":
+ this._onkeypress_left(e);
+ break;
+
+ case "Right":
+ this._onkeypress_right(e);
+ break;
+
+ default:
+ return;
+ }
+
+ // Stop all matching events
+ e.preventDefault();
+};
+
+
+qx.Proto._onkeypress_up = function(e)
+{
+ var vHover = this.getHoverItem();
+ var vPrev = vHover ? vHover.isFirstChild() ? this.getLastActiveChild() : vHover.getPreviousActiveSibling([qx.ui.menu.Separator]) : this.getLastActiveChild();
+
+ this.setHoverItem(vPrev);
+};
+
+qx.Proto._onkeypress_down = function(e)
+{
+ var vHover = this.getHoverItem();
+ var vNext = vHover ? vHover.isLastChild() ? this.getFirstActiveChild() : vHover.getNextActiveSibling([qx.ui.menu.Separator]) : this.getFirstActiveChild();
+
+ this.setHoverItem(vNext);
+};
+
+
+qx.Proto._onkeypress_left = function(e)
+{
+ var vOpener = this.getOpener();
+
+ // Jump to the "parent" qx.ui.menu.Menu
+ if (vOpener instanceof qx.ui.menu.Button)
+ {
+ var vOpenerParent = this.getOpener().getParentMenu();
+
+ vOpenerParent.setOpenItem(null);
+ vOpenerParent.setHoverItem(vOpener);
+
+ vOpenerParent._makeActive();
+ }
+
+ // Jump to the previous ToolBarMenuButton
+ else if (vOpener instanceof qx.ui.toolbar.MenuButton)
+ {
+ var vToolBar = vOpener.getParentToolBar();
+
+ // change active widget to new button
+ this.getFocusRoot().setActiveChild(vToolBar);
+
+ // execute toolbars keydown implementation
+ vToolBar._onkeypress(e);
+ }
+};
+
+
+qx.Proto._onkeypress_right = function(e)
+{
+ var vHover = this.getHoverItem();
+
+ if (vHover)
+ {
+ var vMenu = vHover.getMenu();
+
+ if (vMenu)
+ {
+ this.setOpenItem(vHover);
+
+ // mark first item in new submenu
+ vMenu.setHoverItem(vMenu.getFirstActiveChild());
+
+ return;
+ }
+ }
+ else if (!this.getOpenItem())
+ {
+ var vFirst = this.getLayout().getFirstActiveChild();
+
+ if (vFirst) {
+ vFirst.hasMenu() ? this.setOpenItem(vFirst) : this.setHoverItem(vFirst);
+ }
+ }
+
+ // Jump to the next ToolBarMenuButton
+ var vOpener = this.getOpener();
+
+ if (vOpener instanceof qx.ui.toolbar.MenuButton)
+ {
+ var vToolBar = vOpener.getParentToolBar();
+
+ // change active widget to new button
+ this.getFocusRoot().setActiveChild(vToolBar);
+
+ // execute toolbars keydown implementation
+ vToolBar._onkeypress(e);
+ }
+ else if (vOpener instanceof qx.ui.menu.Button && vHover)
+ {
+ // search for menubar if existing
+ // menu -> button -> menu -> button -> menu -> menubarbutton -> menubar
+
+ var vOpenerParent = vOpener.getParentMenu();
+
+ while (vOpenerParent && vOpenerParent instanceof qx.ui.menu.Menu)
+ {
+ vOpener = vOpenerParent.getOpener();
+
+ if (vOpener instanceof qx.ui.menu.Button)
+ {
+ vOpenerParent = vOpener.getParentMenu();
+ }
+ else
+ {
+ if (vOpener) {
+ vOpenerParent = vOpener.getParent();
+ }
+
+ break;
+ }
+ }
+
+ if (vOpenerParent instanceof qx.ui.toolbar.Part) {
+ vOpenerParent = vOpenerParent.getParent();
+ }
+
+ if (vOpenerParent instanceof qx.ui.toolbar.ToolBar)
+ {
+ // jump to next menubarbutton
+ this.getFocusRoot().setActiveChild(vOpenerParent);
+ vOpenerParent._onkeypress(e);
+ }
+ }
+}
+
+qx.Proto._onkeydown_enter = function(e)
+{
+ var vHover = this.getHoverItem();
+ if (vHover) {
+ vHover.execute();
+ }
+
+ qx.manager.object.MenuManager.getInstance().update();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._layout)
+ {
+ this._layout.dispose();
+ this._layout = null;
+ }
+
+ if (this._openTimer)
+ {
+ this._openTimer.dispose();
+ this._openTimer = null;
+ }
+
+ if (this._closeTimer)
+ {
+ this._closeTimer.dispose();
+ this._closeTimer = null;
+ }
+
+ // Remove event listeners
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mousemove", this._onmouseover);
+ this.removeEventListener("mouseout", this._onmouseout);
+
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+
+
+ return qx.ui.popup.Popup.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/RadioButton.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/RadioButton.js
new file mode 100644
index 0000000000..b8ff7f975f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/RadioButton.js
@@ -0,0 +1,118 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.menu.RadioButton", qx.ui.menu.CheckBox,
+function(vLabel, vCommand, vChecked)
+{
+ qx.ui.menu.CheckBox.call(this, vLabel, vCommand, vChecked);
+
+ qx.manager.object.ImageManager.getInstance().preload("widget/menu/radiobutton.gif");
+});
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "menu-radio-button" });
+
+/*!
+ The assigned qx.manager.selection.RadioManager which handles the switching between registered buttons
+*/
+qx.OO.addProperty({ name : "manager", type : "object", instance : "qx.manager.selection.RadioManager", allowNull : true });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData)
+{
+ var vManager = this.getManager();
+
+ if (vManager)
+ {
+ if (propValue)
+ {
+ vManager.setSelected(this);
+ }
+ else if (vManager.getSelected() == this)
+ {
+ vManager.setSelected(null);
+ }
+ }
+
+ propValue ? this.addState("checked") : this.removeState("checked");
+ this.getIconObject().setSource(propValue ? "widget/menu/radiobutton.gif" : "static/image/blank.gif");
+
+ return true;
+}
+
+qx.Proto._modifyManager = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue) {
+ propValue.add(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyName = function(propValue, propOldValue, propData)
+{
+ if (this.getManager()) {
+ this.getManager().setName(propValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EXECUTE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.execute = function()
+{
+ this.setChecked(true);
+
+ // Intentionally bypass superclass and call super.super.execute
+ qx.ui.menu.Button.prototype.execute.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Separator.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Separator.js
new file mode 100644
index 0000000000..a7bce89c33
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menu/Separator.js
@@ -0,0 +1,76 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.menu.Separator", qx.ui.layout.CanvasLayout,
+function()
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ // Fix IE Styling Issues
+ this.setStyleProperty("fontSize", "0");
+ this.setStyleProperty("lineHeight", "0");
+
+ // ************************************************************************
+ // LINE
+ // ************************************************************************
+
+ this._line = new qx.ui.basic.Terminator;
+ this._line.setAnonymous(true);
+ this._line.setAppearance("menu-separator-line");
+ this.add(this._line);
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+
+ // needed to stop the event, and keep the menu showing
+ this.addEventListener("mousedown", this._onmousedown);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "menu-separator" });
+
+qx.Proto.hasIcon = qx.util.Return.returnFalse;
+qx.Proto.hasLabel = qx.util.Return.returnFalse;
+qx.Proto.hasShortcut = qx.util.Return.returnFalse;
+qx.Proto.hasMenu = qx.util.Return.returnFalse;
+
+qx.Proto._onmousedown = function(e) {
+ e.stopPropagation();
+}
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._line)
+ {
+ this._line.dispose();
+ this._line = null;
+ }
+
+ return qx.ui.layout.CanvasLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/Button.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/Button.js
new file mode 100644
index 0000000000..9d13967fe6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/Button.js
@@ -0,0 +1,28 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.menubar.Button", qx.ui.toolbar.MenuButton,
+function(vText, vMenu, vIcon, vIconWidth, vIconHeight, vFlash) {
+ qx.ui.toolbar.MenuButton.call(this, vText, vMenu, vIcon, vIconWidth, vIconHeight, vFlash);
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/MenuBar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/MenuBar.js
new file mode 100644
index 0000000000..858f1fea4f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/menubar/MenuBar.js
@@ -0,0 +1,28 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.menubar.MenuBar", qx.ui.toolbar.ToolBar,
+function() {
+ qx.ui.toolbar.ToolBar.call(this);
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractBar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractBar.js
new file mode 100755
index 0000000000..1c10e5680b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractBar.js
@@ -0,0 +1,129 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.AbstractBar", qx.ui.layout.BoxLayout,
+function()
+{
+ qx.ui.layout.BoxLayout.call(this);
+
+ this._manager = new qx.manager.selection.RadioManager;
+
+ this.addEventListener("mousewheel", this._onmousewheel);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._lastDate = (new Date(0)).valueOf();
+
+qx.Proto._onmousewheel = function(e)
+{
+ // Make it a bit lazier than it could be
+ // Hopefully this is a better behaviour for fast scrolling users
+ var vDate = (new Date).valueOf();
+
+ if ((vDate - 50) < this._lastDate) {
+ return;
+ }
+
+ this._lastDate = vDate;
+
+ var vManager = this.getManager();
+ var vItems = vManager.getItems();
+ var vPos = vItems.indexOf(vManager.getSelected());
+
+ if (this.getWheelDelta(e) > 0)
+ {
+ var vNext = vItems[vPos+1];
+
+ if (!vNext) {
+ vNext = vItems[0];
+ }
+ }
+ else if (vPos > 0)
+ {
+ var vNext = vItems[vPos-1];
+
+ if (!vNext) {
+ vNext = vItems[0];
+ }
+ }
+ else
+ {
+ vNext = vItems[vItems.length-1];
+ }
+
+ vManager.setSelected(vNext);
+}
+
+qx.Proto.getWheelDelta = function(e) {
+ return e.getWheelDelta();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ this.removeEventListener("mousewheel", this._onmousewheel);
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractButton.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractButton.js
new file mode 100755
index 0000000000..da590a286d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractButton.js
@@ -0,0 +1,219 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+ ************************************************************************ */
+
+/* ************************************************************************
+
+
+ ************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.AbstractButton", qx.ui.basic.Atom,
+function(vText, vIcon, vIconWidth, vIconHeight, vFlash) {
+ qx.ui.basic.Atom.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+
+ this.setTabIndex(1);
+
+ // ************************************************************************
+ // MOUSE EVENTS
+ // ************************************************************************
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mouseout", this._onmouseout);
+ this.addEventListener("mousedown", this._onmousedown);
+
+ // ************************************************************************
+ // KEY EVENTS
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+ */
+
+/*!
+ If this tab is the currently selected/active one
+ */
+qx.OO.addProperty({ name : "checked", type : "boolean", defaultValue : false });
+
+/*!
+ The attached page of this tab
+ */
+qx.OO.addProperty({ name : "page", type : "object" });
+
+/*!
+ The assigned qx.manager.selection.RadioManager which handles the switching between registered buttons
+ */
+qx.OO.addProperty({ name : "manager", type : "object", instance : "qx.manager.selection.RadioManager", allowNull : true });
+
+/*!
+ The name of the radio group. All the radio elements in a group (registered by the same manager)
+ have the same name (and could have a different value).
+ */
+qx.OO.addProperty({ name : "name", type : "string" });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+ */
+
+qx.Proto.getView = function() {
+ return this.getParent().getParent();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+ */
+
+qx.Proto._modifyManager = function(propValue, propOldValue, propData) {
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue) {
+ propValue.add(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyParent = function(propValue, propOldValue, propData) {
+ if (propOldValue) {
+ propOldValue.getManager().remove(this);
+ }
+
+ if (propValue) {
+ propValue.getManager().add(this);
+ }
+
+ return qx.ui.basic.Atom.prototype._modifyParent.call(this, propValue, propOldValue, propData);
+}
+
+qx.Proto._modifyPage = function(propValue, propOldValue, propData) {
+ if (propOldValue) {
+ propOldValue.setButton(null);
+ }
+
+ if (propValue) {
+ propValue.setButton(this);
+ this.getChecked() ? propValue.show() : propValue.hide();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData) {
+ if (this._hasParent) {
+ var vManager = this.getManager();
+ if (vManager) {
+ vManager.handleItemChecked(this, propValue);
+ }
+ }
+
+ propValue ? this.addState("checked") : this.removeState("checked");
+
+ var vPage = this.getPage();
+ if (vPage) {
+ this.getChecked() ? vPage.show() : vPage.hide();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyName = function(propValue, propOldValue, propData) {
+ if (this.getManager()) {
+ this.getManager().setName(propValue);
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+ */
+
+qx.Proto._onmousedown = function(e) {
+ this.setChecked(true);
+}
+
+qx.Proto._onmouseover = function(e) {
+ this.addState("over");
+}
+
+qx.Proto._onmouseout = function(e) {
+ this.removeState("over");
+}
+
+qx.Proto._onkeydown = function(e) {}
+qx.Proto._onkeypress = function(e) {}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+ */
+
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return;
+ }
+
+
+ // ************************************************************************
+ // MOUSE EVENTS
+ // ************************************************************************
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mouseout", this._onmouseout);
+ this.removeEventListener("mousedown", this._onmousedown);
+
+
+ // ************************************************************************
+ // KEY EVENTS
+ // ************************************************************************
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+
+
+ return qx.ui.basic.Atom.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPage.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPage.js
new file mode 100755
index 0000000000..3eed9d20b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPage.js
@@ -0,0 +1,75 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.AbstractPage", qx.ui.layout.CanvasLayout,
+function(vButton)
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ if (qx.util.Validation.isValid(vButton)) {
+ this.setButton(vButton);
+ }
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The attached tab of this page.
+*/
+qx.OO.addProperty({ name : "button", type : "object" });
+
+/*!
+ Make element displayed (if switched to true the widget will be created, if needed, too).
+ Instead of qx.ui.core.Widget, the default is false here.
+*/
+qx.OO.changeProperty({ name : "display", type : "boolean", defaultValue : false });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyButton = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.setPage(null);
+ }
+
+ if (propValue) {
+ propValue.setPage(this);
+ }
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPageView.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPageView.js
new file mode 100755
index 0000000000..786bc88145
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPageView.js
@@ -0,0 +1,84 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.AbstractPageView", qx.ui.layout.BoxLayout,
+function(vBarClass, vPaneClass)
+{
+ qx.ui.layout.BoxLayout.call(this);
+
+ this._bar = new vBarClass;
+ this._pane = new vPaneClass;
+
+ this.add(this._bar, this._pane);
+ this.setOrientation("vertical");
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITY
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getPane = function() {
+ return this._pane;
+}
+
+qx.Proto.getBar = function() {
+ return this._bar;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._bar)
+ {
+ this._bar.dispose();
+ this._bar = null;
+ }
+
+ if (this._pane)
+ {
+ this._pane.dispose();
+ this._pane = null;
+ }
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPane.js
new file mode 100755
index 0000000000..a026e0401e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/AbstractPane.js
@@ -0,0 +1,27 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.AbstractPane", qx.ui.layout.CanvasLayout,
+function() {
+ qx.ui.layout.CanvasLayout.call(this);
+});
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Bar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Bar.js
new file mode 100644
index 0000000000..43ed8c1f85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Bar.js
@@ -0,0 +1,75 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_buttonview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.buttonview.Bar", qx.ui.pageview.AbstractBar,
+function() {
+ qx.ui.pageview.AbstractBar.call(this);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "bar-view-bar" });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getWheelDelta = function(e)
+{
+ var vWheelDelta = e.getWheelDelta();
+
+ switch(this.getParent().getBarPosition())
+ {
+ case "left":
+ case "right":
+ vWheelDelta *= -1;
+ }
+
+ return vWheelDelta;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEARANCE ADDITIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyStateAppearance = function()
+{
+ var vPos = this.getParent().getBarPosition();
+
+ this._states.barLeft = vPos === "left";
+ this._states.barRight = vPos === "right";
+ this._states.barTop = vPos === "top";
+ this._states.barBottom = vPos === "bottom";
+
+ qx.ui.pageview.AbstractButton.prototype._applyStateAppearance.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Button.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Button.js
new file mode 100644
index 0000000000..2ea00867a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Button.js
@@ -0,0 +1,120 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_buttonview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.buttonview.Button", qx.ui.pageview.AbstractButton,
+function(vText, vIcon, vIconWidth, vIconHeight, vFlash) {
+ qx.ui.pageview.AbstractButton.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "bar-view-button" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeypress = function(e)
+{
+ switch(this.getView().getBarPosition())
+ {
+ case "top":
+ case "bottom":
+ switch(e.getKeyIdentifier())
+ {
+ case "Left":
+ var vPrevious = true;
+ break;
+
+ case "Right":
+ var vPrevious = false;
+ break;
+
+ default:
+ return;
+ }
+
+ break;
+
+ case "left":
+ case "right":
+ switch(e.getKeyIdentifier())
+ {
+ case "Up":
+ var vPrevious = true;
+ break;
+
+ case "Down":
+ var vPrevious = false;
+ break;
+
+ default:
+ return;
+ }
+
+ break;
+
+ default:
+ return;
+ }
+
+ var vChild = vPrevious ? this.isFirstChild() ? this.getParent().getLastChild() : this.getPreviousSibling() : this.isLastChild() ? this.getParent().getFirstChild() : this.getNextSibling();
+
+ // focus next/previous button
+ vChild.setFocused(true);
+
+ // and naturally also check it
+ vChild.setChecked(true);
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEARANCE ADDITIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyStateAppearance = function()
+{
+ var vPos = this.getView().getBarPosition();
+
+ this._states.barLeft = vPos === "left";
+ this._states.barRight = vPos === "right";
+ this._states.barTop = vPos === "top";
+ this._states.barBottom = vPos === "bottom";
+
+ qx.ui.pageview.AbstractButton.prototype._applyStateAppearance.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/ButtonView.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/ButtonView.js
new file mode 100644
index 0000000000..7521b67683
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/ButtonView.js
@@ -0,0 +1,98 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_buttonview)
+
+************************************************************************ */
+
+/*!
+ One of the widgets which could be used to structurize the interface.
+
+ qx.ui.pageview.buttonview.ButtonView creates the typical apple-like tabview-replacements which could also
+ be found in more modern versions of the settings dialog in Mozilla Firefox.
+*/
+qx.OO.defineClass("qx.ui.pageview.buttonview.ButtonView", qx.ui.pageview.AbstractPageView,
+function()
+{
+ qx.ui.pageview.AbstractPageView.call(this, qx.ui.pageview.buttonview.Bar, qx.ui.pageview.buttonview.Pane);
+
+ this.setOrientation("vertical");
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "barPosition", type : "string", defaultValue : "top", possibleValues : [ "top", "right", "bottom", "left" ] });
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "bar-view" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyBarPosition = function(propValue, propOldValue, propData)
+{
+ var vBar = this._bar;
+
+ // move bar around and change orientation
+ switch(propValue)
+ {
+ case "top":
+ vBar.moveSelfToBegin();
+ this.setOrientation("vertical");
+ break;
+
+ case "bottom":
+ vBar.moveSelfToEnd();
+ this.setOrientation("vertical");
+ break;
+
+ case "left":
+ vBar.moveSelfToBegin();
+ this.setOrientation("horizontal");
+ break;
+
+ case "right":
+ vBar.moveSelfToEnd();
+ this.setOrientation("horizontal");
+ break;
+ }
+
+ // force re-apply of states for bar and pane
+ this._addChildrenToStateQueue();
+
+ // force re-apply of states for all tabs
+ vBar._addChildrenToStateQueue();
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Page.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Page.js
new file mode 100644
index 0000000000..d5d4b15d4f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Page.js
@@ -0,0 +1,30 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_buttonview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.buttonview.Page", qx.ui.pageview.AbstractPage,
+function(vButton) {
+ qx.ui.pageview.AbstractPage.call(this, vButton);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "bar-view-page" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Pane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Pane.js
new file mode 100644
index 0000000000..6f8aabebc4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/buttonview/Pane.js
@@ -0,0 +1,51 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_buttonview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.buttonview.Pane", qx.ui.pageview.AbstractPane,
+function() {
+ qx.ui.pageview.AbstractPane.call(this);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "bar-view-pane" });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEARANCE ADDITIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyStateAppearance = function()
+{
+ var vPos = this.getParent().getBarPosition();
+
+ this._states.barHorizontal = vPos === "top" || vPos === "bottom";
+
+ qx.ui.pageview.AbstractButton.prototype._applyStateAppearance.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Bar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Bar.js
new file mode 100644
index 0000000000..22f429dd96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Bar.js
@@ -0,0 +1,33 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tabview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.tabview.Bar", qx.ui.pageview.AbstractBar,
+function()
+{
+ qx.ui.pageview.AbstractBar.call(this);
+
+ this.setZIndex(2);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tab-view-bar" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Button.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Button.js
new file mode 100644
index 0000000000..9566bb2a51
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Button.js
@@ -0,0 +1,189 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tabview)
+
+************************************************************************ */
+
+/**
+ * @event closetab {qx.event.type.DataEvent}
+ */
+qx.OO.defineClass("qx.ui.pageview.tabview.Button", qx.ui.pageview.AbstractButton,
+function(vText, vIcon, vIconWidth, vIconHeight, vFlash) {
+ qx.ui.pageview.AbstractButton.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tab-view-button" });
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+ */
+
+/*!
+ default Close Tab Button
+ */
+qx.OO.addProperty({ name : "showCloseButton", type : "boolean", defaultValue : false });
+
+/*!
+ Close Tab Icon
+ */
+qx.OO.addProperty({ name : "closeButtonImage", type : "string", defaultValue : "icon/16/cancel.png"});
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e)
+{
+ var identifier = e.getKeyIdentifier();
+ if (identifier == "Enter" || identifier == "Space") {
+ // there is no toggeling, just make it checked
+ this.setChecked(true);
+ }
+};
+
+
+qx.Proto._onkeypress = function(e)
+{
+ switch(e.getKeyIdentifier())
+ {
+ case "Left":
+ var vPrev = this.getPreviousSibling() || this.getParent().getLastChild();
+ if (vPrev && vPrev != this)
+ {
+ // we want to enable the outline border, because
+ // the user used the keyboard for activation
+ delete qx.event.handler.FocusHandler.mouseFocus;
+
+ // focus previous tab
+ vPrev.setFocused(true);
+
+ // and naturally make it also checked
+ vPrev.setChecked(true);
+ }
+ break;
+
+ case "Right":
+ var vNext = this.getNextSibling() || this.getParent().getFirstVisibleChild();
+ if (vNext && vNext != this)
+ {
+ // we want to enable the outline border, because
+ // the user used the keyboard for activation
+ delete qx.event.handler.FocusHandler.mouseFocus;
+
+ // focus next tab
+ vNext.setFocused(true);
+
+ // and naturally make it also checked
+ vNext.setChecked(true);
+ }
+ break;
+ }
+};
+
+
+qx.Proto._ontabclose = function(e){
+ this.createDispatchDataEvent("closetab", this);
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+ */
+
+qx.Proto._modifyShowCloseButton = function(propValue, propOldValue, propData) {
+
+ // if no image exists, then create one
+ if (!this._closeButtonImage) {
+ this._closeButtonImage = new qx.ui.basic.Image(this.getCloseButtonImage());
+ }
+ if (propValue) {
+ this._closeButtonImage.addEventListener("click", this._ontabclose, this);
+ this.add(this._closeButtonImage);
+ } else {
+ this.remove(this._closeButtonImage);
+ this._closeButtonImage.removeEventListener("click", this._ontabclose);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyCloseButtonImage = function(propValue, propOldValue, propData) {
+ if (this._closeButtonImage) {
+ this._closeButtonImage.setSource(propValue);
+ }
+
+ return true;
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEARANCE ADDITIONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._applyStateAppearance = function()
+{
+ this._states.firstChild = this.isFirstVisibleChild();
+ this._states.lastChild = this.isLastVisibleChild();
+ this._states.alignLeft = this.getView().getAlignTabsToLeft();
+ this._states.barTop = this.getView().getPlaceBarOnTop();
+
+ qx.ui.pageview.AbstractButton.prototype._applyStateAppearance.call(this);
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+ */
+
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if(this._closeButtonImage){
+ this._closeButtonImage.dispose();
+ this._closeButtonImage = null;
+ }
+
+ return qx.ui.pageview.AbstractButton.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Page.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Page.js
new file mode 100644
index 0000000000..8f1f654ed4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Page.js
@@ -0,0 +1,30 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tabview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.tabview.Page", qx.ui.pageview.AbstractPage,
+function(vButton) {
+ qx.ui.pageview.AbstractPage.call(this, vButton);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tab-view-page" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Pane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Pane.js
new file mode 100644
index 0000000000..d31d4ee0ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/Pane.js
@@ -0,0 +1,33 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tabview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.tabview.Pane", qx.ui.pageview.AbstractPane,
+function()
+{
+ qx.ui.pageview.AbstractPane.call(this);
+
+ this.setZIndex(1);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tab-view-pane" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/TabView.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/TabView.js
new file mode 100644
index 0000000000..b1cfe9c2b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/pageview/tabview/TabView.js
@@ -0,0 +1,86 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tabview)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.pageview.tabview.TabView", qx.ui.pageview.AbstractPageView,
+function() {
+ qx.ui.pageview.AbstractPageView.call(this, qx.ui.pageview.tabview.Bar, qx.ui.pageview.tabview.Pane);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tab-view" });
+
+qx.OO.addProperty({ name : "alignTabsToLeft", type : "boolean", defaultValue : true });
+qx.OO.addProperty({ name : "placeBarOnTop", type : "boolean", defaultValue : true });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyAlignTabsToLeft = function(propValue, propOldValue, propData)
+{
+ var vBar = this._bar;
+
+ vBar.setHorizontalChildrenAlign(propValue ? "left" : "right");
+
+ // force re-apply of states for all tabs
+ vBar._addChildrenToStateQueue();
+
+ return true;
+}
+
+qx.Proto._modifyPlaceBarOnTop = function(propValue, propOldValue, propData)
+{
+ // This does not work if we use flexible zones
+ // this.setReverseChildrenOrder(!propValue);
+
+ var vBar = this._bar;
+
+ // move bar around
+ if (propValue) {
+ vBar.moveSelfToBegin();
+ } else {
+ vBar.moveSelfToEnd();
+ }
+
+ // force re-apply of states for all tabs
+ vBar._addChildrenToStateQueue();
+
+ return true;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/Popup.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/Popup.js
new file mode 100644
index 0000000000..171016d658
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/Popup.js
@@ -0,0 +1,329 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_popup)
+#optional(qx.manager.object.MenuManager)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.popup.Popup", qx.ui.layout.CanvasLayout,
+function()
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ this.setZIndex(this._minZIndex);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "popup" });
+
+/*!
+ Whether to let the system decide when to hide the popup. Setting
+ this to false gives you better control but it also requires you
+ to handle the closing of the popup.
+*/
+qx.OO.addProperty({ name : "autoHide", type : "boolean", defaultValue : true });
+
+/*!
+ Make element displayed (if switched to true the widget will be created, if needed, too).
+ Instead of qx.ui.core.Widget, the default is false here.
+*/
+qx.OO.changeProperty({ name : "display", type : "boolean", defaultValue : false });
+
+/*!
+ Center the popup on open
+*/
+qx.OO.addProperty({ name : "centered", type : "boolean", defaultValue : false });
+
+/**
+ * Whether the popup should be restricted to the visible area of the page when opened.
+ */
+qx.OO.addProperty({ name : "restrictToPageOnOpen", type : "boolean", defaultValue : true });
+
+
+qx.Proto._showTimeStamp = (new Date(0)).valueOf();
+qx.Proto._hideTimeStamp = (new Date(0)).valueOf();
+
+
+/**
+ * The minimum offset to the left of the page too keep when
+ * {@link #restrictToPageOnOpen} is true (in pixels).
+ */
+qx.Settings.setDefault("restrictToPageLeft", "5");
+
+/**
+ * The minimum offset to the right of the page too keep when
+ * {@link #restrictToPageOnOpen} is true (in pixels).
+ */
+qx.Settings.setDefault("restrictToPageRight", "5");
+
+/**
+ * The minimum offset to the top of the page too keep when
+ * {@link #restrictToPageOnOpen} is true (in pixels).
+ */
+qx.Settings.setDefault("restrictToPageTop", "5");
+
+/**
+ * The minimum offset to the bottom of the page too keep when
+ * {@link #restrictToPageOnOpen} is true (in pixels).
+ */
+qx.Settings.setDefault("restrictToPageBottom", "5");
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEAR/DISAPPEAR
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeAppear = function()
+{
+ qx.ui.layout.CanvasLayout.prototype._beforeAppear.call(this);
+
+ if (this.getRestrictToPageOnOpen()) {
+ this._wantedLeft = this.getLeft();
+
+ if (this._wantedLeft != null) {
+ // Move the popup out of the view so its size could be calculated before
+ // it is positioned.
+ this.setLeft(10000);
+ if (this.getElement() != null) {
+ // The popup was already visible once before
+ // -> Move it immediately before it gets visible again
+ this.getElement().style.left = 10000;
+ }
+ }
+ }
+
+ qx.manager.object.PopupManager.getInstance().add(this);
+ qx.manager.object.PopupManager.getInstance().update(this);
+
+ this._showTimeStamp = (new Date).valueOf();
+ this.bringToFront();
+}
+
+qx.Proto._beforeDisappear = function()
+{
+ qx.ui.layout.CanvasLayout.prototype._beforeDisappear.call(this);
+
+ qx.manager.object.PopupManager.getInstance().remove(this);
+
+ this._hideTimeStamp = (new Date).valueOf();
+}
+
+qx.Proto._afterAppear = function() {
+ qx.ui.layout.CanvasLayout.prototype._afterAppear.call(this);
+
+ if (this.getRestrictToPageOnOpen()) {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+ var docWidth = doc.getClientWidth();
+ var docHeight = doc.getClientHeight();
+ var restrictToPageLeft = parseInt(qx.Settings.getValueOfClass("qx.ui.popup.Popup", "restrictToPageLeft"));
+ var restrictToPageRight = parseInt(qx.Settings.getValueOfClass("qx.ui.popup.Popup", "restrictToPageRight"));
+ var restrictToPageTop = parseInt(qx.Settings.getValueOfClass("qx.ui.popup.Popup", "restrictToPageTop"));
+ var restrictToPageBottom = parseInt(qx.Settings.getValueOfClass("qx.ui.popup.Popup", "restrictToPageBottom"));
+ var left = (this._wantedLeft == null) ? this.getLeft() : this._wantedLeft;
+ var top = this.getTop();
+ var width = this.getBoxWidth();
+ var height = this.getBoxHeight();
+
+ var oldLeft = this.getLeft();
+ var oldTop = top;
+
+ // NOTE: We check right and bottom first, because top and left should have
+ // priority, when both sides are violated.
+ if (left + width > docWidth - restrictToPageRight) {
+ left = docWidth - restrictToPageRight - width;
+ }
+ if (top + height > docHeight - restrictToPageBottom) {
+ top = docHeight - restrictToPageBottom - height;
+ }
+ if (left < restrictToPageLeft) {
+ left = restrictToPageLeft;
+ }
+ if (top < restrictToPageTop) {
+ top = restrictToPageTop;
+ }
+
+ if (left != oldLeft || top != oldTop) {
+ var self = this;
+ window.setTimeout(function() {
+ self.setLeft(left);
+ self.setTop(top);
+ qx.ui.core.Widget.flushGlobalQueues();
+ }, 0);
+ }
+ }
+};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ACTIVE/INACTIVE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._makeActive = function() {
+ this.getFocusRoot().setActiveChild(this);
+}
+
+qx.Proto._makeInactive = function()
+{
+ var vRoot = this.getFocusRoot();
+ var vCurrent = vRoot.getActiveChild();
+
+ if (vCurrent == this) {
+ vRoot.setActiveChild(vRoot);
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ FOCUS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.isFocusable = function() {
+ return false;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ZIndex Positioning
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._minZIndex = 1e6;
+
+qx.Proto.bringToFront = function()
+{
+ this.forceZIndex(Infinity);
+ this._sendTo();
+}
+
+qx.Proto.sendToBack = function()
+{
+ this.forceZIndex(-Infinity);
+ this._sendTo();
+}
+
+qx.Proto._sendTo = function()
+{
+ var vPopups = qx.lang.Object.getValues(qx.manager.object.PopupManager.getInstance().getAll());
+ var vMenus = qx.lang.Object.getValues(qx.manager.object.MenuManager.getInstance().getAll());
+
+ var vAll = vPopups.concat(vMenus).sort(qx.util.Compare.byZIndex);
+ var vLength = vAll.length;
+ var vIndex = this._minZIndex;
+
+ for (var i=0; i<vLength; i++) {
+ vAll[i].setZIndex(vIndex++);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TIMESTAMP HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getShowTimeStamp = function() {
+ return this._showTimeStamp;
+}
+
+qx.Proto.getHideTimeStamp = function() {
+ return this._hideTimeStamp;
+}
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Positions the popup relative to some reference element.
+ * @param el {var} Reference DOM element/widget.
+ * @param offsetX {int} Offset in pixels in X direction (optional).
+ * @param offsetY {int} Offset in pixels in Y direction (optional).
+ */
+qx.Proto.positionRelativeTo = function(el, offsetX, offsetY)
+{
+ if (el instanceof qx.ui.core.Widget) {
+ el = el.getElement();
+ }
+ if (el) {
+ var gecko = qx.sys.Client.getInstance().isGecko();
+ var loc = qx.dom.Location;
+ this.setLocation(loc.getClientAreaLeft(el) - (gecko ? qx.dom.Style.getBorderLeft(el):0) + (offsetX || 0),
+ loc.getClientAreaTop(el) - (gecko ? qx.dom.Style.getBorderTop(el):0) + (offsetY || 0));
+ } else {
+ this.warn('Missing reference element');
+ }
+}
+
+qx.Proto.centerToBrowser = function()
+{
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var left = (d.getClientWidth() - this.getBoxWidth()) / 2;
+ var top = (d.getClientHeight() - this.getBoxHeight()) / 2;
+
+ this.setLeft(left < 0 ? 0 : left);
+ this.setTop(top < 0 ? 0 : top);
+}
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._showTimeStamp = null;
+ this._hideTimeStamp = null;
+
+ return qx.ui.layout.CanvasLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/PopupAtom.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/PopupAtom.js
new file mode 100644
index 0000000000..eee111b84e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/PopupAtom.js
@@ -0,0 +1,51 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_popup)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.popup.PopupAtom", qx.ui.popup.Popup,
+function(vLabel, vIcon)
+{
+ qx.ui.popup.Popup.call(this);
+
+ this._atom = new qx.ui.basic.Atom(vLabel, vIcon);
+ this._atom.setParent(this);
+});
+
+qx.Proto.getAtom = function() {
+ return this._atom;
+}
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._atom)
+ {
+ this._atom.dispose();
+ this._atom = null;
+ }
+
+ return qx.ui.popup.Popup.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/ToolTip.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/ToolTip.js
new file mode 100644
index 0000000000..6fd70f61ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/popup/ToolTip.js
@@ -0,0 +1,255 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_popup)
+#load(qx.manager.object.ToolTipManager)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.popup.ToolTip", qx.ui.popup.PopupAtom,
+function(vLabel, vIcon)
+{
+ // ************************************************************************
+ // INIT
+ // ************************************************************************
+
+ qx.ui.popup.PopupAtom.call(this, vLabel, vIcon);
+
+ // Apply shadow
+ this.setStyleProperty("filter", "progid:DXImageTransform.Microsoft.Shadow(color='Gray', Direction=135, Strength=4)");
+
+
+ // ************************************************************************
+ // TIMER
+ // ************************************************************************
+
+ this._showTimer = new qx.client.Timer(this.getShowInterval());
+ this._showTimer.addEventListener("interval", this._onshowtimer, this);
+
+ this._hideTimer = new qx.client.Timer(this.getHideInterval());
+ this._hideTimer.addEventListener("interval", this._onhidetimer, this);
+
+
+ // ************************************************************************
+ // EVENTS
+ // ************************************************************************
+ this.addEventListener("mouseover", this._onmouseover);
+ this.addEventListener("mouseout", this._onmouseover);
+});
+
+qx.Proto._minZIndex = 1e7;
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tool-tip" });
+
+qx.OO.addProperty({ name : "hideOnHover", type : "boolean", defaultValue : true });
+
+qx.OO.addProperty({ name : "mousePointerOffsetX", type : "number", defaultValue : 1 });
+qx.OO.addProperty({ name : "mousePointerOffsetY", type : "number", defaultValue : 20 });
+
+qx.OO.addProperty({ name : "showInterval", type : "number", defaultValue : 1000 });
+qx.OO.addProperty({ name : "hideInterval", type : "number", defaultValue : 4000 });
+
+qx.OO.addProperty({ name : "boundToWidget", type : "object", instance : "qx.ui.core.Widget" });
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyHideInterval = function(propValue, propOldValue, propData)
+{
+ this._hideTimer.setInterval(propValue);
+ return true;
+}
+
+qx.Proto._modifyShowInterval = function(propValue, propOldValue, propData)
+{
+ this._showTimer.setInterval(propValue);
+ return true;
+}
+
+qx.Proto._modifyBoundToWidget = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this.setParent(propValue.getTopLevelWidget());
+ }
+ else if (propOldValue)
+ {
+ this.setParent(null);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEAR/DISAPPEAR
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeAppear = function()
+{
+ qx.ui.popup.PopupAtom.prototype._beforeAppear.call(this);
+
+ this._stopShowTimer();
+ this._startHideTimer();
+}
+
+qx.Proto._beforeDisappear = function() {
+ qx.ui.popup.PopupAtom.prototype._beforeDisappear.call(this);
+
+ this._stopHideTimer();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TIMER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._startShowTimer = function()
+{
+ if(!this._showTimer.getEnabled()) {
+ this._showTimer.start();
+ }
+}
+
+qx.Proto._startHideTimer = function()
+{
+ if(!this._hideTimer.getEnabled()) {
+ this._hideTimer.start();
+ }
+}
+
+qx.Proto._stopShowTimer = function()
+{
+ if(this._showTimer.getEnabled()) {
+ this._showTimer.stop();
+ }
+}
+
+qx.Proto._stopHideTimer = function()
+{
+ if(this._hideTimer.getEnabled()) {
+ this._hideTimer.stop();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseover = function(e)
+{
+ if(this.getHideOnHover()) {
+ this.hide();
+ }
+}
+
+qx.Proto._onshowtimer = function(e)
+{
+ this.setLeft(qx.event.type.MouseEvent.getPageX() + this.getMousePointerOffsetX());
+ this.setTop(qx.event.type.MouseEvent.getPageY() + this.getMousePointerOffsetY());
+
+ this.show();
+
+ // we need a manual flushing because it could be that
+ // there is currently no event which do this for us
+ // and so show the tooltip.
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ return true;
+}
+
+qx.Proto._onhidetimer = function(e) {
+ return this.hide();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if(this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("mouseover", this._onmouseover);
+ this.removeEventListener("mouseout", this._onmouseover);
+
+ if (this._showTimer)
+ {
+ this._showTimer.removeEventListener("interval", this._onshowtimer, this);
+ this._showTimer.dispose();
+ this._showTimer = null;
+ }
+
+ if (this._hideTimer)
+ {
+ this._hideTimer.removeEventListener("interval", this._onhidetimer, this);
+ this._hideTimer.dispose();
+ this._hideTimer = null;
+ }
+
+ return qx.ui.popup.PopupAtom.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/resizer/Resizer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/resizer/Resizer.js
new file mode 100755
index 0000000000..7ebd182268
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/resizer/Resizer.js
@@ -0,0 +1,417 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * David Perez (david-perez)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_resizer)
+
+************************************************************************ */
+
+/**
+ * This class acts as a wrapper for other child, and allows it to be resized (not moved), normally in
+ * the right and/or bottom directions. Child can be e.g. a qx.ui.form.TextArea,
+ * qx.ui.table.Table or qx.ui.form.List. It is an alternative to splitters.
+ */
+qx.OO.defineClass('qx.ui.resizer.Resizer', qx.ui.layout.CanvasLayout,
+function(child)
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ this._frame = new qx.ui.basic.Terminator;
+ this._frame.setAppearance("resizer-frame");
+
+ this._registerResizeEvents();
+
+ this.setAppearance('resizer');
+ this.setResizeableWest(false);
+ this.setResizeableNorth(false);
+
+ this.setMinWidth("auto");
+ this.setMinHeight("auto");
+ this.auto();
+
+ if (child)
+ {
+ // Remove child border, as the resizer has already its own border.
+ child.setBorder(new qx.renderer.border.Border(0));
+ this.add(this._child = child);
+ }
+});
+
+
+
+
+
+/*!
+ If the window is resizeable in the left direction.
+*/
+qx.OO.addProperty({ name : "resizeableWest", type : "boolean", defaultValue : true });
+/*!
+ If the window is resizeable in the top direction.
+*/
+qx.OO.addProperty({ name : "resizeableNorth", type : "boolean", defaultValue : true });
+/*!
+ If the window is resizeable in the right direction.
+*/
+qx.OO.addProperty({ name : "resizeableEast", type : "boolean", defaultValue : true });
+/*!
+ If the window is resizeable in the bottom direction.
+*/
+qx.OO.addProperty({ name : "resizeableSouth", type : "boolean", defaultValue : true });
+
+/*!
+ If the window is resizeable
+*/
+qx.OO.addPropertyGroup({ name : "resizeable", members : [ "west", "north", "east", "south" ], mode : "shorthand" });
+
+/*!
+ The resize method to use
+*/
+qx.OO.addProperty({ name : "resizeMethod", type : "string", defaultValue : "frame", possibleValues : [ "opaque", "lazyopaque", "frame", "translucent" ] });
+
+/*!
+ The resize method to use
+*/
+qx.OO.addProperty({ name : "resizeMethod", type : "string", defaultValue : "frame", possibleValues : [ "opaque", "lazyopaque", "frame", "translucent" ] });
+
+
+
+
+
+
+/**
+ * Adjust so that it returns a boolean instead of an array.
+ * @return {boolean}
+ */
+qx.Proto.isResizeable = qx.Proto.getResizeable = function() {
+ return this.getResizeableWest() || this.getResizeableEast() || this.getResizeableNorth() || this.getResizeableSouth();
+}
+
+qx.Proto._registerResizeEvents = function() {
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+ this.addEventListener("mousemove", this._onmousemove);
+}
+
+qx.Proto._onmousedown = function(e)
+{
+ if (this._resizeNorth || this._resizeSouth || this._resizeWest || this._resizeEast)
+ {
+ // enable capturing
+ this.setCapture(true);
+
+ // activate global cursor
+ this.getTopLevelWidget().setGlobalCursor(this.getCursor());
+
+ // caching element
+ var el = this.getElement();
+
+ // measuring and caching of values for resize session
+ var pa = this.getTopLevelWidget();
+ var pl = pa.getElement();
+
+ var l = qx.dom.Location.getPageAreaLeft(pl);
+ var t = qx.dom.Location.getPageAreaTop(pl);
+ var r = qx.dom.Location.getPageAreaRight(pl);
+ var b = qx.dom.Location.getPageAreaBottom(pl);
+
+ // handle frame and translucently
+ switch(this.getResizeMethod())
+ {
+ case "translucent":
+ this.setOpacity(0.5);
+ break;
+
+ case "frame":
+ var f = this._frame;
+
+ if (f.getParent() != pa)
+ {
+ f.setParent(pa);
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+
+ f._applyRuntimeLeft(qx.dom.Location.getPageBoxLeft(el) - l);
+ f._applyRuntimeTop(qx.dom.Location.getPageBoxTop(el) - t);
+
+ f._applyRuntimeWidth(qx.dom.Dimension.getBoxWidth(el));
+ f._applyRuntimeHeight(qx.dom.Dimension.getBoxHeight(el));
+
+ f.setZIndex(this.getZIndex() + 1);
+
+ break;
+ }
+
+ // create resize session
+ var s = this._resizeSession = {};
+ var minRef = this._child;
+
+ if (this._resizeWest)
+ {
+ s.boxWidth = qx.dom.Dimension.getBoxWidth(el);
+ s.boxRight = qx.dom.Location.getPageBoxRight(el);
+ }
+
+ if (this._resizeWest || this._resizeEast)
+ {
+ s.boxLeft = qx.dom.Location.getPageBoxLeft(el);
+
+ s.parentAreaOffsetLeft = l;
+ s.parentAreaOffsetRight = r;
+
+ s.minWidth = minRef.getMinWidthValue();
+ s.maxWidth = minRef.getMaxWidthValue();
+ }
+
+ if (this._resizeNorth)
+ {
+ s.boxHeight = qx.dom.Dimension.getBoxHeight(el);
+ s.boxBottom = qx.dom.Location.getPageBoxBottom(el);
+ }
+
+ if (this._resizeNorth || this._resizeSouth)
+ {
+ s.boxTop = qx.dom.Location.getPageBoxTop(el);
+
+ s.parentAreaOffsetTop = t;
+ s.parentAreaOffsetBottom = b;
+
+ s.minHeight = minRef.getMinHeightValue();
+ s.maxHeight = minRef.getMaxHeightValue();
+ }
+ }
+ else
+ {
+ // cleanup resize session
+ delete this._resizeSession;
+ }
+
+ // stop event
+ e.stopPropagation();
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var s = this._resizeSession;
+
+ if (s)
+ {
+ // disable capturing
+ this.setCapture(false);
+
+ // deactivate global cursor
+ this.getTopLevelWidget().setGlobalCursor(null);
+
+ // sync sizes to frame
+ switch(this.getResizeMethod())
+ {
+ case "frame":
+ var o = this._frame;
+ if (!(o && o.getParent())) {
+ break;
+ }
+ // no break here
+
+ case "lazyopaque":
+ if (qx.util.Validation.isValidNumber(s.lastLeft)) {
+ this.setLeft(s.lastLeft);
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastTop)) {
+ this.setTop(s.lastTop);
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastWidth)) {
+ var child = this.getChildren()[0];
+ if (child) {
+ child.setWidth(s.lastWidth);
+ }
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastHeight)) {
+ var child = this.getChildren()[0];
+ if (child) {
+ child.setHeight(s.lastHeight);
+ }
+ }
+
+ if (this.getResizeMethod() == "frame") {
+ this._frame.setParent(null);
+ }
+ break;
+
+ case "translucent":
+ this.setOpacity(null);
+ break;
+ }
+
+ // cleanup session
+ delete this._resizeNorth;
+ delete this._resizeEast;
+ delete this._resizeSouth;
+ delete this._resizeWest;
+
+ delete this._resizeSession;
+ }
+
+ // stop event
+ e.stopPropagation();
+}
+
+qx.Proto._near = function(p, e) {
+ return e > (p - 5) && e < (p + 5);
+}
+
+qx.Proto._onmousemove = function(e)
+{
+ var s = this._resizeSession;
+
+ if (s)
+ {
+ if (this._resizeWest)
+ {
+ s.lastWidth = qx.lang.Number.limit(s.boxWidth + s.boxLeft - Math.max(e.getPageX(), s.parentAreaOffsetLeft), s.minWidth, s.maxWidth);
+ s.lastLeft = s.boxRight - s.lastWidth - s.parentAreaOffsetLeft;
+ }
+ else if (this._resizeEast)
+ {
+ s.lastWidth = qx.lang.Number.limit(Math.min(e.getPageX(), s.parentAreaOffsetRight) - s.boxLeft, s.minWidth, s.maxWidth);
+ }
+
+ if (this._resizeNorth)
+ {
+ s.lastHeight = qx.lang.Number.limit(s.boxHeight + s.boxTop - Math.max(e.getPageY(), s.parentAreaOffsetTop), s.minHeight, s.maxHeight);
+ s.lastTop = s.boxBottom - s.lastHeight - s.parentAreaOffsetTop;
+ }
+ else if (this._resizeSouth)
+ {
+ s.lastHeight = qx.lang.Number.limit(Math.min(e.getPageY(), s.parentAreaOffsetBottom) - s.boxTop, s.minHeight, s.maxHeight);
+ }
+
+ switch(this.getResizeMethod())
+ {
+ case "opaque":
+ case "translucent":
+ if (this._resizeWest || this._resizeEast)
+ {
+ this.setWidth(s.lastWidth);
+
+ if (this._resizeWest) {
+ this.setLeft(s.lastLeft);
+ }
+ }
+
+ if (this._resizeNorth || this._resizeSouth)
+ {
+ this.setHeight(s.lastHeight);
+
+ if (this._resizeNorth) {
+ this.setTop(s.lastTop);
+ }
+ }
+
+ break;
+
+ default:
+ var o = this.getResizeMethod() == "frame" ? this._frame : this;
+
+ if (this._resizeWest || this._resizeEast)
+ {
+ o._applyRuntimeWidth(s.lastWidth);
+
+ if (this._resizeWest) {
+ o._applyRuntimeLeft(s.lastLeft);
+ }
+ }
+
+ if (this._resizeNorth || this._resizeSouth)
+ {
+ o._applyRuntimeHeight(s.lastHeight);
+
+ if (this._resizeNorth) {
+ o._applyRuntimeTop(s.lastTop);
+ }
+ }
+ }
+ }
+ else
+ {
+ var resizeMode = "";
+ var el = this.getElement();
+
+ this._resizeNorth = this._resizeSouth = this._resizeWest = this._resizeEast = false;
+
+ if (this._near(qx.dom.Location.getPageBoxTop(el), e.getPageY()))
+ {
+ if (this.getResizeableNorth()) {
+ resizeMode = "n";
+ this._resizeNorth = true;
+ }
+ }
+ else if (this._near(qx.dom.Location.getPageBoxBottom(el), e.getPageY()))
+ {
+ if (this.getResizeableSouth()) {
+ resizeMode = "s";
+ this._resizeSouth = true;
+ }
+ }
+
+ if (this._near(qx.dom.Location.getPageBoxLeft(el), e.getPageX()))
+ {
+ if (this.getResizeableWest()) {
+ resizeMode += "w";
+ this._resizeWest = true;
+ }
+ }
+ else if (this._near(qx.dom.Location.getPageBoxRight(el), e.getPageX()))
+ {
+ if (this.getResizeableEast()) {
+ resizeMode += "e";
+ this._resizeEast = true;
+ }
+ }
+
+ if (this._resizeNorth || this._resizeSouth || this._resizeWest || this._resizeEast)
+ {
+ this.setCursor(resizeMode + "-resize");
+ }
+ else
+ {
+ this.setCursor(null);
+ }
+ }
+
+ // stop event
+ e.stopPropagation();
+}
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._frame)
+ {
+ this._frame.dispose();
+ this._frame = null;
+ }
+
+ return qx.ui.layout.CanvasLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/HorizontalSplitPane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/HorizontalSplitPane.js
new file mode 100644
index 0000000000..898ce097e4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/HorizontalSplitPane.js
@@ -0,0 +1,58 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Volker Pauli
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_splitpane)
+
+************************************************************************ */
+
+/**
+ *
+ * Creates a new instance of a horizontal SplitPane.<br /><br />
+ *
+ * new qx.ui.splitpane.HorizontalSplitPane()<br />
+ * new qx.ui.splitpane.HorizontalSplitPane(firstSize, secondSize)
+ *
+ * @param firstSize {string} The size of the left pane. Allowed values are any by {@see qx.ui.core.Widget} supported unit.
+ * @param secondSize {string} The size of the right pane. Allowed values are any by {@see qx.ui.core.Widget} supported unit.
+ */
+qx.OO.defineClass("qx.ui.splitpane.HorizontalSplitPane", qx.ui.splitpane.SplitPane,
+function(firstSize, secondSize) {
+ qx.ui.splitpane.SplitPane.call(this, "horizontal", firstSize, secondSize);
+});
+
+
+
+
+
+/*
+------------------------------------------------------------------------------------
+ DISPOSER
+------------------------------------------------------------------------------------
+ */
+
+/**
+ * Garbage collection
+ */
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.ui.splitpane.SplitPane.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/SplitPane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/SplitPane.js
new file mode 100644
index 0000000000..b0b817f8ac
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/SplitPane.js
@@ -0,0 +1,759 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Volker Pauli (vpauli)
+ * Sebastian Werner (wpbasti)
+ * Carsten Lergenmueller (carstenL)
+
+ ************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_splitpane)
+
+ ************************************************************************ */
+
+
+/**
+ * Creates a new instance of a SplitPane. It allows the user to dynamically resize
+ * the areas dropping the border between.
+ *
+ * new qx.ui.splitpane.SplitPane(orientation)
+ * new qx.ui.splitpane.SplitPane(orientation, firstSize, secondSize)
+ *
+ * @param orientation {string} The orientation of the splitpane control. Allowed values are "horizontal" (default) and "vertical". This is the same type as used in {@link qx.ui.layout.BoxLayout#orientation}.
+ * @param firstSize {string} The size of the left (top) pane. Allowed values are any by {@link qx.ui.core.Widget} supported unit.
+ * @param secondSize {string} The size of the right (bottom) pane. Allowed values are any by {@link qx.ui.core.Widget} supported unit.
+ */
+qx.OO.defineClass("qx.ui.splitpane.SplitPane", qx.ui.layout.CanvasLayout,
+function(orientation, firstSize, secondSize)
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ // CREATE INNER BOX LAYOUT
+ var box = this._box = new qx.ui.layout.BoxLayout;
+ box.setEdge(0);
+ this.add(box);
+
+ /*
+
+ the splitpane itself is a boxlayout resides on top of a canvas for easier computing of positional values
+
+ ---------------------------------------------------------------------------------------
+ | canvas |
+ | ----------------------------------------------------------------------------------- |
+ | | box | |
+ | | --------------------------- --- ----------------------------------------------- | |
+ | | | | | | | | | |
+ | | | firstArea | |s| | secondArea | | |
+ | | | | |p| | | | |
+ | | | | |l| | | | |
+ | | | | |i| | | | |
+ | | | | |t| | | | |
+ | | | | |t| | | | |
+ | | | | |e| | | | |
+ | | | | |r| | | | |
+ | | | | | | | | | |
+ | | --------------------------- --- ----------------------------------------------- | |
+ | ----------------------------------------------------------------------------------- |
+ | |
+ ---------------------------------------------------------------------------------------
+
+ */
+
+ // CREATE SLIDER
+ this._slider = new qx.ui.layout.CanvasLayout;
+ this._slider.setAppearance("splitpane-slider");
+ this._slider.setStyleProperty("fontSize", "0px");
+ this._slider.setStyleProperty("lineHeight", "0px");
+ this._slider.hide();
+ this._slider._pane = this;
+ this.add(this._slider);
+
+ // CREATE SPLITTER
+ this._splitter = new qx.ui.layout.CanvasLayout;
+ this._splitter.setStyleProperty("fontSize", "0px");
+ this._splitter.setStyleProperty("lineHeight", "0px");
+ this._splitter.setAppearance("splitpane-splitter");
+ this._splitter._pane = this;
+
+ // PATCH METHODS
+ this._slider._applyRuntimeLeft = this._splitter._applyRuntimeLeft = this._applyRuntimeLeftWrapper;
+ this._slider._applyRuntimeTop = this._splitter._applyRuntimeTop = this._applyRuntimeTopWrapper;
+
+ // CREATE KNOB
+ this._knob = new qx.ui.basic.Image;
+ this._knob.setAppearance("splitpane-knob");
+ this._knob.setVisibility(false);
+ this.add(this._knob);
+
+ // CREATE AREAS
+ this._firstArea = new qx.ui.layout.CanvasLayout;
+ this._secondArea = new qx.ui.layout.CanvasLayout;
+
+ // FILL BOX
+ box.add(this._firstArea, this._splitter, this._secondArea);
+
+ // APPLY DIMENSIONS
+ this.setFirstSize(firstSize || "1*");
+ this.setSecondSize(secondSize || "1*");
+
+ // APPLY ORIENTATION
+ this.setOrientation(orientation || "horizontal");
+});
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+ */
+
+/**
+ * Appearance change
+ */
+qx.OO.changeProperty({ name : "appearance", defaultValue : "splitpane" });
+
+/**
+ * Show the knob
+ */
+qx.OO.addProperty({ name : "showKnob", type : "boolean", allowNull : false, defaultValue : false });
+
+/**
+ * The layout method for the splitpane. If true, the content will updated immediatly.
+ */
+qx.OO.addProperty({ name : "liveResize", type : "boolean", allowNull : false, defaultValue : false, getAlias : "isLiveResize"});
+
+/**
+ * The orientation of the splitpane control. Allowed values are "horizontal" (default) and "vertical".
+ */
+qx.OO.addProperty({ name : "orientation", type : "string", possibleValues : [ "horizontal", "vertical" ] });
+
+/**
+ * The size of the first (left/top) area.
+ */
+qx.OO.addProperty({ name : "firstSize" });
+
+/**
+ * The size of the second (right/bottom) area.
+ */
+qx.OO.addProperty({ name : "secondSize" });
+
+/**
+ * Size of the splitter
+ */
+qx.OO.addProperty({ name : "splitterSize", defaultValue : 4 });
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PUBLIC METHODS
+---------------------------------------------------------------------------
+*/
+
+
+/**
+ * adds one or more widget(s) to the left pane
+ *
+ *@param widget (qx.ui.core.Parent)
+ */
+qx.Proto.addLeft = function() {
+ var c = this.getFirstArea();
+ return c.add.apply(c, arguments);
+}
+
+/**
+ * adds one or more widget(s) to the top pane
+ *
+ *@param widget (qx.ui.core.Parent)
+ */
+qx.Proto.addTop = function() {
+ var c = this.getFirstArea();
+ return c.add.apply(c, arguments);
+}
+
+/**
+ * adds one or more widget(s) to the right pane
+ *
+ *@param widget (qx.ui.core.Parent)
+ */
+qx.Proto.addRight = function() {
+ var c = this.getSecondArea();
+ return c.add.apply(c, arguments);
+}
+
+/**
+ * adds one or more widget(s) to the bottom pane
+ *
+ *@param widget (qx.ui.core.Parent)
+ */
+qx.Proto.addBottom = function() {
+ var c = this.getSecondArea();
+ return c.add.apply(c, arguments);
+}
+
+/**
+ * Returns the splitter.
+ *
+ * @return {qx.ui.core.Widget} The splitter.
+ */
+qx.Proto.getSplitter = function() {
+ return this._splitter;
+}
+
+/**
+ * Returns the knob.
+ *
+ * @return {qx.ui.core.Widget} The knob.
+ */
+qx.Proto.getKnob = function() {
+ return this._knob;
+}
+
+
+
+
+
+
+/**
+ * Returns the left area (CanvasLayout)
+ *
+ * @return {qx.ui.layout.CanvasLayout}
+ */
+qx.Proto.getLeftArea = function() {
+ return this.getFirstArea();
+}
+
+/**
+ * Returns the top area (CanvasLayout)
+ *
+ * @return {qx.ui.layout.CanvasLayout}
+ */
+qx.Proto.getTopArea = function() {
+ return this.getFirstArea();
+}
+
+/**
+ * Returns the right area (CanvasLayout)
+ *
+ * @return {qx.ui.layout.CanvasLayout}
+ */
+qx.Proto.getRightArea = function() {
+ return this.getSecondArea();
+}
+
+/**
+ * Returns the bottom area (CanvasLayout)
+ *
+ * @return {qx.ui.layout.CanvasLayout}
+ */
+qx.Proto.getBottomArea = function() {
+ return this.getSecondArea();
+}
+
+/**
+ * Returns the first area (CanvasLayout)
+ *
+ * @return {qx.ui.layout.CanvasLayout}
+ */
+qx.Proto.getFirstArea = function() {
+ return this._firstArea;
+}
+
+/**
+ * Returns the second area (CanvasLayout)
+ *
+ * @return {qx.ui.layout.CanvasLayout}
+ */
+qx.Proto.getSecondArea = function() {
+ return this._secondArea;
+}
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyShowKnob = function(propValue, propOldValue, propData)
+{
+ this._knob.setVisibility(propValue);
+ return true;
+}
+
+qx.Proto._modifyOrientation = function(propValue, propOldValue, propData)
+{
+ // sync orientation to layout
+ this._box.setOrientation(propValue);
+
+ switch(propOldValue)
+ {
+ case "horizontal":
+ // remove old listeners
+ this._splitter.removeEventListener("mousedown", this._onSplitterMouseDownX, this);
+ this._splitter.removeEventListener("mousemove", this._onSplitterMouseMoveX, this);
+ this._splitter.removeEventListener("mouseup", this._onSplitterMouseUpX, this);
+ this._knob.removeEventListener("mousedown", this._onSplitterMouseDownX, this);
+ this._knob.removeEventListener("mousemove", this._onSplitterMouseMoveX, this);
+ this._knob.removeEventListener("mouseup", this._onSplitterMouseUpX, this);
+
+ // reconfigure states
+ this._splitter.removeState("horizontal");
+ this._knob.removeState("horizontal");
+
+ // reset old dimensions
+ this._firstArea.setWidth(null);
+ this._secondArea.setWidth(null);
+ this._splitter.setWidth(null);
+
+ break;
+
+ case "vertical":
+ // remove old listeners
+ this._splitter.removeEventListener("mousedown", this._onSplitterMouseDownY, this);
+ this._splitter.removeEventListener("mousemove", this._onSplitterMouseMoveY, this);
+ this._splitter.removeEventListener("mouseup", this._onSplitterMouseUpY, this);
+ this._knob.removeEventListener("mousedown", this._onSplitterMouseDownY, this);
+ this._knob.removeEventListener("mousemove", this._onSplitterMouseMoveY, this);
+ this._knob.removeEventListener("mouseup", this._onSplitterMouseUpY, this);
+
+ // reconfigure states
+ this._splitter.removeState("vertical");
+ this._knob.removeState("vertical");
+
+ // reset old dimensions
+ this._firstArea.setHeight(null);
+ this._secondArea.setHeight(null);
+ this._splitter.setHeight(null);
+
+ break;
+ }
+
+ switch(propValue)
+ {
+ case "horizontal":
+ // add new listeners
+ this._splitter.addEventListener("mousemove", this._onSplitterMouseMoveX, this);
+ this._splitter.addEventListener("mousedown", this._onSplitterMouseDownX, this);
+ this._splitter.addEventListener("mouseup", this._onSplitterMouseUpX, this);
+ this._knob.addEventListener("mousemove", this._onSplitterMouseMoveX, this);
+ this._knob.addEventListener("mousedown", this._onSplitterMouseDownX, this);
+ this._knob.addEventListener("mouseup", this._onSplitterMouseUpX, this);
+
+ // reconfigure states
+ this._splitter.addState("horizontal");
+ this._knob.addState("horizontal");
+
+ // apply images
+ this._knob.setSource("widget/splitpane/knob-horizontal.png");
+
+ break;
+
+ case "vertical":
+ // add new listeners
+ this._splitter.addEventListener("mousedown", this._onSplitterMouseDownY, this);
+ this._splitter.addEventListener("mousemove", this._onSplitterMouseMoveY, this);
+ this._splitter.addEventListener("mouseup", this._onSplitterMouseUpY, this);
+ this._knob.addEventListener("mousedown", this._onSplitterMouseDownY, this);
+ this._knob.addEventListener("mousemove", this._onSplitterMouseMoveY, this);
+ this._knob.addEventListener("mouseup", this._onSplitterMouseUpY, this);
+
+ // reconfigure states
+ this._splitter.addState("vertical");
+ this._knob.addState("vertical");
+
+ // apply images
+ this._knob.setSource("widget/splitpane/knob-vertical.png");
+
+ break;
+ }
+
+ // apply new dimensions
+ this._syncFirstSize();
+ this._syncSecondSize();
+ this._syncSplitterSize();
+
+ return true;
+};
+
+qx.Proto._modifyFirstSize = function(propValue, propOldValue, propData)
+{
+ this._syncFirstSize();
+ return true;
+}
+
+qx.Proto._modifySecondSize = function(propValue, propOldValue, propData)
+{
+ this._syncSecondSize();
+ return true;
+}
+
+qx.Proto._modifySplitterSize = function(propValue, propOldValue, propData)
+{
+ this._syncSplitterSize();
+ return true;
+}
+
+qx.Proto._syncFirstSize = function()
+{
+ switch(this.getOrientation())
+ {
+ case "horizontal":
+ this._firstArea.setWidth(this.getFirstSize());
+ break;
+
+ case "vertical":
+ this._firstArea.setHeight(this.getFirstSize());
+ break;
+ }
+}
+
+qx.Proto._syncSecondSize = function()
+{
+ switch(this.getOrientation())
+ {
+ case "horizontal":
+ this._secondArea.setWidth(this.getSecondSize());
+ break;
+
+ case "vertical":
+ this._secondArea.setHeight(this.getSecondSize());
+ break;
+ }
+}
+
+qx.Proto._syncSplitterSize = function()
+{
+ switch(this.getOrientation())
+ {
+ case "horizontal":
+ this._splitter.setWidth(this.getSplitterSize());
+ break;
+
+ case "vertical":
+ this._splitter.setHeight(this.getSplitterSize());
+ break;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Initializes drag session in case of a mousedown event on splitter in a horizontal splitpane.
+ *
+ * @param e {qx.event.MouseEvent} The event itself.
+ */
+qx.Proto._onSplitterMouseDownX = function(e)
+{
+ if (!e.isLeftButtonPressed()) {
+ return;
+ }
+
+ this._commonMouseDown();
+
+ // activate global cursor
+ this.getTopLevelWidget().setGlobalCursor("col-resize");
+ this._slider.addState("dragging");
+ this._knob.addState("dragging");
+
+ // initialize the drag session
+ this._dragMin = qx.dom.Location.getPageInnerLeft(this._box.getElement());
+ this._dragMax = this._dragMin + this._box.getInnerWidth() - this._splitter.getBoxWidth();
+ this._dragOffset = e.getPageX() - qx.dom.Location.getPageBoxLeft(this._splitter.getElement());
+}
+
+/**
+ * Initializes drag session in case of a mousedown event on splitter in a vertical splitpane.
+ *
+ * @param e {qx.event.MouseEvent} The event itself.
+ */
+qx.Proto._onSplitterMouseDownY = function(e)
+{
+ if (!e.isLeftButtonPressed()) {
+ return;
+ }
+
+ this._commonMouseDown();
+
+ // activate global cursor
+ this.getTopLevelWidget().setGlobalCursor("row-resize");
+ this._slider.addState("dragging");
+ this._knob.addState("dragging");
+
+ // initialize the drag session
+ // dragStart = position of layout + mouse offset on splitter
+ this._dragMin = qx.dom.Location.getPageInnerTop(this._box.getElement());
+ this._dragMax = this._dragMin + this._box.getInnerHeight() - this._splitter.getBoxHeight();
+ this._dragOffset = e.getPageY() - qx.dom.Location.getPageBoxTop(this._splitter.getElement());
+}
+
+qx.Proto._commonMouseDown = function()
+{
+ // enable capturing
+ this._splitter.setCapture(true);
+
+ // initialize the slider
+ if(!this.isLiveResize())
+ {
+ this._slider.setLeft(this._splitter.getOffsetLeft());
+ this._slider.setTop(this._splitter.getOffsetTop());
+ this._slider.setWidth(this._splitter.getBoxWidth());
+ this._slider.setHeight(this._splitter.getBoxHeight());
+
+ this._slider.show();
+ }
+}
+
+
+
+
+
+
+
+
+/**
+ * Move the splitter in case of a mousemove event on splitter in a horizontal splitpane.
+ *
+ * @param e {qx.event.MouseEvent} The event itself.
+ */
+qx.Proto._onSplitterMouseMoveX = function(e)
+{
+ if (!this._splitter.getCapture()) {
+ return;
+ }
+
+ this.isLiveResize() ? this._syncX(e) : this._slider._applyRuntimeLeft(this._normalizeX(e));
+ e.preventDefault();
+}
+
+/**
+ * Move the splitter in case of a mousemove event on splitter in a vertical splitpane.
+ *
+ * @param e {qx.event.MouseEvent} The event itself.
+ */
+qx.Proto._onSplitterMouseMoveY = function(e)
+{
+ if (!this._splitter.getCapture()) {
+ return;
+ }
+
+ this.isLiveResize() ? this._syncY(e) : this._slider._applyRuntimeTop(this._normalizeY(e));
+ e.preventDefault();
+}
+
+
+
+
+
+
+
+/**
+ * Ends the drag session and computes the new dimensions of panes in case of a mouseup event on splitter in a horizontal splitpane.
+ *
+ * @param e {qx.event.MouseEvent} The event itself.
+ */
+qx.Proto._onSplitterMouseUpX = function(e)
+{
+ if (!this._splitter.getCapture()) {
+ return;
+ }
+
+ if(!this.isLiveResize()) {
+ this._syncX(e);
+ }
+
+ this._commonMouseUp();
+}
+
+/**
+ * Ends the drag session and computes the new dimensions of panes in case of a mouseup event on splitter in a vertical splitpane.
+ *
+ * @param e {qx.event.MouseEvent} The event itself.
+ */
+qx.Proto._onSplitterMouseUpY = function(e)
+{
+ if (!this._splitter.getCapture()) {
+ return;
+ }
+
+ if(!this.isLiveResize()) {
+ this._syncY(e);
+ }
+
+ this._commonMouseUp();
+}
+
+qx.Proto._commonMouseUp = function()
+{
+ // hide helpers
+ this._slider.hide();
+
+ // disable capturing
+ this._splitter.setCapture(false);
+
+ // reset the global cursor
+ this.getTopLevelWidget().setGlobalCursor(null);
+
+ // cleanup dragsession
+ this._slider.removeState("dragging");
+ this._knob.removeState("dragging");
+}
+
+qx.Proto._syncX = function(e)
+{
+ var first = this._normalizeX(e);
+ var second = this._box.getInnerWidth() - this._splitter.getBoxWidth() - first;
+
+ this._syncCommon(first, second);
+}
+
+qx.Proto._syncY = function(e)
+{
+ var first = this._normalizeY(e);
+ var second = this._box.getInnerHeight() - this._splitter.getBoxHeight() - first;
+
+ this._syncCommon(first, second);
+}
+
+qx.Proto._syncCommon = function(first, second)
+{
+ this.setFirstSize(first + "*");
+ this.setSecondSize(second + "*");
+}
+
+qx.Proto._normalizeX = function(e) {
+ return qx.lang.Number.limit(e.getPageX() - this._dragOffset, this._dragMin, this._dragMax) - this._dragMin;
+}
+
+qx.Proto._normalizeY = function(e) {
+ return qx.lang.Number.limit(e.getPageY() - this._dragOffset, this._dragMin, this._dragMax) - this._dragMin;
+}
+
+qx.Proto._applyRuntimeLeftWrapper = function(v)
+{
+ if (this._pane.getOrientation() == "horizontal") {
+ this._pane._knob._applyRuntimeLeft(v);
+ }
+
+ return this.constructor.prototype._applyRuntimeLeft.call(this, v);
+}
+
+qx.Proto._applyRuntimeTopWrapper = function(v)
+{
+ if (this._pane.getOrientation() == "vertical") {
+ this._pane._knob._applyRuntimeTop(v);
+ }
+
+ return this.constructor.prototype._applyRuntimeTop.call(this, v);
+}
+
+
+
+
+
+/*
+------------------------------------------------------------------------------------
+ DISPOSER
+------------------------------------------------------------------------------------
+ */
+
+/**
+ * Garbage collection
+ */
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if(this._firstArea)
+ {
+ this._firstArea.dispose();
+ this._firstArea = null;
+ }
+
+ if(this._secondArea)
+ {
+ this._secondArea.dispose();
+ this._secondArea = null;
+ }
+
+ if (this._splitter)
+ {
+ this._splitter.removeEventListener("mousedown", this._onSplitterMouseDownX, this);
+ this._splitter.removeEventListener("mouseup", this._onSplitterMouseMoveX, this);
+ this._splitter.removeEventListener("mousemove", this._onSplitterMouseUpX, this);
+
+ this._splitter.removeEventListener("mousedown", this._onSplitterMouseDownY, this);
+ this._splitter.removeEventListener("mouseup", this._onSplitterMouseMoveY, this);
+ this._splitter.removeEventListener("mousemove", this._onSplitterMouseUpY, this);
+
+ this._splitter.dispose();
+ this._splitter._pane = null;
+ this._splitter = null;
+ }
+
+ if (this._slider)
+ {
+ this._slider.dispose();
+ this._slider._pane = null;
+ this._slider = null;
+ }
+
+ if (this._knob)
+ {
+ this._knob.removeEventListener("mousedown", this._onSplitterMouseDownX, this);
+ this._knob.removeEventListener("mouseup", this._onSplitterMouseMoveX, this);
+ this._knob.removeEventListener("mousemove", this._onSplitterMouseUpX, this);
+
+ this._knob.removeEventListener("mousedown", this._onSplitterMouseDownY, this);
+ this._knob.removeEventListener("mouseup", this._onSplitterMouseMoveY, this);
+ this._knob.removeEventListener("mousemove", this._onSplitterMouseUpY, this);
+
+ this._knob.dispose();
+ this._knob = null;
+ }
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/VerticalSplitPane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/VerticalSplitPane.js
new file mode 100644
index 0000000000..76201484a3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/splitpane/VerticalSplitPane.js
@@ -0,0 +1,58 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Volker Pauli
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_splitpane)
+
+************************************************************************ */
+
+/**
+ *
+ * Creates a new instance of a vertical SplitPane.<br /><br />
+ *
+ * new qx.ui.splitpane.VerticalSplitPane()<br />
+ * new qx.ui.splitpane.VerticalSplitPane(firstSize, secondSize)
+ *
+ * @param firstSize {string} The size of the top pane. Allowed values are any by {@see qx.ui.core.Widget} supported unit.
+ * @param secondSize {string} The size of the bottom pane. Allowed values are any by {@see qx.ui.core.Widget} supported unit.
+ */
+qx.OO.defineClass("qx.ui.splitpane.VerticalSplitPane", qx.ui.splitpane.SplitPane,
+function(firstSize, secondSize) {
+ qx.ui.splitpane.SplitPane.call(this, "vertical", firstSize, secondSize);
+});
+
+
+
+
+
+/*
+------------------------------------------------------------------------------------
+ DISPOSER
+------------------------------------------------------------------------------------
+ */
+
+/**
+ * Garbage collection
+ */
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.ui.splitpane.SplitPane.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractDataCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractDataCellRenderer.js
new file mode 100644
index 0000000000..d3d7950bd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractDataCellRenderer.js
@@ -0,0 +1,127 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * An abstract data cell renderer that does the basic coloring
+ * (borders, selected look, ...).
+ */
+qx.OO.defineClass("qx.ui.table.AbstractDataCellRenderer", qx.ui.table.DataCellRenderer,
+function() {
+ qx.ui.table.DataCellRenderer.call(this);
+});
+
+
+// overridden
+qx.Proto.createDataCellHtml = function(cellInfo) {
+ var AbstractDataCellRenderer = qx.ui.table.AbstractDataCellRenderer;
+ return AbstractDataCellRenderer.MAIN_DIV_START + this._getCellStyle(cellInfo)
+ + AbstractDataCellRenderer.MAIN_DIV_START_END
+ + this._getContentHtml(cellInfo) + AbstractDataCellRenderer.MAIN_DIV_END;
+}
+
+
+// overridden
+qx.Proto.updateDataCellElement = function(cellInfo, cellElement) {
+ cellElement.innerHTML = this._getContentHtml(cellInfo);
+}
+
+
+/**
+ * Returns the CSS styles that should be applied to the main div of this cell.
+ *
+ * @param cellInfo {Map} The information about the cell.
+ * See {@link #createDataCellHtml}.
+ * @return the CSS styles of the main div.
+ */
+qx.Proto._getCellStyle = function(cellInfo) {
+ return cellInfo.style + qx.ui.table.AbstractDataCellRenderer.MAIN_DIV_STYLE;
+}
+
+
+/**
+ * Returns the HTML that should be used inside the main div of this cell.
+ *
+ * @param cellInfo {Map} The information about the cell.
+ * See {@link #createDataCellHtml}.
+ * @return {string} the inner HTML of the main div.
+ */
+qx.Proto._getContentHtml = function(cellInfo) {
+ return cellInfo.value;
+}
+
+
+qx.Proto.createDataCellHtml_array_join = function(cellInfo, htmlArr) {
+ var AbstractDataCellRenderer = qx.ui.table.AbstractDataCellRenderer;
+
+ if (qx.ui.table.TablePane.USE_TABLE) {
+ htmlArr.push(AbstractDataCellRenderer.TABLE_TD);
+ htmlArr.push(cellInfo.styleHeight);
+ htmlArr.push("px");
+ } else {
+ htmlArr.push(AbstractDataCellRenderer.ARRAY_JOIN_MAIN_DIV_LEFT);
+ htmlArr.push(cellInfo.styleLeft);
+ htmlArr.push(AbstractDataCellRenderer.ARRAY_JOIN_MAIN_DIV_WIDTH);
+ htmlArr.push(cellInfo.styleWidth);
+ htmlArr.push(AbstractDataCellRenderer.ARRAY_JOIN_MAIN_DIV_HEIGHT);
+ htmlArr.push(cellInfo.styleHeight);
+ htmlArr.push("px");
+ }
+
+ this._createCellStyle_array_join(cellInfo, htmlArr);
+
+ htmlArr.push(AbstractDataCellRenderer.ARRAY_JOIN_MAIN_DIV_START_END);
+
+ this._createContentHtml_array_join(cellInfo, htmlArr);
+
+ if (qx.ui.table.TablePane.USE_TABLE) {
+ htmlArr.push(AbstractDataCellRenderer.TABLE_TD_END);
+ } else {
+ htmlArr.push(AbstractDataCellRenderer.ARRAY_JOIN_MAIN_DIV_END);
+ }
+}
+
+
+qx.Proto._createCellStyle_array_join = function(cellInfo, htmlArr) {
+ htmlArr.push(qx.ui.table.AbstractDataCellRenderer.MAIN_DIV_STYLE);
+}
+
+
+qx.Proto._createContentHtml_array_join = function(cellInfo, htmlArr) {
+ htmlArr.push(cellInfo.value);
+}
+
+
+qx.Class.MAIN_DIV_START = '<div style="';
+qx.Class.MAIN_DIV_START_END = '">';
+qx.Class.MAIN_DIV_END = '</div>';
+qx.Class.MAIN_DIV_STYLE = ';overflow:hidden;white-space:nowrap;border-right:1px solid #eeeeee;border-bottom:1px solid #eeeeee;padding-left:2px;padding-right:2px;cursor:default'
+ + (qx.sys.Client.getInstance().isMshtml() ? '' : ';-moz-user-select:none;');
+
+qx.Class.ARRAY_JOIN_MAIN_DIV_LEFT = '<div style="position:absolute;left:';
+qx.Class.ARRAY_JOIN_MAIN_DIV_WIDTH = 'px;top:0px;width:';
+qx.Class.ARRAY_JOIN_MAIN_DIV_HEIGHT = 'px;height:';
+qx.Class.ARRAY_JOIN_MAIN_DIV_START_END = '">';
+qx.Class.ARRAY_JOIN_MAIN_DIV_END = '</div>';
+
+qx.Class.TABLE_TD = '<td style="height:';
+qx.Class.TABLE_TD_END = '</td>'; \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractTableModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractTableModel.js
new file mode 100644
index 0000000000..99470e9361
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/AbstractTableModel.js
@@ -0,0 +1,150 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * An abstract table model that performs the column handling, so subclasses only
+ * need to care for row handling.
+ */
+qx.OO.defineClass("qx.ui.table.AbstractTableModel", qx.ui.table.TableModel,
+function() {
+ qx.ui.table.TableModel.call(this);
+
+ this._columnIdArr = [];
+ this._columnNameArr = [];
+ this._columnIndexMap = {};
+});
+
+
+// overridden
+qx.Proto.getColumnCount = function() {
+ return this._columnIdArr.length;
+}
+
+
+// overridden
+qx.Proto.getColumnIndexById = function(columnId) {
+ return this._columnIndexMap[columnId];
+}
+
+
+// overridden
+qx.Proto.getColumnId = function(columnIndex) {
+ return this._columnIdArr[columnIndex];
+}
+
+
+// overridden
+qx.Proto.getColumnName = function(columnIndex) {
+ return this._columnNameArr[columnIndex];
+}
+
+
+/**
+ * Sets the column IDs. These IDs may be used internally to identify a column.
+ * <p>
+ * Note: This will clear previously set column names.
+ * </p>
+ *
+ * @param columnIdArr {string[]} the IDs of the columns.
+ * @see #setColumns
+ */
+qx.Proto.setColumnIds = function(columnIdArr) {
+ this._columnIdArr = columnIdArr;
+
+ // Create the reverse map
+ this._columnIndexMap = {};
+ for (var i = 0; i < columnIdArr.length; i++) {
+ this._columnIndexMap[columnIdArr[i]] = i;
+ }
+ this._columnNameArr = new Array(columnIdArr.length);
+
+ // Inform the listeners
+ if (!this._internalChange) {
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+ }
+}
+
+
+/**
+ * Sets the column names. These names will be shown to the user.
+ * <p>
+ * Note: The column IDs have to be defined before.
+ * </p>
+ *
+ * @param columnNameArr {string[]} the names of the columns.
+ * @see #setColumnIds
+ */
+qx.Proto.setColumnNamesByIndex = function(columnNameArr) {
+ if (this._columnIdArr.length != columnNameArr.length) {
+ throw new Error("this._columnIdArr and columnNameArr have different length: "
+ + this._columnIdArr.length + " != " + columnNameArr.length);
+ }
+ this._columnNameArr = columnNameArr;
+
+ // Inform the listeners
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+}
+
+
+/**
+ * Sets the column names. These names will be shown to the user.
+ * <p>
+ * Note: The column IDs have to be defined before.
+ * </p>
+ *
+ * @param columnNameMap {Map} a map containing the column IDs as keys and the
+ * column name as values.
+ * @see #setColumnIds
+ */
+qx.Proto.setColumnNamesById = function(columnNameMap) {
+ this._columnNameArr = new Array(this._columnIdArr.length);
+ for (var i = 0; i < this._columnIdArr.length; ++i) {
+ this._columnNameArr[i] = columnNameMap[this._columnIdArr[i]];
+ }
+}
+
+
+/**
+ * Sets the columns.
+ *
+ * @param columnNameArr {string[]} The column names. These names will be shown to
+ * the user.
+ * @param columnIdArr {string[] ? null} The column IDs. These IDs may be used
+ * internally to identify a column. If null, the column names are used as
+ * IDs.
+ */
+qx.Proto.setColumns = function(columnNameArr, columnIdArr) {
+ if (columnIdArr == null) {
+ columnIdArr = columnNameArr;
+ }
+
+ if (columnIdArr.length != columnNameArr.length) {
+ throw new Error("columnIdArr and columnNameArr have different length: "
+ + columnIdArr.length + " != " + columnNameArr.length);
+ }
+
+ this._internalChange = true;
+ this.setColumnIds(columnIdArr);
+ this._internalChange = false;
+ this.setColumnNamesByIndex(columnNameArr);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/BooleanDataCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/BooleanDataCellRenderer.js
new file mode 100644
index 0000000000..13df2cd2f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/BooleanDataCellRenderer.js
@@ -0,0 +1,48 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+ * Carsten Lergenmueller (carstenl)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A data cell renderer for boolean values.
+ */
+qx.OO.defineClass("qx.ui.table.BooleanDataCellRenderer", qx.ui.table.IconDataCellRenderer,
+function() {
+ qx.ui.table.IconDataCellRenderer.call(this);
+
+ this._iconUrlTrue = qx.manager.object.AliasManager.getInstance().resolvePath("widget/table/boolean-true.png");
+ this._iconUrlFalse = qx.manager.object.AliasManager.getInstance().resolvePath("widget/table/boolean-false.png");
+ this._iconUrlNull = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+
+});
+
+//overridden
+qx.Proto._identifyImage = function(cellInfo) {
+ var IconDataCellRenderer = qx.ui.table.IconDataCellRenderer;
+ var imageHints = { imageWidth:11, imageHeight:11 };
+ switch (cellInfo.value) {
+ case true: imageHints.url = this._iconUrlTrue; break;
+ case false: imageHints.url = this._iconUrlFalse; break;
+ default: imageHints.url = this._iconUrlNull; break;
+ }
+ return imageHints;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CellEditorFactory.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CellEditorFactory.js
new file mode 100644
index 0000000000..817954f40f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CellEditorFactory.js
@@ -0,0 +1,62 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A factory creating widgets to use for editing table cells.
+ */
+qx.OO.defineClass("qx.ui.table.CellEditorFactory", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Creates a cell editor.
+ * <p>
+ * The cellInfo map contains the following properties:
+ * <ul>
+ * <li>value (var): the cell's value.</li>
+ * <li>row (int): the model index of the row the cell belongs to.</li>
+ * <li>col (int): the model index of the column the cell belongs to.</li>
+ * <li>xPos (int): the x position of the cell in the table pane.</li>
+ * </ul>
+ *
+ * @param cellInfo {Map} A map containing the information about the cell to
+ * create.
+ * @return {qx.ui.core.Widget} the widget that should be used as cell editor.
+ */
+qx.Proto.createCellEditor = function(cellInfo) {
+ throw new Error("createCellEditor is abstract");
+}
+
+
+/**
+ * Returns the current value of a cell editor.
+ *
+ * @param cellEditor {qx.ui.core.Widget} The cell editor formally created by
+ * {@link #createCellEditor}.
+ * @return {var} the current value from the editor.
+ */
+qx.Proto.getCellEditorValue = function(cellEditor) {
+ throw new Error("getCellEditorValue is abstract");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CheckBoxCellEditorFactory.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CheckBoxCellEditorFactory.js
new file mode 100644
index 0000000000..d5609a4b77
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/CheckBoxCellEditorFactory.js
@@ -0,0 +1,43 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by David Perez
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * David Perez (david-perez)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * For editing boolean data in a checkbox. It is advisable to use this in conjuntion with BooleanDataCellRenderer.
+ */
+qx.OO.defineClass("qx.ui.table.CheckBoxCellEditorFactory", qx.ui.table.CellEditorFactory, function() {
+ qx.ui.table.CellEditorFactory.call(this);
+});
+
+// overridden
+qx.Proto.createCellEditor = function(cellInfo) {
+ var editor = new qx.ui.form.CheckBox;
+ with (editor) {
+ setChecked(cellInfo.value);
+ }
+ return editor;
+}
+
+// overridden
+qx.Proto.getCellEditorValue = function(cellEditor) {
+ return cellEditor.getChecked();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataCellRenderer.js
new file mode 100644
index 0000000000..46f808df32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataCellRenderer.js
@@ -0,0 +1,80 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A cell renderer for data cells.
+ */
+qx.OO.defineClass("qx.ui.table.DataCellRenderer", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Creates the HTML for a data cell.
+ * <p>
+ * The cellInfo map contains the following properties:
+ * <ul>
+ * <li>value (var): the cell's value.</li>
+ * <li>rowData (var): contains the row data for the row, the cell belongs to.
+ * The kind of this object depends on the table model, see
+ * {@link TableModel#getRowData()}</li>
+ * <li>row (int): the model index of the row the cell belongs to.</li>
+ * <li>col (int): the model index of the column the cell belongs to.</li>
+ * <li>table (qx.ui.table.Table): the table the cell belongs to.</li>
+ * <li>xPos (int): the x position of the cell in the table pane.</li>
+ * <li>selected (boolean): whether the cell is selected.</li>
+ * <li>focusedCol (boolean): whether the cell is in the same column as the
+ * focused cell.</li>
+ * <li>focusedRow (boolean): whether the cell is in the same row as the
+ * focused cell.</li>
+ * <li>editable (boolean): whether the cell is editable.</li>
+ * <li>style (string): The CSS styles that should be applied to the outer HTML
+ * element.</li>
+ * </ul>
+ *
+ * @param cellInfo {Map} A map containing the information about the cell to
+ * create.
+ * @return {string} the HTML of the data cell.
+ */
+qx.Proto.createDataCellHtml = function(cellInfo) {
+ throw new Error("createDataCellHtml is abstract");
+}
+
+
+/**
+ * Updates a data cell.
+ *
+ * @param cellInfo {Map} A map containing the information about the cell to
+ * create. This map has the same structure as in {@link #createDataCell}.
+ * @param cellElement {element} the DOM element that renders the data cell. This
+ * is the same element formally created by the HTML from {@link #createDataCell}.
+ */
+qx.Proto.updateDataCellElement = function(cellInfo, cellElement) {
+ throw new Error("updateDataCellElement is abstract");
+}
+
+
+qx.Proto.createDataCellHtml_array_join = function(cellInfo, htmlArr) {
+ throw new Error("createDataCellHtml_array_join is abstract");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataRowRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataRowRenderer.js
new file mode 100644
index 0000000000..9cd4c86961
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DataRowRenderer.js
@@ -0,0 +1,54 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A cell renderer for data rows.
+ */
+qx.OO.defineClass("qx.ui.table.DataRowRenderer", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Updates a data row.
+ * <p>
+ * The rowInfo map contains the following properties:
+ * <ul>
+ * <li>rowData (var): contains the row data for the row.
+ * The kind of this object depends on the table model, see
+ * {@link TableModel#getRowData()}</li>
+ * <li>row (int): the model index of the row.</li>
+ * <li>selected (boolean): whether a cell in this row is selected.</li>
+ * <li>focusedRow (boolean): whether the focused cell is in this row.</li>
+ * <li>table (qx.ui.table.Table): the table the row belongs to.</li>
+ * </ul>
+ *
+ * @param rowInfo {Map} A map containing the information about the row to
+ * update. This map has the same structure as in {@link #createDataCell}.
+ * @param cellElement {element} the DOM element that renders the data rot. This
+ * is the same element formally created by the HTML from {@link #createDataCell}.
+ */
+qx.Proto.updateDataRowElement = function(rowInfo, rowElement) {
+ throw new Error("updateDataRowElement is abstract");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataCellRenderer.js
new file mode 100644
index 0000000000..4de4341037
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataCellRenderer.js
@@ -0,0 +1,189 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+// This is needed because of the instantiation at the end of this file.
+// I don't think this is a good idea. (wpbasti)
+#require(qx.util.format.NumberFormat)
+
+************************************************************************ */
+
+/**
+ * The default data cell renderer.
+ */
+qx.OO.defineClass("qx.ui.table.DefaultDataCellRenderer", qx.ui.table.AbstractDataCellRenderer,
+function() {
+ qx.ui.table.AbstractDataCellRenderer.call(this);
+});
+
+
+/**
+ * Whether the alignment should automatically be set according to the cell value.
+ * If true numbers will be right-aligned.
+ */
+qx.OO.addProperty({ name:"useAutoAlign", type:"boolean", defaultValue:true, allowNull:false });
+
+
+// overridden
+qx.Proto._getCellStyle = function(cellInfo) {
+ var style = qx.ui.table.AbstractDataCellRenderer.prototype._getCellStyle(cellInfo);
+
+ var stylesToApply = this._getStyleFlags(cellInfo);
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ALIGN_RIGHT){
+ style += ";text-align:right";
+ }
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_BOLD){
+ style += ";font-weight:bold";
+ }
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ITALIC){
+ style += ";font-style:italic";
+ }
+
+ return style;
+}
+
+/**
+ * Determines the styles to apply to the cell
+ *
+ * @param cellInfo {Object} cellInfo of the cell
+ * @return the sum of any of the STYLEFLAGS defined below
+ */
+qx.Proto._getStyleFlags = function(cellInfo) {
+ if (this.getUseAutoAlign()) {
+ if (typeof cellInfo.value == "number") {
+ return qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ALIGN_RIGHT;
+ }
+ }
+}
+
+
+// overridden
+qx.Proto._getContentHtml = function(cellInfo) {
+ return qx.ui.table.DefaultDataCellRenderer.escapeHtml(this._formatValue(cellInfo));
+}
+
+
+// overridden
+qx.Proto.updateDataCellElement = function(cellInfo, cellElement) {
+ var style = qx.ui.table.AbstractDataCellRenderer.prototype._getCellStyle(cellInfo);
+
+ var stylesToApply = this._getStyleFlags(cellInfo);
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ALIGN_RIGHT){
+ cellElement.style.textAlign = "right";
+ } else {
+ cellElement.style.textAlign = "";
+ }
+
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_BOLD){
+ cellElement.style.fontWeight = "bold";
+ } else {
+ cellElement.style.fontWeight = "";
+ }
+
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ITALIC){
+ cellElement.style.fontStyle = "ital";
+ } else {
+ cellElement.style.fontStyle = "";
+ }
+
+ var textNode = cellElement.firstChild;
+ if (textNode != null) {
+ textNode.nodeValue = this._formatValue(cellInfo);
+ } else {
+ cellElement.innerHTML = qx.ui.table.DefaultDataCellRenderer.escapeHtml(this._formatValue(cellInfo));
+ }
+}
+
+
+/**
+ * Formats a value.
+ *
+ * @param cellInfo {Map} A map containing the information about the cell to
+ * create. This map has the same structure as in
+ * {@link DataCellRenderer#createDataCell}.
+ * @return {string} the formatted value.
+ */
+qx.Proto._formatValue = function(cellInfo) {
+ var value = cellInfo.value;
+ if (value == null) {
+ return "";
+ } else if (typeof value == "number") {
+ return qx.ui.table.DefaultDataCellRenderer._numberFormat.format(value);
+ } else if (value instanceof Date) {
+ return qx.util.format.DateFormat.getDateInstance().format(value);
+ } else {
+ return value;
+ }
+}
+
+
+qx.Proto._createCellStyle_array_join = function(cellInfo, htmlArr) {
+ qx.ui.table.AbstractDataCellRenderer.prototype._createCellStyle_array_join(cellInfo, htmlArr);
+
+ var stylesToApply = this._getStyleFlags(cellInfo);
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ALIGN_RIGHT){
+ htmlArr.push(";text-align:right");
+ }
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_BOLD){
+ htmlArr.push(";font-weight:bold");
+ }
+ if (stylesToApply & qx.ui.table.DefaultDataCellRenderer.STYLEFLAG_ITALIC){
+ htmlArr.push(";font-style:italic");
+ }
+}
+
+
+qx.Proto._createContentHtml_array_join = function(cellInfo, htmlArr) {
+ htmlArr.push(qx.ui.table.DefaultDataCellRenderer.escapeHtml(this._formatValue(cellInfo)));
+}
+
+
+/**
+ * Escapes special HTML characters by their entities.
+ *
+ * @param html {string} The HTML to escape.
+ * @return {string} The escaped string showing HTML code as plain text.
+ */
+qx.Class.escapeHtml = function(html) {
+ return html.replace(/[<>&]/gi, qx.ui.table.DefaultDataCellRenderer._escapeHtmlReplacer);
+}
+
+
+/**
+ * Helper method for {@link #escapeHtml}.
+ */
+qx.Class._escapeHtmlReplacer = function(str) {
+ switch(str) {
+ case "<": return "&lt;";
+ case ">": return "&gt;";
+ case "&": return "&amp;";
+ }
+}
+
+
+qx.Class._numberFormat = new qx.util.format.NumberFormat();
+qx.Class._numberFormat.setMaximumFractionDigits(2);
+
+qx.Class.STYLEFLAG_ALIGN_RIGHT = 1;
+qx.Class.STYLEFLAG_BOLD = 2;
+qx.Class.STYLEFLAG_ITALIC = 4;
+
+
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataRowRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataRowRenderer.js
new file mode 100644
index 0000000000..8fd2198cd4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultDataRowRenderer.js
@@ -0,0 +1,106 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * The default data row renderer.
+ */
+qx.OO.defineClass("qx.ui.table.DefaultDataRowRenderer", qx.ui.table.DataRowRenderer,
+function() {
+ qx.ui.table.DataRowRenderer.call(this);
+});
+
+
+/** Whether the focused row should be highlighted. */
+qx.OO.addProperty({ name:"highlightFocusRow", type:"boolean", allowNull:false, defaultValue:true});
+
+/**
+ * Whether the focused row and the selection should be grayed out when the table
+ * hasn't the focus.
+ */
+qx.OO.addProperty({ name:"visualizeFocusedState", type:"boolean", allowNull:false, defaultValue:true});
+
+
+// overridden
+qx.Proto.updateDataRowElement = function(rowInfo, rowElem) {
+ var clazz = qx.ui.table.DefaultDataRowRenderer;
+
+ if (rowInfo.focusedRow && this.getHighlightFocusRow()) {
+ if (rowInfo.table.getFocused() || !this.getVisualizeFocusedState()) {
+ rowElem.style.backgroundColor = rowInfo.selected ? clazz.BGCOL_FOCUSED_SELECTED : clazz.BGCOL_FOCUSED;
+ } else {
+ rowElem.style.backgroundColor = rowInfo.selected ? clazz.BGCOL_FOCUSED_SELECTED_BLUR : clazz.BGCOL_FOCUSED_BLUR;
+ }
+ } else {
+ if (rowInfo.selected) {
+ if (rowInfo.table.getFocused() || !this.getVisualizeFocusedState()) {
+ rowElem.style.backgroundColor = clazz.BGCOL_SELECTED;
+ } else {
+ rowElem.style.backgroundColor = clazz.BGCOL_SELECTED_BLUR;
+ }
+ } else {
+ rowElem.style.backgroundColor = (rowInfo.row % 2 == 0) ? clazz.BGCOL_EVEN : clazz.BGCOL_ODD;
+ }
+ }
+ rowElem.style.color = rowInfo.selected ? clazz.COL_SELECTED : clazz.COL_NORMAL;
+}
+
+
+qx.Proto._createRowStyle_array_join = function(rowInfo, htmlArr) {
+ var clazz = qx.ui.table.DefaultDataRowRenderer;
+
+ htmlArr.push(clazz.ARRAY_JOIN_BG_COLOR);
+ if (rowInfo.focusedRow && this.getHighlightFocusRow()) {
+ if (rowInfo.table.getFocused() || !this.getVisualizeFocusedState()) {
+ htmlArr.push(rowInfo.selected ? clazz.BGCOL_FOCUSED_SELECTED : clazz.BGCOL_FOCUSED);
+ } else {
+ htmlArr.push(rowInfo.selected ? clazz.BGCOL_FOCUSED_SELECTED_BLUR : clazz.BGCOL_FOCUSED_BLUR);
+ }
+ } else {
+ if (rowInfo.selected) {
+ if (rowInfo.table.getFocused() || !this.getVisualizeFocusedState()) {
+ htmlArr.push(clazz.BGCOL_SELECTED);
+ } else {
+ htmlArr.push(clazz.BGCOL_SELECTED_BLUR);
+ }
+ } else {
+ htmlArr.push((rowInfo.row % 2 == 0) ? clazz.BGCOL_EVEN : clazz.BGCOL_ODD);
+ }
+ }
+ htmlArr.push(clazz.ARRAY_JOIN_COLOR);
+ htmlArr.push(rowInfo.selected ? clazz.COL_SELECTED : clazz.COL);
+}
+
+
+qx.Class.BGCOL_FOCUSED_SELECTED = "#5a8ad3";
+qx.Class.BGCOL_FOCUSED_SELECTED_BLUR = "#b3bac6";
+qx.Class.BGCOL_FOCUSED = "#ddeeff";
+qx.Class.BGCOL_FOCUSED_BLUR = "#dae0e7";
+qx.Class.BGCOL_SELECTED = "#335ea8";
+qx.Class.BGCOL_SELECTED_BLUR = "#989ea8";
+qx.Class.BGCOL_EVEN = "#faf8f3";
+qx.Class.BGCOL_ODD = "white";
+qx.Class.COL_SELECTED = "white";
+qx.Class.COL_NORMAL = "black";
+
+qx.Class.ARRAY_JOIN_BG_COLOR = ";background-color:";
+qx.Class.ARRAY_JOIN_COLOR = ';color:';
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultHeaderCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultHeaderCellRenderer.js
new file mode 100644
index 0000000000..060b095a14
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/DefaultHeaderCellRenderer.js
@@ -0,0 +1,63 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * The default header cell renderer.
+ */
+qx.OO.defineClass("qx.ui.table.DefaultHeaderCellRenderer", qx.ui.table.HeaderCellRenderer,
+function() {
+ qx.ui.table.HeaderCellRenderer.call(this);
+});
+
+
+// overridden
+qx.Proto.createHeaderCell = function(cellInfo) {
+ var widget = new qx.ui.basic.Atom();
+ widget.setAppearance("table-header-cell");
+
+ this.updateHeaderCell(cellInfo, widget);
+
+ return widget;
+}
+
+
+// overridden
+qx.Proto.updateHeaderCell = function(cellInfo, cellWidget) {
+ var DefaultHeaderCellRenderer = qx.ui.table.DefaultHeaderCellRenderer;
+
+ cellWidget.setLabel(cellInfo.name);
+
+ cellWidget.setIcon(cellInfo.sorted ? (cellInfo.sortedAscending ? "widget/table/ascending.png" : "widget/table/descending.png") : null);
+ cellWidget.setState(DefaultHeaderCellRenderer.STATE_SORTED, cellInfo.sorted);
+ cellWidget.setState(DefaultHeaderCellRenderer.STATE_SORTED_ASCENDING, cellInfo.sortedAscending);
+}
+
+/**
+ * (string) The state which will be set for header cells of sorted columns.
+ */
+qx.Class.STATE_SORTED = "sorted";
+
+/**
+ * (string) The state which will be set when sorting is ascending.
+ */
+qx.Class.STATE_SORTED_ASCENDING = "sortedAscending";
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/HeaderCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/HeaderCellRenderer.js
new file mode 100644
index 0000000000..2108778efb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/HeaderCellRenderer.js
@@ -0,0 +1,69 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A cell renderer for header cells.
+ */
+qx.OO.defineClass("qx.ui.table.HeaderCellRenderer", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Creates a header cell.
+ * <p>
+ * The cellInfo map contains the following properties:
+ * <ul>
+ * <li>col (int): the model index of the column.</li>
+ * <li>xPos (int): the x position of the column in the table pane.</li>
+ * <li>name (string): the name of the column.</li>
+ * <li>editable (boolean): whether the column is editable.</li>
+ * <li>sorted (boolean): whether the column is sorted.</li>
+ * <li>sortedAscending (boolean): whether sorting is ascending.</li>
+ * </ul>
+ *
+ * @param cellInfo {Map} A map containing the information about the cell to
+ * create.
+ * @return {qx.ui.core.Widget} the widget that renders the header cell.
+ */
+qx.Proto.createHeaderCell = function(cellInfo) {
+ throw new Error("createHeaderCell is abstract");
+}
+
+
+/**
+ * Updates a header cell.
+ *
+ * @param cellInfo {Map} A map containing the information about the cell to
+ * create. This map has the same structure as in {@link #createHeaderCell}.
+ * @param cellWidget {qx.ui.core.Widget} the widget that renders the header cell. This is
+ * the same widget formally created by {@link #createHeaderCell}.
+ */
+qx.Proto.updateHeaderCell = function(cellInfo, cellWidget) {
+ throw new Error("updateHeaderCell is abstract");
+}
+
+
+/** The preferred height of cells created by this header renderer. */
+qx.OO.addProperty({ name:"prefferedCellHeight", type:"number", defaultValue:16, allowNull:false });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconDataCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconDataCellRenderer.js
new file mode 100644
index 0000000000..b4a717527b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconDataCellRenderer.js
@@ -0,0 +1,182 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+ * Carsten Lergenmueller (carstenl)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A data cell renderer for boolean values.
+ */
+qx.OO.defineClass("qx.ui.table.IconDataCellRenderer", qx.ui.table.AbstractDataCellRenderer,
+function() {
+ qx.ui.table.AbstractDataCellRenderer.call(this);
+ this.IMG_BLANK_URL = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+});
+
+
+/**
+ * Identifies the Image to show.
+ *
+ * @param cellInfo {Map} The information about the cell.
+ * See {@link #createDataCellHtml}.
+ * @return {Map} A map having the following attributes:
+ * <ul>
+ * <li>"url": (type string) must be the URL of the image to show.</li>
+ * <li>"imageWidth": (type int) the width of the image in pixels.</li>
+ * <li>"imageHeight": (type int) the height of the image in pixels.</li>
+ * <li>"tooltip": (type string) must be the image tooltip text.</li>
+ * </ul>
+ */
+qx.Proto._identifyImage = function(cellInfo) {
+ throw new Error("_identifyImage is abstract");
+}
+
+
+/**
+ * Retrieves the image infos.
+ *
+ * @param cellInfo {Map} The information about the cell.
+ * See {@link #createDataCellHtml}.
+ * @return {Map} Map with an "url" attribute (type string)
+ * holding the URL of the image to show
+ * and a "tooltip" attribute
+ * (type string) being the tooltip text (or null if none was specified)
+ *
+ */
+qx.Proto._getImageInfos= function(cellInfo) {
+ // Query the subclass about image and tooltip
+ var urlAndTooltipMap = this._identifyImage(cellInfo);
+
+ // If subclass refuses to give map, construct it
+ if (urlAndTooltipMap == null || typeof urlAndTooltipMap == "string"){
+ urlAndTooltipMap = {url:urlAndTooltipMap, tooltip:null};
+ }
+
+ // If subclass gave null as url, replace with url to empty image
+ if (urlAndTooltipMap.url == null){
+ urlAndTooltipMap.url = this.IMG_BLANK_URL;
+ }
+
+ return urlAndTooltipMap;
+}
+
+// overridden
+qx.Proto._getCellStyle = function(cellInfo) {
+ var style = qx.ui.table.AbstractDataCellRenderer.prototype._getCellStyle(cellInfo);
+ style += qx.ui.table.IconDataCellRenderer.MAIN_DIV_STYLE;
+ return style;
+}
+
+
+// overridden
+qx.Proto._getContentHtml = function(cellInfo) {
+ var IconDataCellRenderer = qx.ui.table.IconDataCellRenderer;
+
+ var urlAndToolTip = this._getImageInfos(cellInfo);
+ var html = IconDataCellRenderer.IMG_START;
+ if (qx.sys.Client.getInstance().isMshtml() && /\.png$/i.test(urlAndToolTip.url)) {
+ html += qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif")
+ + '" style="filter:' + "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + urlAndToolTip.url + "',sizingMethod='scale')";
+ } else {
+ html += urlAndToolTip.url + '" style="';
+ }
+
+ if (urlAndToolTip.imageWidth && urlAndToolTip.imageHeight) {
+ html += ';width:' + urlAndToolTip.imageWidth + 'px'
+ + ';height:' + urlAndToolTip.imageHeight + 'px';
+ }
+
+ var tooltip = urlAndToolTip.tooltip;
+ if (tooltip != null){
+ html += IconDataCellRenderer.IMG_TITLE_START + tooltip;
+ }
+ html += IconDataCellRenderer.IMG_END;
+ return html;
+}
+
+
+// overridden
+qx.Proto.updateDataCellElement = function(cellInfo, cellElement) {
+ // Set image and tooltip text
+ var urlAndToolTip = this._getImageInfos(cellInfo);
+ var img = cellElement.firstChild;
+ if (qx.sys.Client.getInstance().isMshtml()) {
+ if (/\.png$/i.test(urlAndToolTip.url)) {
+ img.src = qx.manager.object.AliasManager.getInstance().resolvePath("static/image/blank.gif");
+ img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + urlAndToolTip.url + "',sizingMethod='scale')";
+ } else {
+ img.src = urlAndToolTip.url;
+ img.style.filter = "";
+ }
+ } else {
+ img.src = urlAndToolTip.url;
+ }
+
+ if (urlAndToolTip.imageWidth && urlAndToolTip.imageHeight) {
+ img.style.width = urlAndToolTip.imageWidth + "px";
+ img.style.height = urlAndToolTip.imageHeight + "px";
+ }
+
+ if (urlAndToolTip.tooltip != null){
+ img.text = urlAndToolTip.tooltip;
+ }
+}
+
+
+// overridden
+qx.Proto._createCellStyle_array_join = function(cellInfo, htmlArr) {
+ qx.ui.table.AbstractDataCellRenderer.prototype._createCellStyle_array_join(cellInfo, htmlArr);
+
+ htmlArr.push(qx.ui.table.IconDataCellRenderer.MAIN_DIV_STYLE);
+}
+
+qx.Proto._createContentHtml_array_join = function(cellInfo, htmlArr) {
+ var IconDataCellRenderer = qx.ui.table.IconDataCellRenderer;
+
+ if (qx.ui.table.TablePane.USE_TABLE) {
+ htmlArr.push(IconDataCellRenderer.TABLE_DIV);
+ htmlArr.push(cellInfo.styleHeight - 2); // -1 for the border, -1 for the padding
+ htmlArr.push(IconDataCellRenderer.TABLE_DIV_CLOSE);
+ }
+
+ htmlArr.push(IconDataCellRenderer.IMG_START);
+ var urlAndToolTip = this._getImageInfos(cellInfo);
+ htmlArr.push(urlAndToolTip.url);
+ var tooltip = urlAndToolTip.tooltip;
+ if (tooltip != null){
+ IconDataCellRenderer.IMG_TITLE_START;
+ htmlArr.push(tooltip);
+ }
+ htmlArr.push(IconDataCellRenderer.IMG_END);
+
+ if (qx.ui.table.TablePane.USE_TABLE) {
+ htmlArr.push(IconDataCellRenderer.TABLE_DIV_END);
+ }
+}
+
+qx.Class.MAIN_DIV_STYLE = ';text-align:center;padding-top:1px;';
+qx.Class.IMG_START = '<img src="';
+qx.Class.IMG_END = '"/>';
+qx.Class.IMG_TITLE_START = '" title="';
+qx.Class.TABLE_DIV = '<div style="overflow:hidden;height:';
+qx.Class.TABLE_DIV_CLOSE = 'px">';
+qx.Class.TABLE_DIV_END = '</div>';
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconHeaderCellRenderer.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconHeaderCellRenderer.js
new file mode 100644
index 0000000000..51e653f5c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/IconHeaderCellRenderer.js
@@ -0,0 +1,84 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+ * Carsten Lergenmueller (carstenl)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A header cell renderer which renders an icon (only). The icon cannot be combined
+ * with text.
+ *
+ * @param iconUrl {string} URL to the icon to show
+ * @param tooltip {string ? ""} Text of the tooltip to show if the mouse hovers over the
+ * icon
+ *
+ */
+qx.OO.defineClass("qx.ui.table.IconHeaderCellRenderer", qx.ui.table.DefaultHeaderCellRenderer,
+function(iconUrl, tooltip) {
+ qx.ui.table.DefaultHeaderCellRenderer.call(this);
+ if (iconUrl == null){
+ iconUrl = "";
+ }
+ this.setIconUrl(iconUrl);
+ this.setToolTip(tooltip);
+});
+
+/**
+ * URL of the icon to show
+ */
+qx.OO.addProperty({ name:"iconUrl", type:"string", defaultValue:"", allowNull:false });
+
+/**
+ * ToolTip to show if the mouse hovers of the icon
+ */
+qx.OO.addProperty({ name:"toolTip", type:"string", defaultValue:null, allowNull:true });
+
+// overridden
+qx.Proto.updateHeaderCell = function(cellInfo, cellWidget) {
+ qx.ui.table.DefaultHeaderCellRenderer.prototype.updateHeaderCell.call(this, cellInfo, cellWidget);
+
+ // Set URL to icon
+ var img = cellWidget.getUserData("qx_ui_table_IconHeaderCellRenderer_icon");
+ if (img == null){
+ img = new qx.ui.basic.Image();
+ cellWidget.setUserData("qx_ui_table_IconHeaderCellRenderer_icon", img);
+ cellWidget.addAtBegin(img);
+ }
+ img.setSource(this.getIconUrl());
+
+ // Set image tooltip if given
+ var widgetToolTip = cellWidget.getToolTip();
+ if (this.getToolTip() != null){
+
+ //Create tooltip if necessary
+ if (true || widgetToolTip == null ){
+ widgetToolTip = new qx.ui.popup.ToolTip(this.getToolTip());
+ cellWidget.setToolTip(widgetToolTip);
+ //this.debug("Creating tooltip");
+ }
+
+ //Set tooltip text
+ widgetToolTip.getAtom().setLabel(this.getToolTip());
+ //this.debug("Setting tooltip text " + this.getToolTip());
+ }
+
+}
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/RemoteTableModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/RemoteTableModel.js
new file mode 100644
index 0000000000..ebd1be8f53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/RemoteTableModel.js
@@ -0,0 +1,435 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A table model that loads its data from a backend.
+ * <p>
+ * Only those rows are loaded that are near the area the user is currently
+ * viewing. If the user scrolls, the rows he will see soon are loaded
+ * asynchroniously in the background. All loaded data is managed in a cache that
+ * automatically removes the last resently used rows when it gets full.
+ * <p>
+ * This class is abstract: The actual loading of row data must be done by
+ * subclasses.
+ */
+qx.OO.defineClass("qx.ui.table.RemoteTableModel", qx.ui.table.AbstractTableModel,
+function() {
+ qx.ui.table.AbstractTableModel.call(this);
+
+ this._sortColumnIndex = -1;
+ this._sortAscending = true;
+ this._rowCount = -1;
+
+ this._lruCounter = 0;
+ this._firstLoadingBlock = -1;
+ this._firstRowToLoad = -1;
+ this._lastRowToLoad = -1;
+ this._ignoreCurrentRequest = false;
+
+ this._rowBlockCache = {};
+ this._rowBlockCount = 0;
+});
+
+
+/** The number of rows that are stored in one cache block. */
+qx.OO.addProperty({ name:"blockSize", type:"number", defaultValue:50, allowNull:false });
+
+/** The maximum number of row blocks kept in the cache. */
+qx.OO.addProperty({ name:"maxCachedBlockCount", type:"number", defaultValue:15, allowNull:false });
+
+/**
+ * Whether to clear the cache when some rows are removed.
+ * If false the rows are removed locally in the cache.
+ */
+qx.OO.addProperty({ name:"clearCacheOnRemove", type:"boolean", defaultValue:false, allowNull:false });
+
+
+// overridden
+qx.Proto.getRowCount = function() {
+ if (this._rowCount == -1) {
+ this._loadRowCount();
+
+ // NOTE: _loadRowCount may set this._rowCount
+ return (this._rowCount == -1) ? 0 : this._rowCount;
+ } else {
+ return this._rowCount;
+ }
+}
+
+
+/**
+ * Loads the row count from the server.
+ * <p>
+ * Implementing classes have to call {@link _onRowDataLoaded()} when the server
+ * response arrived. That method has to be called! Even when there was an error.
+ */
+qx.Proto._loadRowCount = function() {
+ throw new Error("_loadRowCount is abstract");
+};
+
+
+/**
+ * Sets the row count.
+ * <p>
+ * Has to be called by {@link _loadRowCount()}.
+ *
+ * @param rowCount {int} the number of rows in this model or null if loading.
+ */
+qx.Proto._onRowCountLoaded = function(rowCount) {
+ this.debug("row count loaded: " + rowCount);
+ if (rowCount == null) {
+ rowCount = 0;
+ }
+ this._rowCount = rowCount;
+
+ // Inform the listeners
+ var data = { firstRow:0, lastRow:rowCount - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+};
+
+
+/**
+ * Reloads the model and clears the local cache.
+ */
+qx.Proto.reloadData = function() {
+ this.clearCache();
+
+ // If there is currently a request on its way, then this request will bring
+ // obsolete data -> Ignore it
+ if (this._firstLoadingBlock != -1) {
+ this._ignoreCurrentRequest = true;
+ }
+
+ // NOTE: This will inform the listeners as soon as the new row count is known
+ this._loadRowCount();
+};
+
+
+/**
+ * Clears the cache.
+ */
+qx.Proto.clearCache = function() {
+ this._rowBlockCache = {};
+ this._rowBlockCount = 0;
+};
+
+
+// overridden
+qx.Proto.prefetchRows = function(firstRowIndex, lastRowIndex) {
+ // this.debug("Prefetch wanted: " + firstRowIndex + ".." + lastRowIndex);
+ if (this._firstLoadingBlock == -1) {
+ var blockSize = this.getBlockSize();
+ var totalBlockCount = Math.ceil(this._rowCount / blockSize);
+
+ // There is currently no request running -> Start a new one
+ // NOTE: We load one more block above and below to have a smooth
+ // scrolling into the next block without blank cells
+ var firstBlock = parseInt(firstRowIndex / blockSize) - 1;
+ if (firstBlock < 0) {
+ firstBlock = 0;
+ }
+ var lastBlock = parseInt(lastRowIndex / blockSize) + 1;
+ if (lastBlock >= totalBlockCount) {
+ lastBlock = totalBlockCount - 1;
+ }
+
+ // Check which blocks we have to load
+ var firstBlockToLoad = -1;
+ var lastBlockToLoad = -1;
+ for (var block = firstBlock; block <= lastBlock; block++) {
+ if (this._rowBlockCache[block] == null || this._rowBlockCache[block].isDirty) {
+ // We don't have this block
+ if (firstBlockToLoad == -1) {
+ firstBlockToLoad = block;
+ }
+ lastBlockToLoad = block;
+ }
+ }
+
+ // Load the blocks
+ if (firstBlockToLoad != -1) {
+ this._firstRowToLoad = -1;
+ this._lastRowToLoad = -1;
+
+ this._firstLoadingBlock = firstBlockToLoad;
+
+ this.debug("Starting server request. rows: " + firstRowIndex + ".." + lastRowIndex + ", blocks: " + firstBlockToLoad + ".." + lastBlockToLoad);
+ this._loadRowData(firstBlockToLoad * blockSize, (lastBlockToLoad + 1) * blockSize - 1);
+ }
+ } else {
+ // There is already a request running -> Remember this request
+ // so it can be executed after the current one is finished.
+ this._firstRowToLoad = firstRowIndex;
+ this._lastRowToLoad = lastRowIndex;
+ }
+};
+
+
+/**
+ * Loads some row data from the server.
+ * <p>
+ * Implementing classes have to call {@link _onRowDataLoaded()} when the server
+ * response arrived. That method has to be called! Even when there was an error.
+ *
+ * @param firstRow {int} The index of the first row to load.
+ * @param lastRow {int} The index of the last row to load.
+ */
+qx.Proto._loadRowData = function(firstRow, lastRow) {
+ throw new Error("_loadRowCount is abstract");
+};
+
+
+/**
+ * Sets row data.
+ * <p>
+ * Has to be called by {@link _loadRowData()}.
+ *
+ * @param rowDataArr {Map[]} the loaded row data or null if there was an error.
+ */
+qx.Proto._onRowDataLoaded = function(rowDataArr) {
+ if (rowDataArr != null && ! this._ignoreCurrentRequest) {
+ var blockSize = this.getBlockSize();
+ var blockCount = Math.ceil(rowDataArr.length / blockSize);
+ if (blockCount == 1) {
+ // We got one block -> Use the rowData directly
+ this._setRowBlockData(this._firstLoadingBlock, rowDataArr);
+ } else {
+ // We got more than one block -> We've to split the rowData
+ for (var i = 0; i < blockCount; i++) {
+ var rowOffset = i * blockSize;
+ var blockRowData = [];
+ var mailCount = Math.min(blockSize, rowDataArr.length - rowOffset);
+ for (var row = 0; row < mailCount; row++) {
+ blockRowData.push(rowDataArr[rowOffset + row]);
+ }
+
+ this._setRowBlockData(this._firstLoadingBlock + i, blockRowData);
+ }
+ }
+ this.debug("Got server answer. blocks: " + this._firstLoadingBlock + ".." + (this._firstLoadingBlock + blockCount - 1) + ". mail count: " + rowDataArr.length + " block count:" + blockCount);
+
+ // Inform the listeners
+ var data = {
+ firstRow:this._firstLoadingBlock * blockSize,
+ lastRow:(this._firstLoadingBlock + blockCount + 1) * blockSize - 1,
+ firstColumn:0,
+ lastColumn:this.getColumnCount() - 1
+ };
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+ }
+
+ // We're not loading any blocks any more
+ this._firstLoadingBlock = -1;
+ this._ignoreCurrentRequest = false;
+
+ // Check whether we have to start a new request
+ if (this._firstRowToLoad != -1) {
+ this.prefetchRows(this._firstRowToLoad, this._lastRowToLoad);
+ }
+};
+
+
+/**
+ * Sets the data of one block.
+ *
+ * @param block {int} the index of the block.
+ * @param rowDataArr {var[][]} the data to set.
+ */
+qx.Proto._setRowBlockData = function(block, rowDataArr) {
+ if (this._rowBlockCache[block] == null) {
+ // This is a new block -> Check whether we have to remove another block first
+ this._rowBlockCount++;
+
+ while (this._rowBlockCount > this.getMaxCachedBlockCount()) {
+ // Find the last recently used block
+ // NOTE: We never remove block 0 and 1
+ var lruBlock;
+ var minLru = this._lruCounter;
+ for (var currBlock in this._rowBlockCache) {
+ var currLru = this._rowBlockCache[currBlock].lru;
+ if (currLru < minLru && currBlock > 1) {
+ minLru = currLru;
+ lruBlock = currBlock;
+ }
+ }
+
+ // Remove that block
+ this.debug("Removing block: " + lruBlock + ". current LRU: " + this._lruCounter);
+ delete this._rowBlockCache[lruBlock];
+ this._rowBlockCount--;
+ }
+ }
+
+ this._rowBlockCache[block] = { lru:++this._lruCounter, rowDataArr:rowDataArr };
+};
+
+
+/**
+ * Removes a rows from the model.
+ *
+ * @param rowIndex {int} the index of the row to remove.
+ */
+qx.Proto.removeRow = function(rowIndex) {
+ if (this.getClearCacheOnRemove()) {
+ this.clearCache();
+
+ // Inform the listeners
+ var data = { firstRow:0, lastRow:rowCount - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+ } else {
+ var blockSize = this.getBlockSize();
+ var blockCount = Math.ceil(this.getRowCount() / blockSize);
+ var startBlock = parseInt(rowIndex / blockSize);
+
+ // Remove the row and move the rows of all following blocks
+ for (var block = startBlock; block <= blockCount; block++) {
+ var blockData = this._rowBlockCache[block];
+ if (blockData != null) {
+ // Remove the row in the start block
+ // NOTE: In the other blocks the first row is removed
+ // (This is the row that was)
+ var removeIndex = 0;
+ if (block == startBlock) {
+ removeIndex = rowIndex - block * blockSize;
+ }
+ blockData.rowDataArr.splice(removeIndex, 1);
+
+ if (block == blockCount - 1) {
+ // This is the last block
+ if (blockData.rowDataArr.length == 0) {
+ // It is empty now -> Remove it
+ delete this._rowBlockCache[block];
+ }
+ } else {
+ // Try to copy the first row of the next block to the end of this block
+ // so this block can stays clean
+ var nextBlockData = this._rowBlockCache[block + 1];
+ if (nextBlockData != null) {
+ blockData.rowDataArr.push(nextBlockData.rowDataArr[0]);
+ } else {
+ // There is no row to move -> Mark this block as dirty
+ blockData.isDirty = true;
+ }
+ }
+ }
+ }
+
+ if (this._rowCount != -1) {
+ this._rowCount--;
+ }
+
+ // Inform the listeners
+ if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
+ var data = { firstRow:rowIndex, lastRow:this.getRowCount() - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+ }
+ }
+};
+
+
+/**
+ * <p>See overridden method for details.</p>
+ *
+ * @param rowIndex {int} the model index of the row.
+ * @return {Object} Map containing a value for each column.
+ */
+qx.Proto.getRowData = function(rowIndex) {
+ var blockSize = this.getBlockSize();
+ var block = parseInt(rowIndex / blockSize);
+ var blockData = this._rowBlockCache[block];
+ if (blockData == null) {
+ // This block is not (yet) loaded
+ return null;
+ } else {
+ var rowData = blockData.rowDataArr[rowIndex - (block * blockSize)];
+
+ // Update the last recently used counter
+ if (blockData.lru != this._lruCounter) {
+ blockData.lru = ++this._lruCounter;
+ }
+
+ return rowData;
+ }
+};
+
+
+// overridden
+qx.Proto.getValue = function(columnIndex, rowIndex) {
+ var rowData = this.getRowData(rowIndex);
+ if (rowData == null) {
+ return null;
+ } else {
+ var columnId = this.getColumnId(columnIndex);
+ return rowData[columnId];
+ }
+};
+
+
+/**
+ * Sets whether a column is sortable.
+ *
+ * @param columnIndex {int} the column of which to set the sortable state.
+ * @param sortable {boolean} whether the column should be sortable.
+ */
+qx.Proto.setColumnSortable = function(columnIndex, sortable) {
+ if (sortable != this.isColumnSortable(columnIndex)) {
+ if (this._sortableColArr == null) {
+ this._sortableColArr = [];
+ }
+ this._sortableColArr[columnIndex] = sortable;
+
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+ }
+}
+
+
+// overridden
+qx.Proto.isColumnSortable = function(columnIndex) {
+ return this._sortableColArr ? (this._sortableColArr[columnIndex] == true) : false;
+}
+
+
+// overridden
+qx.Proto.sortByColumn = function(columnIndex, ascending) {
+ if (this._sortColumnIndex != columnIndex || this._sortAscending != ascending) {
+ this._sortColumnIndex = columnIndex;
+ this._sortAscending = ascending;
+
+ this.clearCache();
+
+ // Inform the listeners
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+ }
+};
+
+
+// overridden
+qx.Proto.getSortColumnIndex = function() {
+ return this._sortColumnIndex;
+}
+
+
+// overridden
+qx.Proto.isSortAscending = function() {
+ return this._sortAscending;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionManager.js
new file mode 100644
index 0000000000..715b0d9d96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionManager.js
@@ -0,0 +1,163 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A selection manager. This is a helper class that handles all selection
+ * related events and updates a SelectionModel.
+ * <p>
+ * Widgets that support selection should use this manager. This way the only
+ * thing the widget has to do is mapping mouse or key events to indexes and
+ * call the corresponding handler method.
+ *
+ * @see SelectionModel
+ */
+qx.OO.defineClass("qx.ui.table.SelectionManager", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * The selection model where to set the selection changes.
+ */
+qx.OO.addProperty({ name:"selectionModel", type:"object", instance:"qx.ui.table.SelectionModel" });
+
+
+/**
+ * Handles the mouse down event.
+ *
+ * @param index {int} the index the mouse is pointing at.
+ * @param evt {Map} the mouse event.
+ */
+qx.Proto.handleMouseDown = function(index, evt) {
+ if (evt.isLeftButtonPressed()) {
+ var selectionModel = this.getSelectionModel();
+ if (!selectionModel.isSelectedIndex(index)) {
+ // This index is not selected -> We react when the mouse is pressed (because of drag and drop)
+ this._handleSelectEvent(index, evt);
+ this._lastMouseDownHandled = true;
+ } else {
+ // This index is already selected -> We react when the mouse is released (because of drag and drop)
+ this._lastMouseDownHandled = false;
+ }
+ } else if (evt.isRightButtonPressed() && evt.getModifiers() == 0) {
+ var selectionModel = this.getSelectionModel();
+ if (!selectionModel.isSelectedIndex(index)) {
+ // This index is not selected -> Set the selection to this index
+ selectionModel.setSelectionInterval(index, index);
+ }
+ }
+}
+
+
+/**
+ * Handles the mouse up event.
+ *
+ * @param index {int} the index the mouse is pointing at.
+ * @param evt {Map} the mouse event.
+ */
+qx.Proto.handleMouseUp = function(index, evt) {
+ if (evt.isLeftButtonPressed() && !this._lastMouseDownHandled) {
+ this._handleSelectEvent(index, evt);
+ }
+}
+
+
+/**
+ * Handles the mouse click event.
+ *
+ * @param index {int} the index the mouse is pointing at.
+ * @param evt {Map} the mouse event.
+ */
+qx.Proto.handleClick = function(index, evt) {
+}
+
+
+/**
+ * Handles the key down event that is used as replacement for mouse clicks
+ * (Normally space).
+ *
+ * @param index {int} the index that is currently focused.
+ * @param evt {Map} the key event.
+ */
+qx.Proto.handleSelectKeyDown = function(index, evt) {
+ this._handleSelectEvent(index, evt);
+};
+
+
+/**
+ * Handles a key down event that moved the focus (E.g. up, down, home, end, ...).
+ *
+ * @param index {int} the index that is currently focused.
+ * @param evt {Map} the key event.
+ */
+qx.Proto.handleMoveKeyDown = function(index, evt) {
+ var selectionModel = this.getSelectionModel();
+ switch (evt.getModifiers()) {
+ case 0:
+ selectionModel.setSelectionInterval(index, index);
+ break;
+ case qx.event.type.DomEvent.SHIFT_MASK:
+ var anchor = selectionModel.getAnchorSelectionIndex();
+ if (anchor == -1) {
+ selectionModel.setSelectionInterval(index, index);
+ } else {
+ selectionModel.setSelectionInterval(anchor, index);
+ }
+ break;
+ }
+}
+
+
+/**
+ * Handles a select event.
+ *
+ * @param index {int} the index the event is pointing at.
+ * @param evt {Map} the mouse event.
+ */
+qx.Proto._handleSelectEvent = function(index, evt) {
+ var selectionModel = this.getSelectionModel();
+ if (evt.getShiftKey()) {
+ var leadIndex = selectionModel.getLeadSelectionIndex();
+ if (index != leadIndex || selectionModel.isSelectionEmpty()) {
+ // The lead selection index was changed
+ var anchorIndex = selectionModel.getAnchorSelectionIndex();
+ if (anchorIndex == -1) {
+ anchorIndex = index;
+ }
+ if (evt.isCtrlOrCommandPressed()) {
+ selectionModel.addSelectionInterval(anchorIndex, index);
+ } else {
+ selectionModel.setSelectionInterval(anchorIndex, index);
+ }
+ }
+ } else if (evt.isCtrlOrCommandPressed()) {
+ if (selectionModel.isSelectedIndex(index)) {
+ selectionModel.removeSelectionInterval(index, index);
+ } else {
+ selectionModel.addSelectionInterval(index, index);
+ }
+ } else {
+ selectionModel.setSelectionInterval(index, index);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionModel.js
new file mode 100644
index 0000000000..fb0f6b7317
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SelectionModel.js
@@ -0,0 +1,427 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A selection model.
+ *
+ * @event changeSelection {qx.event.type.Event} Fired when the selection has
+ * changed.
+ */
+qx.OO.defineClass("qx.ui.table.SelectionModel", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+
+ this._selectedRangeArr = [];
+ this._anchorSelectionIndex = -1;
+ this._leadSelectionIndex = -1;
+ this.hasBatchModeRefCount = 0;
+ this._hadChangeEventInBatchMode = false;
+});
+
+
+/** {int} The selection mode "none". Nothing can ever be selected. */
+qx.Class.NO_SELECTION = 1;
+
+/** {int} The selection mode "single". This mode only allows one selected item. */
+qx.Class.SINGLE_SELECTION = 2;
+
+/**
+ * (int) The selection mode "single interval". This mode only allows one
+ * continuous interval of selected items.
+ */
+qx.Class.SINGLE_INTERVAL_SELECTION = 3;
+
+/**
+ * (int) The selection mode "multiple interval". This mode only allows any
+ * selection.
+ */
+qx.Class.MULTIPLE_INTERVAL_SELECTION = 4;
+
+
+/**
+ * (int) the selection mode.
+ */
+qx.OO.addProperty({ name:"selectionMode", type:"number",
+ defaultValue:qx.Class.SINGLE_SELECTION,
+ allowNull:false,
+ possibleValues:[ qx.Class.NO_SELECTION,
+ qx.Class.SINGLE_SELECTION,
+ qx.Class.SINGLE_INTERVAL_SELECTION,
+ qx.Class.MULTIPLE_INTERVAL_SELECTION ] });
+
+// selectionMode property modifier
+qx.Proto._modifySelectionMode = function(selectionMode) {
+ if (selectionMode == qx.ui.table.SelectionModel.NO_SELECTION) {
+ this.clearSelection();
+ }
+ return true;
+}
+
+
+/**
+ * <p>Activates / Deactivates batch mode. In batch mode, no change events will be thrown but
+ * will be collected instead. When batch mode is turned off again and any events have
+ * been collected, one event is thrown to inform the listeners.</p>
+ *
+ * <p>This method supports nested calling, i. e. batch mode can be turned more than once.
+ * In this case, batch mode will not end until it has been turned off once for each
+ * turning on.</p>
+ *
+ * @param batchMode {boolean} true to activate batch mode, false to deactivate
+ * @return {boolean} true if batch mode is active, false otherwise
+ * @throws Error if batch mode is turned off once more than it has been turned on
+ */
+qx.Proto.setBatchMode = function(batchMode) {
+ if (batchMode){
+ this.hasBatchModeRefCount += 1;
+ } else {
+ if (this.hasBatchModeRefCount == 0){
+ throw new Error("Try to turn off batch mode althoug it was not turned on.")
+ }
+ this.hasBatchModeRefCount -= 1;
+ if (this._hadChangeEventInBatchMode){
+ this._hadChangeEventInBatchMode = false;
+ this._fireChangeSelection();
+ }
+ }
+ return this.hasBatchMode();
+}
+
+
+/**
+ * <p>Returns whether batch mode is active. See setter for a description of batch mode.</p>
+ *
+ * @return {boolean} true if batch mode is active, false otherwise
+ */
+qx.Proto.hasBatchMode = function() {
+ return this.hasBatchModeRefCount > 0;
+}
+
+
+/**
+ * Returns the first argument of the last call to {@link #setSelectionInterval()},
+ * {@link #addSelectionInterval()} or {@link #removeSelectionInterval()}.
+ *
+ * @return {int} the ancor selection index.
+ */
+qx.Proto.getAnchorSelectionIndex = function() {
+ return this._anchorSelectionIndex;
+}
+
+
+/**
+ * Returns the second argument of the last call to {@link #setSelectionInterval()},
+ * {@link #addSelectionInterval()} or {@link #removeSelectionInterval()}.
+ *
+ * @return {int} the lead selection index.
+ */
+qx.Proto.getLeadSelectionIndex = function() {
+ return this._leadSelectionIndex;
+}
+
+
+/**
+ * Clears the selection.
+ */
+qx.Proto.clearSelection = function() {
+ if (! this.isSelectionEmpty()) {
+ this._clearSelection();
+ this._fireChangeSelection();
+ }
+}
+
+
+/**
+ * Returns whether the selection is empty.
+ *
+ * @return {boolean} whether the selection is empty.
+ */
+qx.Proto.isSelectionEmpty = function() {
+ return this._selectedRangeArr.length == 0;
+}
+
+
+/**
+ * Returns the number of selected items.
+ *
+ * @return {int} the number of selected items.
+ */
+qx.Proto.getSelectedCount = function() {
+ var selectedCount = 0;
+ for (var i = 0; i < this._selectedRangeArr.length; i++) {
+ var range = this._selectedRangeArr[i];
+ selectedCount += range.maxIndex - range.minIndex + 1;
+ }
+
+ return selectedCount;
+}
+
+
+/**
+ * Returns whether a index is selected.
+ *
+ * @param index {int} the index to check.
+ * @return {boolean} whether the index is selected.
+ */
+qx.Proto.isSelectedIndex = function(index) {
+ for (var i = 0; i < this._selectedRangeArr.length; i++) {
+ var range = this._selectedRangeArr[i];
+
+ if (index >= range.minIndex && index <= range.maxIndex) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
+/**
+ * Returns the selected ranges as an array. Each array element has a
+ * <code>minIndex</code> and a <code>maxIndex</code> property.
+ *
+ * @return {Map[]} the selected ranges.
+ */
+qx.Proto.getSelectedRanges = function() {
+ // clone the selection array and the individual elements - this prevents the
+ // caller from messing with the internal model
+ var retVal = [];
+ for (var i = 0; i < this._selectedRangeArr.length; i++) {
+ retVal.push({minIndex: this._selectedRangeArr[i].minIndex,
+ maxIndex: this._selectedRangeArr[i].maxIndex});
+ }
+ return retVal;
+}
+
+
+/**
+ * Calls a iterator function for each selected index.
+ * <p>
+ * Usage Example:
+ * <pre>
+ * var selectedRowData = [];
+ * mySelectionModel.iterateSelection(function(index) {
+ * selectedRowData.push(myTableModel.getRowData(index));
+ * });
+ * </pre>
+ *
+ * @param iterator {Function} the function to call for each selected index.
+ * Gets the current index as parameter.
+ * @param object {var ? null} the object to use when calling the handler.
+ * (this object will be available via "this" in the iterator)
+ */
+qx.Proto.iterateSelection = function(iterator, object) {
+ for (var i = 0; i < this._selectedRangeArr.length; i++) {
+ for (var j = this._selectedRangeArr[i].minIndex; j <= this._selectedRangeArr[i].maxIndex; j++) {
+ iterator.call(object, j);
+ }
+ }
+};
+
+
+/**
+ * Sets the selected interval. This will clear the former selection.
+ *
+ * @param fromIndex {int} the first index of the selection (including).
+ * @param toIndex {int} the last index of the selection (including).
+ */
+qx.Proto.setSelectionInterval = function(fromIndex, toIndex) {
+ var SelectionModel = qx.ui.table.SelectionModel;
+
+ switch(this.getSelectionMode()) {
+ case SelectionModel.NO_SELECTION:
+ return;
+ case SelectionModel.SINGLE_SELECTION:
+ fromIndex = toIndex;
+ break;
+ }
+
+ this._clearSelection();
+ this._addSelectionInterval(fromIndex, toIndex);
+
+ this._fireChangeSelection();
+}
+
+
+/**
+ * Adds a selection interval to the current selection.
+ *
+ * @param fromIndex {int} the first index of the selection (including).
+ * @param toIndex {int} the last index of the selection (including).
+ */
+qx.Proto.addSelectionInterval = function(fromIndex, toIndex) {
+ var SelectionModel = qx.ui.table.SelectionModel;
+ switch (this.getSelectionMode()) {
+ case SelectionModel.NO_SELECTION:
+ return;
+ case SelectionModel.MULTIPLE_INTERVAL_SELECTION:
+ this._addSelectionInterval(fromIndex, toIndex);
+ this._fireChangeSelection();
+ break;
+ default:
+ this.setSelectionInterval(fromIndex, toIndex);
+ break;
+ }
+}
+
+
+/**
+ * Removes a interval from the current selection.
+ *
+ * @param fromIndex {int} the first index of the interval (including).
+ * @param toIndex {int} the last index of the interval (including).
+ */
+qx.Proto.removeSelectionInterval = function(fromIndex, toIndex) {
+ this._anchorSelectionIndex = fromIndex;
+ this._leadSelectionIndex = toIndex;
+
+ var minIndex = Math.min(fromIndex, toIndex);
+ var maxIndex = Math.max(fromIndex, toIndex);
+
+ // Crop the affected ranges
+ for (var i = 0; i < this._selectedRangeArr.length; i++) {
+ var range = this._selectedRangeArr[i];
+
+ if (range.minIndex > maxIndex) {
+ // We are done
+ break;
+ } else if (range.maxIndex >= minIndex) {
+ // This range is affected
+ var minIsIn = (range.minIndex >= minIndex) && (range.minIndex <= maxIndex);
+ var maxIsIn = (range.maxIndex >= minIndex) && (range.maxIndex <= maxIndex);
+
+ if (minIsIn && maxIsIn) {
+ // This range is removed completely
+ this._selectedRangeArr.splice(i, 1);
+
+ // Check this index another time
+ i--;
+ } else if (minIsIn) {
+ // The range is cropped from the left
+ range.minIndex = maxIndex + 1;
+ } else if (maxIsIn) {
+ // The range is cropped from the right
+ range.maxIndex = minIndex - 1;
+ } else {
+ // The range is split
+ var newRange = { minIndex:maxIndex + 1, maxIndex:range.maxIndex }
+ this._selectedRangeArr.splice(i + 1, 0, newRange);
+
+ range.maxIndex = minIndex - 1;
+
+ // We are done
+ break;
+ }
+ }
+ }
+
+ //this._dumpRanges();
+
+ this._fireChangeSelection();
+}
+
+
+/**
+ * Clears the selection, but doesn't inform the listeners.
+ */
+qx.Proto._clearSelection = function() {
+ this._selectedRangeArr = [];
+}
+
+
+/**
+ * Adds a selection interval to the current selection, but doesn't inform
+ * the listeners.
+ *
+ * @param fromIndex {int} the first index of the selection (including).
+ * @param toIndex {int} the last index of the selection (including).
+ */
+qx.Proto._addSelectionInterval = function(fromIndex, toIndex) {
+ this._anchorSelectionIndex = fromIndex;
+ this._leadSelectionIndex = toIndex;
+
+ var minIndex = Math.min(fromIndex, toIndex);
+ var maxIndex = Math.max(fromIndex, toIndex);
+
+ // Find the index where the new range should be inserted
+ var newRangeIndex = 0;
+ for (; newRangeIndex < this._selectedRangeArr.length; newRangeIndex++) {
+ var range = this._selectedRangeArr[newRangeIndex];
+ if (range.minIndex > minIndex) {
+ break;
+ }
+ }
+
+ // Add the new range
+ this._selectedRangeArr.splice(newRangeIndex, 0, { minIndex:minIndex, maxIndex:maxIndex });
+
+ // Merge overlapping ranges
+ var lastRange = this._selectedRangeArr[0];
+ for (var i = 1; i < this._selectedRangeArr.length; i++) {
+ var range = this._selectedRangeArr[i];
+
+ if (lastRange.maxIndex + 1 >= range.minIndex) {
+ // The ranges are overlapping -> merge them
+ lastRange.maxIndex = Math.max(lastRange.maxIndex, range.maxIndex);
+
+ // Remove the current range
+ this._selectedRangeArr.splice(i, 1);
+
+ // Check this index another time
+ i--;
+ } else {
+ lastRange = range;
+ }
+ }
+
+ //this._dumpRanges();
+}
+
+
+/**
+ * Logs the current ranges for debug perposes.
+ */
+qx.Proto._dumpRanges = function() {
+ var text = "Ranges:";
+ for (var i = 0; i < this._selectedRangeArr.length; i++) {
+ var range = this._selectedRangeArr[i];
+ text += " [" + range.minIndex + ".." + range.maxIndex + "]";
+ }
+ this.debug(text);
+}
+
+
+/**
+ * Fires the "changeSelection" event to all registered listeners. If the selection model
+ * currently is in batch mode, only one event will be thrown when batch mode is ended.
+ */
+qx.Proto._fireChangeSelection = function() {
+ //In batch mode, remember event but do not throw (yet)
+ if (this.hasBatchMode()){
+ this._hadChangeEventInBatchMode = true;
+
+ //If not in batch mode, throw event
+ } else if (this.hasEventListeners("changeSelection")) {
+ this.dispatchEvent(new qx.event.type.Event("changeSelection"), true);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js
new file mode 100644
index 0000000000..ef6ef2fecc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/SimpleTableModel.js
@@ -0,0 +1,335 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A simple table model that provides an API for changing the model data.
+ */
+qx.OO.defineClass("qx.ui.table.SimpleTableModel", qx.ui.table.AbstractTableModel,
+function() {
+ qx.ui.table.AbstractTableModel.call(this);
+
+ this._rowArr = [];
+ this._sortColumnIndex = -1;
+ this._sortAscending;
+
+ this._editableColArr = null;
+});
+
+
+/**
+ * <p>See overridden method for details.</p>
+ *
+ * @param rowIndex {int} the model index of the row.
+ * @return {Array} Array containing a value for each column.
+ */
+qx.Proto.getRowData = function(rowIndex) {
+ return this._rowArr[rowIndex];
+};
+
+
+/**
+ * Returns the data of one row as map containing the column IDs as key and the
+ * cell values as value.
+ *
+ * @param rowIndex {int} the model index of the row.
+ * @return {Map} a Map containing the column values.
+ */
+qx.Proto.getRowDataAsMap = function(rowIndex) {
+ var columnArr = this._rowArr[rowIndex];
+ var map = {};
+ for (var col = 0; col < this.getColumnCount(); col++) {
+ map[this.getColumnId(col)] = columnArr[col];
+ }
+ return map;
+};
+
+
+/**
+ * Sets all columns editable or not editable.
+ *
+ * @param editable {boolean} whether all columns are editable.
+ */
+qx.Proto.setEditable = function(editable) {
+ this._editableColArr = [];
+ for (var col = 0; col < this.getColumnCount(); col++) {
+ this._editableColArr[col] = editable;
+ }
+
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+}
+
+
+/**
+ * Sets whether a column is editable.
+ *
+ * @param columnIndex {int} the column of which to set the editable state.
+ * @param editable {boolean} whether the column should be editable.
+ */
+qx.Proto.setColumnEditable = function(columnIndex, editable) {
+ if (editable != this.isColumnEditable(columnIndex)) {
+ if (this._editableColArr == null) {
+ this._editableColArr = [];
+ }
+ this._editableColArr[columnIndex] = editable;
+
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+ }
+}
+
+
+// overridden
+qx.Proto.isColumnEditable = function(columnIndex) {
+ return this._editableColArr ? (this._editableColArr[columnIndex] == true) : false;
+}
+
+
+// overridden
+qx.Proto.isColumnSortable = function(columnIndex) {
+ return true;
+}
+
+
+// overridden
+qx.Proto.sortByColumn = function(columnIndex, ascending) {
+ // NOTE: We use different comperators for ascending and descending,
+ // because comperators should be really fast.
+ var comperator;
+ if (ascending) {
+ comperator = function(row1, row2) {
+ var obj1 = row1[columnIndex];
+ var obj2 = row2[columnIndex];
+ return (obj1 > obj2) ? 1 : ((obj1 == obj2) ? 0 : -1);
+ }
+ } else {
+ comperator = function(row1, row2) {
+ var obj1 = row1[columnIndex];
+ var obj2 = row2[columnIndex];
+ return (obj1 < obj2) ? 1 : ((obj1 == obj2) ? 0 : -1);
+ }
+ }
+
+ this._rowArr.sort(comperator);
+
+ this._sortColumnIndex = columnIndex;
+ this._sortAscending = ascending;
+
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+}
+
+
+/**
+ * Clears the sorting.
+ */
+qx.Proto._clearSorting = function() {
+ if (this._sortColumnIndex != -1) {
+ this._sortColumnIndex = -1;
+ this._sortAscending = true;
+
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED);
+ }
+}
+
+
+// overridden
+qx.Proto.getSortColumnIndex = function() {
+ return this._sortColumnIndex;
+}
+
+
+// overridden
+qx.Proto.isSortAscending = function() {
+ return this._sortAscending;
+}
+
+
+// overridden
+qx.Proto.getRowCount = function() {
+ return this._rowArr.length;
+}
+
+
+// overridden
+qx.Proto.getValue = function(columnIndex, rowIndex) {
+ if (rowIndex < 0 || rowIndex >= this._rowArr.length) {
+ throw new Error("this._rowArr out of bounds: " + rowIndex + " (0.." + this._rowArr.length + ")");
+ }
+
+ return this._rowArr[rowIndex][columnIndex];
+}
+
+
+// overridden
+qx.Proto.setValue = function(columnIndex, rowIndex, value) {
+ if (this._rowArr[rowIndex][columnIndex] != value) {
+ this._rowArr[rowIndex][columnIndex] = value;
+
+ // Inform the listeners
+ if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
+ var data = { firstRow:rowIndex, lastRow:rowIndex,
+ firstColumn:columnIndex, lastColumn:columnIndex }
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+ }
+
+ if (columnIndex == this._sortColumnIndex) {
+ this._clearSorting();
+ }
+ }
+}
+
+
+/**
+ * Sets the whole data in a bulk.
+ *
+ * @param rowArr {var[][]} An array containing an array for each row. Each
+ * row-array contains the values in that row in the order of the columns
+ * in this model.
+ */
+qx.Proto.setData = function(rowArr) {
+ this._rowArr = rowArr;
+
+ // Inform the listeners
+ if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
+ this.createDispatchEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED);
+ }
+
+ this._clearSorting();
+}
+
+
+/**
+ * Returns the data of this model.
+ * <p>
+ * Warning: Do not alter this array! If you want to change the data use
+ * {@link #setData}, {@link #setDataAsMapArray} or {@link #setValue} instead.
+ *
+ * @return {var[][]} An array containing an array for each row. Each
+ * row-array contains the values in that row in the order of the columns
+ * in this model.
+ */
+qx.Proto.getData = function() {
+ return this._rowArr;
+};
+
+
+/**
+ * Sets the whole data in a bulk.
+ *
+ * @param mapArr {Map[]} An array containing a map for each row. Each
+ * row-map contains the column IDs as key and the cell values as value.
+ */
+qx.Proto.setDataAsMapArray = function(mapArr) {
+ this.setData(this._mapArray2RowArr(mapArr));
+};
+
+
+/**
+ * Adds some rows to the model.
+ * <p>
+ * Warning: The given array will be altered!
+ *
+ * @param rowArr {var[][]} An array containing an array for each row. Each
+ * row-array contains the values in that row in the order of the columns
+ * in this model.
+ * @param startIndex {int ? null} The index where to insert the new rows. If null,
+ * the rows are appended to the end.
+ */
+qx.Proto.addRows = function(rowArr, startIndex) {
+ if (startIndex == null) {
+ startIndex = this._rowArr.length;
+ }
+
+ // Prepare the rowArr so it can be used for apply
+ rowArr.splice(0, 0, startIndex, 0);
+
+ // Insert the new rows
+ Array.prototype.splice.apply(this._rowArr, rowArr);
+
+ // Inform the listeners
+ if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
+ var data = { firstRow:startIndex, lastRow:this._rowArr.length - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+ }
+
+ this._clearSorting();
+};
+
+
+/**
+ * Adds some rows to the model.
+ * <p>
+ * Warning: The given array (mapArr) will be altered!
+ *
+ * @param mapArr {Map[]} An array containing a map for each row. Each
+ * row-map contains the column IDs as key and the cell values as value.
+ * @param startIndex {int ? null} The index where to insert the new rows. If null,
+ * the rows are appended to the end.
+ */
+qx.Proto.addRowsAsMapArray = function(mapArr, startIndex) {
+ this.addRows(this._mapArray2RowArr(mapArr), startIndex);
+};
+
+
+/**
+ * Removes some rows from the model.
+ *
+ * @param startIndex {int} the index of the first row to remove.
+ * @param howMany {int} the number of rows to remove.
+ */
+qx.Proto.removeRows = function(startIndex, howMany) {
+ this._rowArr.splice(startIndex, howMany);
+
+ // Inform the listeners
+ if (this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
+ var data = { firstRow:startIndex, lastRow:this._rowArr.length - 1, firstColumn:0, lastColumn:this.getColumnCount() - 1 };
+ this.dispatchEvent(new qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, data), true);
+ }
+
+ this._clearSorting();
+};
+
+
+/**
+ * Creates an array of maps to an array of arrays.
+ *
+ * @param mapArr {Map[]} An array containing a map for each row. Each
+ * row-map contains the column IDs as key and the cell values as value.
+ * @return {var[][]} An array containing an array for each row. Each
+ * row-array contains the values in that row in the order of the columns
+ * in this model.
+ */
+qx.Proto._mapArray2RowArr = function(mapArr) {
+ var rowCount = mapArr.length;
+ var columnCount = this.getColumnCount();
+ var dataArr = new Array(rowCount);
+ var columnArr;
+ var j;
+ for (var i = 0; i < rowCount; ++i) {
+ columnArr = new Array(columnCount);
+ for (var j = 0; j < columnCount; ++j) {
+ columnArr[j] = mapArr[i][this.getColumnId(j)];
+ }
+ dataArr[i] = columnArr;
+ }
+
+ return dataArr;
+};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/Table.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/Table.js
new file mode 100644
index 0000000000..360662e718
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/Table.js
@@ -0,0 +1,1062 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+#require(qx.ui.table.DefaultDataRowRenderer)
+
+************************************************************************ */
+
+/**
+ * A table.
+ *
+ * @param tableModel {qx.ui.table.TableModel} The table
+ * model to read the data from.
+ */
+qx.OO.defineClass("qx.ui.table.Table", qx.ui.layout.VerticalBoxLayout,
+function(tableModel) {
+ qx.ui.layout.VerticalBoxLayout.call(this);
+
+ // Create the child widgets
+ this._scrollerParent = new qx.ui.layout.HorizontalBoxLayout;
+ this._scrollerParent.setDimension("100%", "1*");
+ this._scrollerParent.setSpacing(1);
+
+ this._statusBar = new qx.ui.basic.Label;
+ this._statusBar.setAppearance("table-focus-statusbar");
+ this._statusBar.setDimension("100%", "auto");
+
+ this.add(this._scrollerParent, this._statusBar);
+
+ this._columnVisibilityBt = new qx.ui.toolbar.Button(null, "widget/table/selectColumnOrder.png");
+ this._columnVisibilityBt.addEventListener("execute", this._onColumnVisibilityBtExecuted, this);
+
+ // Create the models
+ this._selectionManager = new qx.ui.table.SelectionManager;
+
+ this.setSelectionModel(new qx.ui.table.SelectionModel);
+ this.setTableColumnModel(new qx.ui.table.TableColumnModel);
+ this.setTableModel(tableModel);
+
+ // Update the status bar
+ this._updateStatusBar();
+
+ // create the main meta column
+ this.setMetaColumnCounts([ -1 ]);
+
+ // Make focusable
+ this.setTabIndex(1);
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+ this.addEventListener("changeFocused", this._onFocusChanged);
+
+ this._focusedCol = 0;
+ this._focusedRow = 0;
+});
+
+
+/** The default row renderer to use when {@link #dataRowRenderer} is null. */
+qx.Class.DEFAULT_DATA_ROW_RENDERER = new qx.ui.table.DefaultDataRowRenderer();
+
+
+/** The selection model. */
+qx.OO.addProperty({ name:"selectionModel", type:"object", instance : "qx.ui.table.SelectionModel" });
+
+/** The table model. */
+qx.OO.addProperty({ name:"tableModel", type:"object", instance : "qx.ui.table.TableModel" });
+
+/** The table column model. */
+qx.OO.addProperty({ name:"tableColumnModel", type:"object", instance : "qx.ui.table.TableColumnModel" });
+
+/** The height of the table rows. */
+qx.OO.addProperty({ name:"rowHeight", type:"number", defaultValue:15 });
+
+/** Whether to show the status bar */
+qx.OO.addProperty({ name:"statusBarVisible", type:"boolean", defaultValue:true });
+
+/** Whether to show the column visibility button */
+qx.OO.addProperty({ name:"columnVisibilityButtonVisible", type:"boolean", defaultValue:true });
+
+/**
+ * {int[]} The number of columns per meta column. If the last array entry is -1,
+ * this meta column will get the remaining columns.
+ */
+qx.OO.addProperty({ name:"metaColumnCounts", type:"object" });
+
+/**
+ * Whether the focus should moved when the mouse is moved over a cell. If false
+ * the focus is only moved on mouse clicks.
+ */
+qx.OO.addProperty({ name:"focusCellOnMouseMove", type:"boolean", defaultValue:false });
+
+/**
+ * Whether the table should keep the first visible row complete. If set to false,
+ * the first row may be rendered partial, depending on the vertical scroll value.
+ */
+qx.OO.addProperty({ name:"keepFirstVisibleRowComplete", type:"boolean", defaultValue:true });
+
+/**
+ * Whether the table cells should be updated when only the selection or the
+ * focus changed. This slows down the table update but allows to react on a
+ * changed selection or a changed focus in a cell renderer.
+ */
+qx.OO.addProperty({ name:"alwaysUpdateCells", type:"boolean", defaultValue:false });
+
+/** The height of the header cells. */
+qx.OO.addProperty({ name:"headerCellHeight", type:"number", defaultValue:16, allowNull:false });
+
+/** The renderer to use for styling the rows. */
+qx.OO.addProperty({ name:"dataRowRenderer", type:"object", instance:"qx.ui.table.DataRowRenderer", defaultValue:qx.Class.DEFAULT_DATA_ROW_RENDERER, allowNull:false });
+
+
+// property modifier
+qx.Proto._modifySelectionModel = function(propValue, propOldValue, propData) {
+ this._selectionManager.setSelectionModel(propValue);
+
+ if (propOldValue != null) {
+ propOldValue.removeEventListener("changeSelection", this._onSelectionChanged, this);
+ }
+ propValue.addEventListener("changeSelection", this._onSelectionChanged, this);
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyTableModel = function(propValue, propOldValue, propData) {
+ this.getTableColumnModel().init(propValue.getColumnCount());
+
+ if (propOldValue != null) {
+ propOldValue.removeEventListener(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED, this._onTableModelMetaDataChanged, this);
+ propOldValue.removeEventListener(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, this._onTableModelDataChanged, this);
+ }
+ propValue.addEventListener(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED, this._onTableModelMetaDataChanged, this);
+ propValue.addEventListener(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, this._onTableModelDataChanged, this);
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyTableColumnModel = function(propValue, propOldValue, propData) {
+ if (propOldValue != null) {
+ propOldValue.removeEventListener("visibilityChanged", this._onColVisibilityChanged, this);
+ propOldValue.removeEventListener("widthChanged", this._onColWidthChanged, this);
+ propOldValue.removeEventListener("orderChanged", this._onColOrderChanged, this);
+ }
+ propValue.addEventListener("visibilityChanged", this._onColVisibilityChanged, this);
+ propValue.addEventListener("widthChanged", this._onColWidthChanged, this);
+ propValue.addEventListener("orderChanged", this._onColOrderChanged, this);
+
+ return true;
+};
+
+
+// property modifier
+qx.Proto._modifyStatusBarVisible = function(propValue, propOldValue, propData) {
+ this._statusBar.setDisplay(propValue);
+
+ if (propValue) {
+ this._updateStatusBar();
+ }
+ return true;
+};
+
+
+// property modifier
+qx.Proto._modifyColumnVisibilityButtonVisible = function(propValue, propOldValue, propData) {
+ this._columnVisibilityBt.setDisplay(propValue);
+
+ return true;
+};
+
+
+// property modifier
+qx.Proto._modifyMetaColumnCounts = function(propValue, propOldValue, propData) {
+ var metaColumnCounts = propValue;
+ var scrollerArr = this._getPaneScrollerArr();
+
+ // Remove the panes not needed any more
+ this._cleanUpMetaColumns(metaColumnCounts.length);
+
+ // Update the old panes
+ var leftX = 0;
+ for (var i = 0; i < scrollerArr.length; i++) {
+ var paneScroller = scrollerArr[i];
+ var paneModel = paneScroller.getTablePaneModel();
+ paneModel.setFirstColumnX(leftX);
+ paneModel.setMaxColumnCount(metaColumnCounts[i]);
+ leftX += metaColumnCounts[i];
+ }
+
+ // Add the new panes
+ if (metaColumnCounts.length > scrollerArr.length) {
+ var selectionModel = this.getSelectionModel();
+ var tableModel = this.getTableModel();
+ var columnModel = this.getTableColumnModel();
+
+ for (var i = scrollerArr.length; i < metaColumnCounts.length; i++) {
+ var paneModel = new qx.ui.table.TablePaneModel(columnModel);
+ paneModel.setFirstColumnX(leftX);
+ paneModel.setMaxColumnCount(metaColumnCounts[i]);
+ leftX += metaColumnCounts[i];
+
+ var paneScroller = new qx.ui.table.TablePaneScroller(this);
+ paneScroller.setTablePaneModel(paneModel);
+
+ // Register event listener for vertical scrolling
+ paneScroller.addEventListener("changeScrollY", this._onScrollY, this);
+
+ this._scrollerParent.add(paneScroller);
+ }
+ }
+
+ // Update all meta columns
+ for (var i = 0; i < scrollerArr.length; i++) {
+ var paneScroller = scrollerArr[i];
+ var isLast = (i == (scrollerArr.length - 1));
+
+ // Set the right header height
+ paneScroller.getHeader().setHeight(this.getHeaderCellHeight());
+
+ // Put the _columnVisibilityBt in the top right corner of the last meta column
+ paneScroller.setTopRightWidget(isLast ? this._columnVisibilityBt : null);
+ }
+
+ this._updateScrollerWidths();
+ this._updateScrollBarVisibility();
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyFocusCellOnMouseMove = function(propValue, propOldValue, propData) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i].setFocusCellOnMouseMove(propValue);
+ }
+ return true;
+};
+
+
+// property modifier
+qx.Proto._modifyKeepFirstVisibleRowComplete = function(propValue, propOldValue, propData) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onKeepFirstVisibleRowCompleteChanged();
+ }
+ return true;
+};
+
+
+// property modifier
+qx.Proto._modifyHeaderCellHeight = function(propValue, propOldValue, propData) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i].getHeader().setHeight(propValue);
+ }
+ return true;
+};
+
+
+/**
+ * Returns the selection manager.
+ *
+ * @return {SelectionManager} the selection manager.
+ */
+qx.Proto._getSelectionManager = function() {
+ return this._selectionManager;
+};
+
+
+/**
+ * Returns an array containing all TablePaneScrollers in this table.
+ *
+ * @return {TablePaneScroller[]} all TablePaneScrollers in this table.
+ */
+qx.Proto._getPaneScrollerArr = function() {
+ return this._scrollerParent.getChildren();
+}
+
+
+/**
+ * Returns a TablePaneScroller of this table.
+ *
+ * @param metaColumn {int} the meta column to get the TablePaneScroller for.
+ * @return {TablePaneScroller} the TablePaneScroller.
+ */
+qx.Proto.getPaneScroller = function(metaColumn) {
+ return this._getPaneScrollerArr()[metaColumn];
+}
+
+
+/**
+ * Cleans up the meta columns.
+ *
+ * @param fromMetaColumn {int} the first meta column to clean up. All following
+ * meta columns will be cleaned up, too. All previous meta columns will
+ * stay unchanged. If 0 all meta columns will be cleaned up.
+ */
+qx.Proto._cleanUpMetaColumns = function(fromMetaColumn) {
+ var scrollerArr = this._getPaneScrollerArr();
+ if (scrollerArr != null) {
+ for (var i = scrollerArr.length - 1; i >= fromMetaColumn; i--) {
+ var paneScroller = scrollerArr[i];
+ paneScroller.removeEventListener("changeScrollY", this._onScrollY, this);
+ this._scrollerParent.remove(paneScroller);
+ paneScroller.dispose();
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the selection has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onSelectionChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onSelectionChanged(evt);
+ }
+
+ this._updateStatusBar();
+}
+
+
+/**
+ * Event handler. Called when the table model meta data has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelMetaDataChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onTableModelMetaDataChanged(evt);
+ }
+
+ this._updateStatusBar();
+}
+
+
+/**
+ * Event handler. Called when the table model data has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelDataChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onTableModelDataChanged(evt);
+ }
+
+ var rowCount = this.getTableModel().getRowCount();
+ if (rowCount != this._lastRowCount) {
+ this._lastRowCount = rowCount;
+
+ this._updateScrollBarVisibility();
+ this._updateStatusBar();
+ }
+};
+
+
+/**
+ * Event handler. Called when a TablePaneScroller has been scrolled vertically.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onScrollY = function(evt) {
+ if (! this._internalChange) {
+ this._internalChange = true;
+
+ // Set the same scroll position to all meta columns
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i].setScrollY(evt.getData());
+ }
+
+ this._internalChange = false;
+ }
+}
+
+
+/**
+ * Event handler. Called when a key was pressed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onkeydown = function(evt) {
+ var identifier = evt.getKeyIdentifier();
+
+ var consumed = false;
+ var oldFocusedRow = this._focusedRow;
+ if (this.isEditing()) {
+ // Editing mode
+ if (evt.getModifiers() == 0) {
+ consumed = true;
+ switch (identifier) {
+ case "Enter":
+ this.stopEditing();
+ var oldFocusedRow = this._focusedRow;
+ this.moveFocusedCell(0, 1);
+ if (this._focusedRow != oldFocusedRow) {
+ this.startEditing();
+ }
+ break;
+ case "Escape":
+ this.cancelEditing();
+ this.focus();
+ break;
+ default:
+ consumed = false;
+ break;
+ }
+ }
+ } else {
+ // No editing mode
+
+ // Handle keys that are independant from the modifiers
+ consumed = true;
+ switch (identifier) {
+ case "Home":
+ this.setFocusedCell(this._focusedCol, 0, true);
+ break;
+ case "End":
+ var rowCount = this.getTableModel().getRowCount();
+ this.setFocusedCell(this._focusedCol, rowCount - 1, true);
+ break;
+ default:
+ consumed = false;
+ break;
+ }
+
+ // Handle keys that depend on modifiers
+ if (evt.getModifiers() == 0) {
+ consumed = true;
+ switch (identifier) {
+ case "F2":
+ case "Enter":
+ this.startEditing();
+ break;
+ default:
+ consumed = false;
+ break;
+ }
+ } else if (evt.getCtrlKey()) {
+ consumed = true;
+ switch (identifier) {
+ case "A": // Ctrl + A
+ var rowCount = this.getTableModel().getRowCount();
+ if (rowCount > 0) {
+ this.getSelectionModel().setSelectionInterval(0, rowCount - 1);
+ }
+ break;
+ default:
+ consumed = false;
+ break;
+ }
+ }
+ }
+
+ if (oldFocusedRow != this._focusedRow) {
+ // The focus moved -> Let the selection manager handle this event
+ this._selectionManager.handleMoveKeyDown(this._focusedRow, evt);
+ }
+
+ if (consumed) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ }
+};
+
+
+qx.Proto._onkeypress = function(evt)
+{
+ if (this.isEditing()) { return }
+ // No editing mode
+ var oldFocusedRow = this._focusedRow;
+ var consumed = true;
+
+ // Handle keys that are independant from the modifiers
+ var identifier = evt.getKeyIdentifier();
+ switch (identifier) {
+ case "Space":
+ this._selectionManager.handleSelectKeyDown(this._focusedRow, evt);
+ break;
+
+ case "Left":
+ this.moveFocusedCell(-1, 0);
+ break;
+
+ case "Right":
+ this.moveFocusedCell(1, 0);
+ break;
+
+ case "Up":
+ this.moveFocusedCell(0, -1);
+ break;
+
+ case "Down":
+ this.moveFocusedCell(0, 1);
+ break;
+
+ case "PageUp":
+ case "PageDown":
+ var scroller = this.getPaneScroller(0);
+ var pane = scroller.getTablePane();
+ var rowCount = pane.getVisibleRowCount() - 1;
+ var rowHeight = this.getRowHeight();
+ var direction = (identifier == "PageUp") ? -1 : 1;
+ scroller.setScrollY(scroller.getScrollY() + direction * rowCount * rowHeight);
+ this.moveFocusedCell(0, direction * rowCount);
+ break;
+
+ default:
+ consumed = false;
+ }
+ if (oldFocusedRow != this._focusedRow) {
+ // The focus moved -> Let the selection manager handle this event
+ this._selectionManager.handleMoveKeyDown(this._focusedRow, evt);
+ }
+
+ if (consumed) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ }
+};
+
+
+/**
+ * Event handler. Called when the table gets the focus.
+ */
+qx.Proto._onFocusChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onFocusChanged(evt);
+ }
+};
+
+
+/**
+ * Event handler. Called when the visibility of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColVisibilityChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onColVisibilityChanged(evt);
+ }
+
+ this._updateScrollerWidths();
+ this._updateScrollBarVisibility();
+}
+
+
+/**
+ * Event handler. Called when the width of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColWidthChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onColWidthChanged(evt);
+ }
+
+ this._updateScrollerWidths();
+ this._updateScrollBarVisibility();
+}
+
+
+/**
+ * Event handler. Called when the column order has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColOrderChanged = function(evt) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i]._onColOrderChanged(evt);
+ }
+
+ // A column may have been moved between meta columns
+ this._updateScrollerWidths();
+ this._updateScrollBarVisibility();
+}
+
+
+/**
+ * Gets the TablePaneScroller at a certain x position in the page. If there is
+ * no TablePaneScroller at this postion, null is returned.
+ *
+ * @param pageX {int} the position in the page to check (in pixels).
+ * @return {TablePaneScroller} the TablePaneScroller or null.
+ *
+ * @see TablePaneScrollerPool
+ */
+qx.Proto.getTablePaneScrollerAtPageX = function(pageX) {
+ var metaCol = this._getMetaColumnAtPageX(pageX);
+ return (metaCol != -1) ? this.getPaneScroller(metaCol) : null;
+}
+
+
+/**
+ * Sets the currently focused cell.
+ *
+ * @param col {int} the model index of the focused cell's column.
+ * @param row {int} the model index of the focused cell's row.
+ * @param scrollVisible {boolean ? false} whether to scroll the new focused cell
+ * visible.
+ *
+ * @see TablePaneScrollerPool
+ */
+qx.Proto.setFocusedCell = function(col, row, scrollVisible) {
+ if (!this.isEditing() && (col != this._focusedCol || row != this._focusedRow)) {
+ this._focusedCol = col;
+ this._focusedRow = row;
+
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ scrollerArr[i].setFocusedCell(col, row);
+ }
+
+ if (scrollVisible) {
+ this.scrollCellVisible(col, row);
+ }
+ }
+}
+
+
+/**
+ * Returns the column of the currently focused cell.
+ *
+ * @return {int} the model index of the focused cell's column.
+ */
+qx.Proto.getFocusedColumn = function() {
+ return this._focusedCol;
+};
+
+
+/**
+ * Returns the row of the currently focused cell.
+ *
+ * @return {int} the model index of the focused cell's column.
+ */
+qx.Proto.getFocusedRow = function() {
+ return this._focusedRow;
+};
+
+
+/**
+ * Moves the focus.
+ *
+ * @param deltaX {int} The delta by which the focus should be moved on the x axis.
+ * @param deltaY {int} The delta by which the focus should be moved on the y axis.
+ */
+qx.Proto.moveFocusedCell = function(deltaX, deltaY) {
+ var col = this._focusedCol;
+ var row = this._focusedRow;
+
+ if (deltaX != 0) {
+ var columnModel = this.getTableColumnModel();
+ var x = columnModel.getVisibleX(col);
+ var colCount = columnModel.getVisibleColumnCount();
+ x = qx.lang.Number.limit(x + deltaX, 0, colCount - 1);
+ col = columnModel.getVisibleColumnAtX(x);
+ }
+
+ if (deltaY != 0) {
+ var tableModel = this.getTableModel();
+ row = qx.lang.Number.limit(row + deltaY, 0, tableModel.getRowCount() - 1);
+ }
+
+ this.setFocusedCell(col, row, true);
+}
+
+
+/**
+ * Scrolls a cell visible.
+ *
+ * @param col {int} the model index of the column the cell belongs to.
+ * @param row {int} the model index of the row the cell belongs to.
+ */
+qx.Proto.scrollCellVisible = function(col, row) {
+ var columnModel = this.getTableColumnModel();
+ var x = columnModel.getVisibleX(col);
+
+ var metaColumn = this._getMetaColumnAtColumnX(x);
+ if (metaColumn != -1) {
+ this.getPaneScroller(metaColumn).scrollCellVisible(col, row);
+ }
+}
+
+
+/**
+ * Returns whether currently a cell is editing.
+ *
+ * @return whether currently a cell is editing.
+ */
+qx.Proto.isEditing = function() {
+ if (this._focusedCol != null) {
+ var x = this.getTableColumnModel().getVisibleX(this._focusedCol);
+ var metaColumn = this._getMetaColumnAtColumnX(x);
+ return this.getPaneScroller(metaColumn).isEditing();
+ }
+}
+
+
+/**
+ * Starts editing the currently focused cell. Does nothing if already editing
+ * or if the column is not editable.
+ *
+ * @return {boolean} whether editing was started
+ */
+qx.Proto.startEditing = function() {
+ if (this._focusedCol != null) {
+ var x = this.getTableColumnModel().getVisibleX(this._focusedCol);
+ var metaColumn = this._getMetaColumnAtColumnX(x);
+ return this.getPaneScroller(metaColumn).startEditing();
+ }
+ return false;
+}
+
+
+/**
+ * Stops editing and writes the editor's value to the model.
+ */
+qx.Proto.stopEditing = function() {
+ if (this._focusedCol != null) {
+ var x = this.getTableColumnModel().getVisibleX(this._focusedCol);
+ var metaColumn = this._getMetaColumnAtColumnX(x);
+ this.getPaneScroller(metaColumn).stopEditing();
+ }
+}
+
+
+/**
+ * Stops editing without writing the editor's value to the model.
+ */
+qx.Proto.cancelEditing = function() {
+ if (this._focusedCol != null) {
+ var x = this.getTableColumnModel().getVisibleX(this._focusedCol);
+ var metaColumn = this._getMetaColumnAtColumnX(x);
+ this.getPaneScroller(metaColumn).cancelEditing();
+ }
+}
+
+
+/**
+ * Gets the meta column at a certain x position in the page. If there is no
+ * meta column at this postion, -1 is returned.
+ *
+ * @param pageX {int} the position in the page to check (in pixels).
+ * @return {int} the index of the meta column or -1.
+ */
+qx.Proto._getMetaColumnAtPageX = function(pageX) {
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ var elem = scrollerArr[i].getElement();
+ if (pageX >= qx.dom.Location.getPageBoxLeft(elem)
+ && pageX <= qx.dom.Location.getPageBoxRight(elem))
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+
+/**
+ * Returns the meta column a column is shown in. If the column is not shown at
+ * all, -1 is returned.
+ *
+ * @param visXPos {int} the visible x position of the column.
+ * @return {int} the meta column the column is shown in.
+ */
+qx.Proto._getMetaColumnAtColumnX = function(visXPos) {
+ var metaColumnCounts = this.getMetaColumnCounts();
+ var rightXPos = 0;
+ for (var i = 0; i < metaColumnCounts.length; i++) {
+ var counts = metaColumnCounts[i];
+ rightXPos += counts;
+
+ if (counts == -1 || visXPos < rightXPos) {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+
+/**
+ * Updates the text shown in the status bar.
+ */
+qx.Proto._updateStatusBar = function() {
+ if (this.getStatusBarVisible()) {
+ var selectedRowCount = this.getSelectionModel().getSelectedCount();
+ var rowCount = this.getTableModel().getRowCount();
+
+ var text;
+ if (selectedRowCount == 0) {
+ text = rowCount + ((rowCount == 1) ? " row" : " rows");
+ } else {
+ text = selectedRowCount + " of " + rowCount
+ + ((rowCount == 1) ? " row" : " rows") + " selected";
+ }
+ this._statusBar.setHtml(text);
+ }
+}
+
+
+/**
+ * Updates the widths of all scrollers.
+ */
+qx.Proto._updateScrollerWidths = function() {
+/* no longer needed, per Til, and removing it does not appear to add problems.
+ * qx.ui.core.Widget.flushGlobalQueues();
+ */
+
+ // Give all scrollers except for the last one the wanted width
+ // (The last one has a flex with)
+ var scrollerArr = this._getPaneScrollerArr();
+ for (var i = 0; i < scrollerArr.length; i++) {
+ var isLast = (i == (scrollerArr.length - 1));
+ var width = isLast ? "1*" : scrollerArr[i].getTablePaneModel().getTotalWidth();
+ scrollerArr[i].setWidth(width);
+ }
+}
+
+
+/**
+ * Updates the visibility of the scrollbars in the meta columns.
+ */
+qx.Proto._updateScrollBarVisibility = function() {
+ if (this.isSeeable()) {
+ var horBar = qx.ui.table.TablePaneScroller.HORIZONTAL_SCROLLBAR;
+ var verBar = qx.ui.table.TablePaneScroller.VERTICAL_SCROLLBAR;
+ var scrollerArr = this._getPaneScrollerArr();
+
+ // Check which scroll bars are needed
+ var horNeeded = false;
+ var verNeeded = false;
+ for (var i = 0; i < scrollerArr.length; i++) {
+ var isLast = (i == (scrollerArr.length - 1));
+
+ // Only show the last vertical scrollbar
+ var bars = scrollerArr[i].getNeededScrollBars(horNeeded, !isLast);
+
+ if (bars & horBar) {
+ horNeeded = true;
+ }
+ if (isLast && (bars & verBar)) {
+ verNeeded = true;
+ }
+ }
+
+ // Set the needed scrollbars
+ for (var i = 0; i < scrollerArr.length; i++) {
+ var isLast = (i == (scrollerArr.length - 1));
+
+ // Only show the last vertical scrollbar
+ scrollerArr[i].setHorizontalScrollBarVisible(horNeeded);
+ scrollerArr[i].setVerticalScrollBarVisible(isLast && verNeeded);
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the column visibiliy button was executed.
+ */
+qx.Proto._onColumnVisibilityBtExecuted = function() {
+ if ((this._columnVisibilityMenuCloseTime == null)
+ || (new Date().getTime() > this._columnVisibilityMenuCloseTime + 200))
+ {
+ this._toggleColumnVisibilityMenu();
+ }
+}
+
+
+/**
+ * Toggels the visibility of the menu used to change the visibility of columns.
+ */
+qx.Proto._toggleColumnVisibilityMenu = function() {
+ if (this._columnVisibilityMenu == null || !this._columnVisibilityMenu.isSeeable()) {
+ // Show the menu
+
+ // Create the new menu
+ var menu = new qx.ui.menu.Menu;
+
+ menu.addEventListener("disappear", function(evt) {
+ this._columnVisibilityMenuCloseTime = new Date().getTime();
+ }, this);
+
+ var tableModel = this.getTableModel();
+ var columnModel = this.getTableColumnModel();
+ for (var x = 0; x < columnModel.getOverallColumnCount(); x++) {
+ var col = columnModel.getOverallColumnAtX(x);
+ var visible = columnModel.isColumnVisible(col);
+ var cmd = { col:col }
+ var bt = new qx.ui.menu.CheckBox(tableModel.getColumnName(col), null, visible);
+
+ var handler = this._createColumnVisibilityCheckBoxHandler(col);
+ bt._handler = handler;
+ bt.addEventListener("execute", handler, this);
+
+ menu.add(bt);
+ }
+
+ menu.setParent(this.getTopLevelWidget());
+
+ this._columnVisibilityMenu = menu;
+
+ // Show the menu
+ var btElem = this._columnVisibilityBt.getElement();
+ menu.setRestrictToPageOnOpen(false);
+ menu.setTop(qx.dom.Location.getClientBoxBottom(btElem));
+ menu.setLeft(-1000);
+
+ // NOTE: We have to show the menu in a timeout, otherwise it won't be shown
+ // at all.
+ window.setTimeout(function() {
+ menu.show();
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ menu.setLeft(qx.dom.Location.getClientBoxRight(btElem) - menu.getOffsetWidth());
+ qx.ui.core.Widget.flushGlobalQueues();
+ }, 0);
+ } else {
+ // hide the menu
+ menu.hide();
+ this._cleanupColumnVisibilityMenu();
+ }
+}
+
+
+/**
+ * Cleans up the column visibility menu.
+ */
+qx.Proto._cleanupColumnVisibilityMenu = function() {
+ if (this._columnVisibilityMenu != null && ! this._columnVisibilityMenu.getDisposed()) {
+ this._columnVisibilityMenu.dispose();
+ this._columnVisibilityMenu = null;
+ }
+}
+
+
+/**
+ * Creates a handler for a check box of the column visibility menu.
+ *
+ * @param col {int} the model index of column to create the handler for.
+ */
+qx.Proto._createColumnVisibilityCheckBoxHandler = function(col) {
+ return function(evt) {
+ var columnModel = this.getTableColumnModel();
+ columnModel.setColumnVisible(col, !columnModel.isColumnVisible(col));
+ }
+}
+
+
+/**
+ * Sets the width of a column.
+ *
+ * @param col {int} the model index of column.
+ * @param width {int} the new width in pixels.
+ */
+qx.Proto.setColumnWidth = function(col, width) {
+ this.getTableColumnModel().setColumnWidth(col, width);
+}
+
+
+// overridden
+qx.Proto._changeInnerWidth = function(newValue, oldValue) {
+ var self = this;
+ window.setTimeout(function() {
+ self._updateScrollBarVisibility();
+ qx.ui.core.Widget.flushGlobalQueues();
+ }, 0);
+
+ return qx.ui.layout.VerticalBoxLayout.prototype._changeInnerWidth.call(this, newValue, oldValue);
+}
+
+
+// overridden
+qx.Proto._changeInnerHeight = function(newValue, oldValue) {
+ var self = this;
+ window.setTimeout(function() {
+ self._updateScrollBarVisibility();
+ qx.ui.core.Widget.flushGlobalQueues();
+ }, 0);
+
+ return qx.ui.layout.VerticalBoxLayout.prototype._changeInnerHeight.call(this, newValue, oldValue);
+}
+
+
+// overridden
+qx.Proto._afterAppear = function() {
+ qx.ui.layout.VerticalBoxLayout.prototype._afterAppear.call(this);
+
+ this._updateScrollBarVisibility();
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._tableModel) {
+ this._tableModel.removeEventListener(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED, this._onTableModelMetaDataChanged, this);
+ }
+
+ this._columnVisibilityBt.removeEventListener("execute", this._onColumnVisibilityBtExecuted, this);
+ this._columnVisibilityBt.dispose();
+
+ this._cleanupColumnVisibilityMenu();
+
+ this._cleanUpMetaColumns(0);
+
+ var selectionModel = this.getSelectionModel();
+ if (selectionModel != null) {
+ selectionModel.removeEventListener("changeSelection", this._onSelectionChanged, this);
+ }
+
+ var tableModel = this.getTableModel();
+ if (tableModel != null) {
+ tableModel.removeEventListener(qx.ui.table.TableModel.EVENT_TYPE_META_DATA_CHANGED, this._onTableModelMetaDataChanged, this);
+ tableModel.removeEventListener(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED, this._onTableModelDataChanged, this);
+ }
+
+ var tableColumnModel = this.getTableColumnModel();
+ if (tableColumnModel) {
+ tableColumnModel.removeEventListener("visibilityChanged", this._onColVisibilityChanged, this);
+ tableColumnModel.removeEventListener("widthChanged", this._onColWidthChanged, this);
+ tableColumnModel.removeEventListener("orderChanged", this._onColOrderChanged, this);
+ }
+
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+
+ return qx.ui.layout.VerticalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableColumnModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableColumnModel.js
new file mode 100644
index 0000000000..334187a268
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableColumnModel.js
@@ -0,0 +1,399 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+// These are needed because of their instantiation at bottom. I don't think this
+// is a good idea. (wpbasti)
+#require(qx.ui.table.DefaultHeaderCellRenderer)
+#require(qx.ui.table.DefaultDataCellRenderer)
+#require(qx.ui.table.TextFieldCellEditorFactory)
+
+************************************************************************ */
+
+/**
+ * A model that contains all meta data about columns, such as width, renderers,
+ * visibility and order.
+ *
+ * @event widthChanged {qx.event.type.DataEvent} Fired when the width of a
+ * column has changed. The data property of the event is a map having the
+ * following attributes:
+ * <ul>
+ * <li>col: The model index of the column the width of which has changed.</li>
+ * <li>newWidth: The new width of the column in pixels.</li>
+ * <li>oldWidth: The old width of the column in pixels.</li>
+ * </ul>
+ * @event visibilityChangedPre {qx.event.type.DataEvent} Fired when the
+ * visibility of a column has changed. This event is equal to
+ * "visibilityChanged", but is fired right before.
+ * @event visibilityChanged {qx.event.type.DataEvent} Fired when the
+ * visibility of a column has changed. The data property of the
+ * event is a map having the following attributes:
+ * <ul>
+ * <li>col: The model index of the column the visibility of which has changed.</li>
+ * <li>visible: Whether the column is now visible.</li>
+ * </ul>
+ * @event orderChanged {qx.event.type.DataEvent} Fired when the column order
+ * has changed. The data property of the
+ * event is a map having the following attributes:
+ * <ul>
+ * <li>col: The model index of the column that was moved.</li>
+ * <li>fromOverXPos: The old overall x position of the column.</li>
+ * <li>toOverXPos: The new overall x position of the column.</li>
+ * </ul>
+ *
+ * @see com.ptvag.webcomponent.ui.table.TableModel
+ */
+qx.OO.defineClass("qx.ui.table.TableColumnModel", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+});
+
+
+/**
+ * Initializes the column model.
+ *
+ * @param colCount {int} the number of columns the model should have.
+ */
+qx.Proto.init = function(colCount) {
+ this._columnDataArr = [];
+
+ var width = qx.ui.table.TableColumnModel.DEFAULT_WIDTH;
+ var headerRenderer = qx.ui.table.TableColumnModel.DEFAULT_HEADER_RENDERER;
+ var dataRenderer = qx.ui.table.TableColumnModel.DEFAULT_DATA_RENDERER;
+ var editorFactory = qx.ui.table.TableColumnModel.DEFAULT_EDITOR_FACTORY;
+ this._overallColumnArr = [];
+ this._visibleColumnArr = [];
+ for (var col = 0; col < colCount; col++) {
+ this._columnDataArr[col] = { width:width, headerRenderer:headerRenderer,
+ dataRenderer:dataRenderer, editorFactory:editorFactory }
+ this._overallColumnArr[col] = col;
+ this._visibleColumnArr[col] = col;
+ }
+
+ this._colToXPosMap = null;
+}
+
+
+/**
+ * Sets the width of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @param width {int} the new width the column should get in pixels.
+ */
+qx.Proto.setColumnWidth = function(col, width) {
+ var oldWidth = this._columnDataArr[col].width;
+ if (oldWidth != width) {
+ this._columnDataArr[col].width = width;
+ if (this.hasEventListeners("widthChanged")) {
+ var data = { col:col, newWidth:width, oldWidth:oldWidth }
+ this.dispatchEvent(new qx.event.type.DataEvent("widthChanged", data), true);
+ }
+ }
+}
+
+
+/**
+ * Returns the width of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @return {int} the width of the column in pixels.
+ */
+qx.Proto.getColumnWidth = function(col) {
+ return this._columnDataArr[col].width;
+}
+
+
+/**
+ * Sets the header renderer of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @param renderer {HeaderCellRenderer} the new header renderer the column
+ * should get.
+ */
+qx.Proto.setHeaderCellRenderer = function(col, renderer) {
+ this._columnDataArr[col].headerRenderer = renderer;
+}
+
+
+/**
+ * Returns the header renderer of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @return {HeaderCellRenderer} the header renderer of the column.
+ */
+qx.Proto.getHeaderCellRenderer = function(col) {
+ return this._columnDataArr[col].headerRenderer;
+}
+
+
+/**
+ * Sets the data renderer of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @param renderer {DataCellRenderer} the new data renderer the column should get.
+ */
+qx.Proto.setDataCellRenderer = function(col, renderer) {
+ this._columnDataArr[col].dataRenderer = renderer;
+}
+
+
+/**
+ * Returns the data renderer of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @return {DataCellRenderer} the data renderer of the column.
+ */
+qx.Proto.getDataCellRenderer = function(col) {
+ return this._columnDataArr[col].dataRenderer;
+}
+
+
+/**
+ * Sets the cell editor factory of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @param factory {CellEditorFactory} the new cell editor factory the column should get.
+ */
+qx.Proto.setCellEditorFactory = function(col, factory) {
+ this._columnDataArr[col].editorFactory = factory;
+}
+
+
+/**
+ * Returns the cell editor factory of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @return {CellEditorFactory} the cell editor factory of the column.
+ */
+qx.Proto.getCellEditorFactory = function(col) {
+ return this._columnDataArr[col].editorFactory;
+}
+
+
+/**
+ * Returns the map that translates model indexes to x positions.
+ * <p>
+ * The returned map contains for a model index (int) a map having two
+ * properties: overX (the overall x position of the column, int) and
+ * visX (the visible x position of the column, int). visX is missing for
+ * hidden columns.
+ *
+ * @return the "column to x postion" map.
+ */
+qx.Proto._getColToXPosMap = function() {
+ if (this._colToXPosMap == null) {
+ this._colToXPosMap = {};
+ for (var overX = 0; overX < this._overallColumnArr.length; overX++) {
+ var col = this._overallColumnArr[overX];
+ this._colToXPosMap[col] = { overX:overX }
+ }
+ for (var visX = 0; visX < this._visibleColumnArr.length; visX++) {
+ var col = this._visibleColumnArr[visX];
+ this._colToXPosMap[col].visX = visX;
+ }
+ }
+ return this._colToXPosMap;
+}
+
+
+/**
+ * Returns the number of visible columns.
+ *
+ * @return {int} the number of visible columns.
+ */
+qx.Proto.getVisibleColumnCount = function() {
+ return this._visibleColumnArr.length;
+}
+
+
+/**
+ * Returns the model index of a column at a certain visible x position.
+ *
+ * @param visXPos {int} the visible x position of the column.
+ * @return {int} the model index of the column.
+ */
+qx.Proto.getVisibleColumnAtX = function(visXPos) {
+ return this._visibleColumnArr[visXPos];
+}
+
+
+/**
+ * Returns the visible x position of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @return {int} the visible x position of the column.
+ */
+qx.Proto.getVisibleX = function(col) {
+ return this._getColToXPosMap()[col].visX;
+}
+
+
+/**
+ * Returns the overall number of columns (including hidden columns).
+ *
+ * @return {int} the overall number of columns.
+ */
+qx.Proto.getOverallColumnCount = function() {
+ return this._overallColumnArr.length;
+}
+
+
+/**
+ * Returns the model index of a column at a certain overall x position.
+ *
+ * @param overXPos {int} the overall x position of the column.
+ * @return {int} the model index of the column.
+ */
+qx.Proto.getOverallColumnAtX = function(overXPos) {
+ return this._overallColumnArr[overXPos];
+}
+
+
+/**
+ * Returns the overall x position of a column.
+ *
+ * @param col {int} the model index of the column.
+ * @return {int} the overall x position of the column.
+ */
+qx.Proto.getOverallX = function(col) {
+ return this._getColToXPosMap()[col].overX;
+}
+
+
+/**
+ * Returns whether a certain column is visible.
+ *
+ * @param col {int} the model index of the column.
+ * @return {boolean} whether the column is visible.
+ */
+qx.Proto.isColumnVisible = function(col) {
+ return (this._getColToXPosMap()[col].visX != null);
+}
+
+
+/**
+ * Sets whether a certain column is visible.
+ *
+ * @param col {int} the model index of the column.
+ * @param visible {boolean} whether the column should be visible.
+ */
+qx.Proto.setColumnVisible = function(col, visible) {
+ if (visible != this.isColumnVisible(col)) {
+ if (visible) {
+ var colToXPosMap = this._getColToXPosMap();
+
+ var overX = colToXPosMap[col].overX;
+ if (overX == null) {
+ throw new Error("Showing column failed: " + col
+ + ". The column is not added to this TablePaneModel.");
+ }
+
+ // get the visX of the next visible column after the column to show
+ var nextVisX;
+ for (var x = overX + 1; x < this._overallColumnArr.length; x++) {
+ var currCol = this._overallColumnArr[x];
+ var currVisX = colToXPosMap[currCol].visX;
+ if (currVisX != null) {
+ nextVisX = currVisX;
+ break;
+ }
+ }
+
+ // If there comes no visible column any more, then show the column
+ // at the end
+ if (nextVisX == null) {
+ nextVisX = this._visibleColumnArr.length;
+ }
+
+ // Add the column to the visible columns
+ this._visibleColumnArr.splice(nextVisX, 0, col);
+ } else {
+ var visX = this.getVisibleX(col);
+ this._visibleColumnArr.splice(visX, 1);
+ }
+
+ // Invalidate the _colToXPosMap
+ this._colToXPosMap = null;
+
+ // Inform the listeners
+ if (! this._internalChange) {
+ if (this.hasEventListeners("visibilityChangedPre")) {
+ var data = { col:col, visible:visible }
+ this.dispatchEvent(new qx.event.type.DataEvent("visibilityChangedPre", data), true);
+ }
+ if (this.hasEventListeners("visibilityChanged")) {
+ var data = { col:col, visible:visible }
+ this.dispatchEvent(new qx.event.type.DataEvent("visibilityChanged", data), true);
+ }
+ }
+
+ //this.debug("setColumnVisible col:"+col+",visible:"+visible+",this._overallColumnArr:"+this._overallColumnArr+",this._visibleColumnArr:"+this._visibleColumnArr);
+ }
+}
+
+
+/**
+ * Moves a column.
+ *
+ * @param fromOverXPos {int} the overall x postion of the column to move.
+ * @param toOverXPos {int} the overall x postion of where the column should be
+ * moved to.
+ */
+qx.Proto.moveColumn = function(fromOverXPos, toOverXPos) {
+ this._internalChange = true;
+
+ var col = this._overallColumnArr[fromOverXPos];
+ var visible = this.isColumnVisible(col);
+
+ if (visible) {
+ this.setColumnVisible(col, false);
+ }
+
+ this._overallColumnArr.splice(fromOverXPos, 1);
+ this._overallColumnArr.splice(toOverXPos, 0, col);
+
+ // Invalidate the _colToXPosMap
+ this._colToXPosMap = null;
+
+ if (visible) {
+ this.setColumnVisible(col, true);
+ }
+
+ this._internalChange = false;
+
+ // Inform the listeners
+ if (this.hasEventListeners("orderChanged")) {
+ var data = { col:col, fromOverXPos:fromOverXPos, toOverXPos:toOverXPos }
+ this.dispatchEvent(new qx.event.type.DataEvent("orderChanged", data), true);
+ }
+}
+
+
+/** {int} the default width of a column in pixels. */
+qx.Class.DEFAULT_WIDTH = 100;
+
+/** {DefaultDataCellRenderer} the default header cell renderer. */
+qx.Class.DEFAULT_HEADER_RENDERER = new qx.ui.table.DefaultHeaderCellRenderer;
+
+/** {DefaultDataCellRenderer} the default data cell renderer. */
+qx.Class.DEFAULT_DATA_RENDERER = new qx.ui.table.DefaultDataCellRenderer;
+
+/** {TextFieldCellEditorFactory} the default editor factory. */
+qx.Class.DEFAULT_EDITOR_FACTORY = new qx.ui.table.TextFieldCellEditorFactory;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableModel.js
new file mode 100644
index 0000000000..6bf4a55291
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TableModel.js
@@ -0,0 +1,243 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * The data model of a table.
+ *
+ * @event dataChanged {qx.event.type.DataEvent} Fired when the table data changed
+ * (the stuff shown in the table body). The data property of the event
+ * may be null or a map having the following attributes:
+ * <ul>
+ * <li>firstRow: The index of the first row that has changed.</li>
+ * <li>lastRow: The index of the last row that has changed.</li>
+ * <li>firstColumn: The model index of the first column that has changed.</li>
+ * <li>lastColumn: The model index of the last column that has changed.</li>
+ * </ul>
+ * @event metaDataChanged {qx.event.type.Event} Fired when the meta data changed
+ * (the stuff shown in the table header).
+ */
+qx.OO.defineClass("qx.ui.table.TableModel", qx.core.Target,
+function() {
+ qx.core.Target.call(this);
+});
+
+
+/**
+ * Returns the number of rows in the model.
+ *
+ * @return {int} the number of rows.
+ */
+qx.Proto.getRowCount = function() {
+ throw new Error("getRowCount is abstract");
+}
+
+
+/**
+ * <p>Returns the data of one row. This function may be overriden by models which hold
+ * all data of a row in one object. By using this function, clients have a way of
+ * quickly retrieving the entire row data.</p>
+ *
+ * <p><b>Important:</b>Models which do not have their row data accessible in one object
+ * may return null.</p>
+ *
+ * @param rowIndex {int} the model index of the row.
+ * @return {Object} the row data as an object or null if the model does not support row data
+ * objects. The details on the object returned are determined by the model
+ * implementation only.
+ */
+qx.Proto.getRowData = function(rowIndex) {
+ return null;
+}
+
+
+/**
+ * Returns the number of columns in the model.
+ *
+ * @return {int} the number of columns.
+ */
+qx.Proto.getColumnCount = function() {
+ throw new Error("getColumnCount is abstract");
+}
+
+
+/**
+ * Returns the ID of column. The ID may be used to identify columns
+ * independent from their index in the model. E.g. for being aware of added
+ * columns when saving the width of a column.
+ *
+ * @param columnIndex {int} the index of the column.
+ * @return {string} the ID of the column.
+ */
+qx.Proto.getColumnId = function(columnIndex) {
+ throw new Error("getColumnId is abstract");
+}
+
+
+/**
+ * Returns the index of a column.
+ *
+ * @param columnId {string} the ID of the column.
+ * @return {int} the index of the column.
+ */
+qx.Proto.getColumnIndexById = function(columnId) {
+ throw new Error("getColumnIndexById is abstract");
+}
+
+
+/**
+ * Returns the name of a column. This name will be shown to the user in the
+ * table header.
+ *
+ * @param columnIndex {int} the index of the column.
+ * @return {string} the name of the column.
+ */
+qx.Proto.getColumnName = function(columnIndex) {
+ throw new Error("getColumnName is abstract");
+}
+
+
+/**
+ * Returns whether a column is editable.
+ *
+ * @param columnIndex {int} the column to check.
+ * @return {boolean} whether the column is editable.
+ */
+qx.Proto.isColumnEditable = function(columnIndex) {
+ return false;
+}
+
+
+/**
+ * Returns whether a column is sortable.
+ *
+ * @param columnIndex {int} the column to check.
+ * @return {boolean} whether the column is sortable.
+ */
+qx.Proto.isColumnSortable = function(columnIndex) {
+ return false;
+}
+
+
+/**
+ * Sorts the model by a column.
+ *
+ * @param columnIndex {int} the column to sort by.
+ * @param ascending {boolean} whether to sort ascending.
+ */
+qx.Proto.sortByColumn = function(columnIndex, ascending) {
+}
+
+
+/**
+ * Returns the column index the model is sorted by. If the model is not sorted
+ * -1 is returned.
+ *
+ * @return {int} the column index the model is sorted by.
+ */
+qx.Proto.getSortColumnIndex = function() {
+ return -1;
+}
+
+
+/**
+ * Returns whether the model is sorted ascending.
+ *
+ * @return {boolean} whether the model is sorted ascending.
+ */
+qx.Proto.isSortAscending = function() {
+ return true;
+}
+
+
+/**
+ * Prefetches some rows. This is a hint to the model that the specified rows
+ * will be read soon.
+ *
+ * @param firstRowIndex {int} the index of first row.
+ * @param lastRowIndex {int} the index of last row.
+ */
+qx.Proto.prefetchRows = function(firstRowIndex, lastRowIndex) {
+}
+
+
+/**
+ * Returns a cell value by column index.
+ *
+ * @param columnIndex {int} the index of the column.
+ * @param rowIndex {int} the index of the row.
+ * @return {var} The value of the cell.
+ * @see #getValueById{}
+ */
+qx.Proto.getValue = function(columnIndex, rowIndex) {
+ throw new Error("getValue is abstract");
+}
+
+
+/**
+ * Returns a cell value by column ID.
+ * <p>
+ * Whenever you have the choice, use {@link #getValue()} instead,
+ * because this should be faster.
+ *
+ * @param columnId {string} the ID of the column.
+ * @param rowIndex {int} the index of the row.
+ * @return {var} the value of the cell.
+ */
+qx.Proto.getValueById = function(columnId, rowIndex) {
+ return this.getValue(this.getColumnIndexById(columnId), rowIndex);
+}
+
+
+/**
+ * Sets a cell value by column index.
+ *
+ * @param columnIndex {int} The index of the column.
+ * @param rowIndex {int} the index of the row.
+ * @param value {var} The new value.
+ * @see #setValueById{}
+ */
+qx.Proto.setValue = function(columnIndex, rowIndex, value) {
+ throw new Error("setValue is abstract");
+}
+
+
+/**
+ * Sets a cell value by column ID.
+ * <p>
+ * Whenever you have the choice, use {@link #setValue()} instead,
+ * because this should be faster.
+ *
+ * @param columnId {string} The ID of the column.
+ * @param rowIndex {int} The index of the row.
+ * @param value {var} The new value.
+ */
+qx.Proto.setValueById = function(columnId, rowIndex, value) {
+ return this.setValue(this.getColumnIndexById(columnId), rowIndex, value);
+}
+
+
+/** {string} The type of the event fired when the data changed. */
+qx.Class.EVENT_TYPE_DATA_CHANGED = "dataChanged";
+
+/** {string} The type of the event fired when the meta data changed. */
+qx.Class.EVENT_TYPE_META_DATA_CHANGED = "metaDataChanged";
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePane.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePane.js
new file mode 100644
index 0000000000..41db2ab274
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePane.js
@@ -0,0 +1,486 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * The table pane that shows a certain section from a table. This class handles
+ * the display of the data part of a table and is therefore the base for virtual
+ * scrolling.
+ *
+ * @param paneScroller {TablePaneScroller} the TablePaneScroller the header belongs to.
+ */
+qx.OO.defineClass("qx.ui.table.TablePane", qx.ui.basic.Terminator,
+function(paneScroller) {
+ qx.ui.basic.Terminator.call(this);
+
+ this._paneScroller = paneScroller;
+
+ this.debug("USE_ARRAY_JOIN:" + qx.ui.table.TablePane.USE_ARRAY_JOIN + ", USE_TABLE:" + qx.ui.table.TablePane.USE_TABLE);
+
+ this._lastColCount = 0;
+ this._lastRowCount = 0;
+});
+
+/** The index of the first row to show. */
+qx.OO.addProperty({ name:"firstVisibleRow", type:"number", defaultValue:0 });
+
+/** The number of rows to show. */
+qx.OO.addProperty({ name:"visibleRowCount", type:"number", defaultValue:0 });
+
+
+// property modifier
+qx.Proto._modifyFirstVisibleRow = function(propValue, propOldValue, propData) {
+ this._updateContent();
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyVisibleRowCount = function(propValue, propOldValue, propData) {
+ this._updateContent();
+ return true;
+}
+
+
+// overridden
+qx.Proto._afterAppear = function() {
+ qx.ui.basic.Terminator.prototype._afterAppear.call(this);
+
+ if (this._updateWantedWhileInvisible) {
+ // We are visible now and an update was wanted while we were invisible
+ // -> Do the update now
+ this._updateContent();
+ this._updateWantedWhileInvisible = false;
+ }
+};
+
+
+/**
+ * Returns the TablePaneScroller this pane belongs to.
+ *
+ * @return {TablePaneScroller} the TablePaneScroller.
+ */
+qx.Proto.getPaneScroller = function() {
+ return this._paneScroller;
+};
+
+
+/**
+ * Returns the table this pane belongs to.
+ *
+ * @return {Table} the table.
+ */
+qx.Proto.getTable = function() {
+ return this._paneScroller.getTable();
+};
+
+
+/**
+ * Sets the currently focused cell.
+ *
+ * @param col {int} the model index of the focused cell's column.
+ * @param row {int} the model index of the focused cell's row.
+ * @param massUpdate {boolean ? false} Whether other updates are planned as well.
+ * If true, no repaint will be done.
+ */
+qx.Proto.setFocusedCell = function(col, row, massUpdate) {
+ if (col != this._focusedCol || row != this._focusedRow) {
+ var oldCol = this._focusedCol;
+ var oldRow = this._focusedRow;
+ this._focusedCol = col;
+ this._focusedRow = row;
+
+ // Update the focused row background
+ if (row != oldRow && !massUpdate) {
+ // NOTE: Only the old and the new row need update
+ this._updateContent(false, oldRow, true);
+ this._updateContent(false, row, true);
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the selection has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onSelectionChanged = function(evt) {
+ this._updateContent(false, null, true);
+}
+
+
+/**
+ * Event handler. Called when the table gets or looses the focus.
+ */
+qx.Proto._onFocusChanged = function(evt) {
+ this._updateContent(false, null, true);
+};
+
+
+/**
+ * Event handler. Called when the width of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColWidthChanged = function(evt) {
+ this._updateContent(true);
+}
+
+
+/**
+ * Event handler. Called the column order has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColOrderChanged = function(evt) {
+ this._updateContent(true);
+}
+
+
+/**
+ * Event handler. Called when the pane model has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onPaneModelChanged = function(evt) {
+ this._updateContent(true);
+}
+
+
+/**
+ * Event handler. Called when the table model data has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelDataChanged = function(evt) {
+ var data = evt.getData ? evt.getData() : null;
+
+ var firstRow = this.getFirstVisibleRow();
+ var rowCount = this.getVisibleRowCount();
+ if (data == null || data.lastRow == -1
+ || data.lastRow >= firstRow && data.firstRow < firstRow + rowCount)
+ {
+ // The change intersects this pane
+ this._updateContent();
+ }
+}
+
+
+/**
+ * Event handler. Called when the table model meta data has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelMetaDataChanged = function(evt) {
+ this._updateContent();
+}
+
+
+/**
+ * Updates the content of the pane.
+ *
+ * @param completeUpdate {boolean ? false} if true a complete update is performed.
+ * On a complete update all cell widgets are recreated.
+ * @param onlyRow {int ? null} if set only the specified row will be updated.
+ * @param onlySelectionOrFocusChanged {boolean ? false} if true, cell values won't
+ * be updated. Only the row background will.
+ */
+qx.Proto._updateContent = function(completeUpdate, onlyRow,
+ onlySelectionOrFocusChanged)
+{
+ if (! this.isSeeable()) {
+ this._updateWantedWhileInvisible = true;
+ return;
+ }
+
+ if (qx.ui.table.TablePane.USE_ARRAY_JOIN) {
+ this._updateContent_array_join(completeUpdate, onlyRow, onlySelectionOrFocusChanged);
+ } else {
+ this._updateContent_orig(completeUpdate, onlyRow, onlySelectionOrFocusChanged);
+ }
+}
+
+
+qx.Proto._updateContent_array_join = function(completeUpdate, onlyRow,
+ onlySelectionOrFocusChanged)
+{
+ var TablePane = qx.ui.table.TablePane;
+
+ var table = this.getTable();
+
+ var selectionModel = table.getSelectionModel();
+ var tableModel = table.getTableModel();
+ var columnModel = table.getTableColumnModel();
+ var paneModel = this.getPaneScroller().getTablePaneModel();
+ var rowRenderer = table.getDataRowRenderer();
+
+ var colCount = paneModel.getColumnCount();
+ var rowHeight = table.getRowHeight();
+
+ var firstRow = this.getFirstVisibleRow();
+ var rowCount = this.getVisibleRowCount();
+ var modelRowCount = tableModel.getRowCount();
+ if (firstRow + rowCount > modelRowCount) {
+ rowCount = Math.max(0, modelRowCount - firstRow);
+ }
+
+ var cellInfo = { table:table };
+ cellInfo.styleHeight = rowHeight;
+
+ var htmlArr = [];
+ var rowWidth = paneModel.getTotalWidth();
+
+ if (TablePane.USE_TABLE) {
+ htmlArr.push('<table cellspacing\="0" cellpadding\="0" style\="table-layout:fixed;font-family:\'Segoe UI\', Corbel, Calibri, Tahoma, \'Lucida Sans Unicode\', sans-serif;font-size:11px;width:');
+ htmlArr.push(rowWidth);
+ htmlArr.push('px"><colgroup>');
+
+ for (var x = 0; x < colCount; x++) {
+ var col = paneModel.getColumnAtX(x);
+
+ htmlArr.push();
+ htmlArr.push(columnModel.getColumnWidth(col));
+ htmlArr.push('"/>');
+ }
+
+ htmlArr.push('</colgroup><tbody>');
+ }
+
+ tableModel.prefetchRows(firstRow, firstRow + rowCount - 1);
+ for (var y = 0; y < rowCount; y++) {
+ var row = firstRow + y;
+
+ cellInfo.row = row;
+ cellInfo.selected = selectionModel.isSelectedIndex(row);
+ cellInfo.focusedRow = (this._focusedRow == row);
+ cellInfo.rowData = tableModel.getRowData(row);
+
+ // Update this row
+ if (TablePane.USE_TABLE) {
+ htmlArr.push('<tr style\="height:');
+ htmlArr.push(rowHeight);
+ } else {
+ htmlArr.push('<div style\="position:absolute;font-family:\'Segoe UI\', Corbel, Calibri, Tahoma, \'Lucida Sans Unicode\', sans-serif;font-size:11px;left:0px;top:');
+ htmlArr.push(y * rowHeight);
+ htmlArr.push('px;width:');
+ htmlArr.push(rowWidth);
+ htmlArr.push('px;height:');
+ htmlArr.push(rowHeight);
+ htmlArr.push('px;background-color:');
+ }
+
+ rowRenderer._createRowStyle_array_join(cellInfo, htmlArr);
+
+ htmlArr.push('">');
+
+ var left = 0;
+ for (var x = 0; x < colCount; x++) {
+ var col = paneModel.getColumnAtX(x);
+ cellInfo.xPos = x;
+ cellInfo.col = col;
+ cellInfo.editable = tableModel.isColumnEditable(col);
+ cellInfo.focusedCol = (this._focusedCol == col);
+ cellInfo.value = tableModel.getValue(col, row);
+ var cellWidth = columnModel.getColumnWidth(col);
+
+ cellInfo.styleLeft = left;
+ cellInfo.styleWidth = cellWidth;
+
+ var cellRenderer = columnModel.getDataCellRenderer(col);
+ cellRenderer.createDataCellHtml_array_join(cellInfo, htmlArr);
+
+ left += cellWidth;
+ }
+
+ if (TablePane.USE_TABLE) {
+ htmlArr.push('</tr>');
+ } else {
+ htmlArr.push('</div>');
+ }
+ }
+
+ if (TablePane.USE_TABLE) {
+ htmlArr.push('</tbody></table>');
+ }
+
+ var elem = this.getElement();
+ // this.debug(">>>" + htmlArr.join("") + "<<<")
+ elem.innerHTML = htmlArr.join("");
+
+ this.setHeight(rowCount * rowHeight);
+
+ this._lastColCount = colCount;
+ this._lastRowCount = rowCount;
+}
+
+
+qx.Proto._updateContent_orig = function(completeUpdate, onlyRow,
+ onlySelectionOrFocusChanged)
+{
+ var TablePane = qx.ui.table.TablePane;
+
+ var table = this.getTable();
+
+ var alwaysUpdateCells = table.getAlwaysUpdateCells();
+
+ var selectionModel = table.getSelectionModel();
+ var tableModel = table.getTableModel();
+ var columnModel = table.getTableColumnModel();
+ var paneModel = this.getPaneScroller().getTablePaneModel();
+ var rowRenderer = table.getDataRowRenderer();
+
+ var colCount = paneModel.getColumnCount();
+ var rowHeight = table.getRowHeight();
+
+ var firstRow = this.getFirstVisibleRow();
+ var rowCount = this.getVisibleRowCount();
+ var modelRowCount = tableModel.getRowCount();
+ if (firstRow + rowCount > modelRowCount) {
+ rowCount = Math.max(0, modelRowCount - firstRow);
+ }
+
+ // Remove the rows that are not needed any more
+ if (completeUpdate || this._lastRowCount > rowCount) {
+ var firstRowToRemove = completeUpdate ? 0 : rowCount;
+ this._cleanUpRows(firstRowToRemove);
+ }
+
+ if (TablePane.USE_TABLE) {
+ throw new Error("Combination of USE_TABLE==true and USE_ARRAY_JOIN==false is not yet implemented");
+ }
+
+ var elem = this.getElement();
+ var childNodes = elem.childNodes;
+ var cellInfo = { table:table };
+ tableModel.prefetchRows(firstRow, firstRow + rowCount - 1);
+ for (var y = 0; y < rowCount; y++) {
+ var row = firstRow + y;
+ if ((onlyRow != null) && (row != onlyRow)) {
+ continue;
+ }
+
+ cellInfo.row = row;
+ cellInfo.selected = selectionModel.isSelectedIndex(row);
+ cellInfo.focusedRow = (this._focusedRow == row);
+ cellInfo.rowData = tableModel.getRowData(row);
+
+ // Update this row
+ var rowElem;
+ var recyleRowElem;
+ if (y < childNodes.length) {
+ rowElem = childNodes[y];
+ recyleRowElem = true
+ } else {
+ var rowElem = document.createElement("div");
+
+ //rowElem.style.position = "relative";
+ rowElem.style.position = "absolute";
+ rowElem.style.left = "0px";
+ rowElem.style.top = (y * rowHeight) + "px";
+
+ rowElem.style.height = rowHeight + "px";
+ rowElem.style.fontFamily = TablePane.CONTENT_ROW_FONT_FAMILY;
+ rowElem.style.fontSize = TablePane.CONTENT_ROW_FONT_SIZE;
+ elem.appendChild(rowElem);
+ recyleRowElem = false;
+ }
+
+ rowRenderer.updateDataRowElement(cellInfo, rowElem);
+
+ if (alwaysUpdateCells || !recyleRowElem || !onlySelectionOrFocusChanged) {
+ var html = "";
+ var left = 0;
+ for (var x = 0; x < colCount; x++) {
+ var col = paneModel.getColumnAtX(x);
+ cellInfo.xPos = x;
+ cellInfo.col = col;
+ cellInfo.editable = tableModel.isColumnEditable(col);
+ cellInfo.focusedCol = (this._focusedCol == col);
+ cellInfo.value = tableModel.getValue(col, row);
+ var width = columnModel.getColumnWidth(col);
+ cellInfo.style = 'position:absolute;left:' + left
+ + 'px;top:0px;width:' + width
+ + 'px; height:' + rowHeight + "px";
+
+ var cellRenderer = columnModel.getDataCellRenderer(col);
+ if (recyleRowElem) {
+ var cellElem = rowElem.childNodes[x];
+ cellRenderer.updateDataCellElement(cellInfo, cellElem);
+ } else {
+ html += cellRenderer.createDataCellHtml(cellInfo);
+ }
+
+ left += width;
+ }
+ if (! recyleRowElem) {
+ rowElem.style.width = left + "px";
+ rowElem.innerHTML = html;
+ }
+ }
+ }
+
+ this.setHeight(rowCount * rowHeight);
+
+ this._lastColCount = colCount;
+ this._lastRowCount = rowCount;
+}
+
+
+/**
+ * Cleans up the row widgets.
+ *
+ * @param firstRowToRemove {int} the visible index of the first row to clean up.
+ * All following rows will be cleaned up, too.
+ */
+qx.Proto._cleanUpRows = function(firstRowToRemove) {
+ var elem = this.getElement();
+ if (elem) {
+ var childNodes = this.getElement().childNodes;
+ var paneModel = this.getPaneScroller().getTablePaneModel();
+ var colCount = paneModel.getColumnCount();
+ for (var y = childNodes.length - 1; y >= firstRowToRemove; y--) {
+ elem.removeChild(childNodes[y]);
+ }
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ this._cleanUpRows(0);
+
+ return qx.ui.basic.Terminator.prototype.dispose.call(this);
+}
+
+
+qx.Class.USE_ARRAY_JOIN = false;
+qx.Class.USE_TABLE = false;
+
+
+qx.Class.CONTENT_ROW_FONT_FAMILY = '"Segoe UI", Corbel, Calibri, Tahoma, "Lucida Sans Unicode", sans-serif';
+qx.Class.CONTENT_ROW_FONT_SIZE = "11px";
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneHeader.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneHeader.js
new file mode 100644
index 0000000000..657950293f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneHeader.js
@@ -0,0 +1,276 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * Shows the header of a table.
+ *
+ * @param paneScroller {TablePaneScroller} the TablePaneScroller the header belongs to.
+ */
+qx.OO.defineClass("qx.ui.table.TablePaneHeader", qx.ui.layout.HorizontalBoxLayout,
+function(paneScroller) {
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ this._paneScroller = paneScroller;
+});
+
+
+/**
+ * Returns the TablePaneScroller this header belongs to.
+ *
+ * @return {TablePaneScroller} the TablePaneScroller.
+ */
+qx.Proto.getPaneScroller = function() {
+ return this._paneScroller;
+};
+
+
+/**
+ * Returns the table this header belongs to.
+ *
+ * @return {Table} the table.
+ */
+qx.Proto.getTable = function() {
+ return this._paneScroller.getTable();
+};
+
+
+/**
+ * Event handler. Called when the width of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColWidthChanged = function(evt) {
+ var data = evt.getData();
+ this.setColumnWidth(data.col, data.newWidth);
+}
+
+
+/**
+ * Event handler. Called the column order has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColOrderChanged = function(evt) {
+ this._updateContent(true);
+}
+
+
+/**
+ * Event handler. Called when the pane model has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onPaneModelChanged = function(evt) {
+ this._updateContent(true);
+}
+
+
+/**
+ * Event handler. Called when the table model meta data has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelMetaDataChanged = function(evt) {
+ this._updateContent();
+}
+
+
+/**
+ * Sets the column width. This overrides the width from the column model.
+ *
+ * @param col {int} the column to change the width for.
+ * @param width {int} the new width.
+ */
+qx.Proto.setColumnWidth = function(col, width) {
+ var x = this.getPaneScroller().getTablePaneModel().getX(col);
+ var children = this.getChildren();
+ if (children[x] != null) {
+ children[x].setWidth(width);
+ }
+}
+
+
+/**
+ * Sets the column the mouse is currently over.
+ *
+ * @param col {int} the model index of the column the mouse is currently over or
+ * null if the mouse is over no column.
+ */
+qx.Proto.setMouseOverColumn = function(col) {
+ if (col != this._lastMouseOverColumn) {
+ var paneModel = this.getPaneScroller().getTablePaneModel();
+ var children = this.getChildren();
+
+ if (this._lastMouseOverColumn != null) {
+ var widget = children[paneModel.getX(this._lastMouseOverColumn)];
+ if (widget != null) {
+ widget.removeState("mouseover");
+ }
+ }
+ if (col != null) {
+ children[paneModel.getX(col)].addState("mouseover");
+ }
+
+ this._lastMouseOverColumn = col;
+ }
+}
+
+
+/**
+ * Shows the feedback shown while a column is moved by the user.
+ *
+ * @param col {int} the model index of the column to show the move feedback for.
+ * @param x {int} the x position the left side of the feeback should have
+ * (in pixels, relative to the left side of the header).
+ */
+qx.Proto.showColumnMoveFeedback = function(col, x) {
+ var elem = this.getElement();
+ if (this._moveFeedback == null) {
+ var xPos = this.getPaneScroller().getTablePaneModel().getX(col);
+ var cellWidget = this.getChildren()[xPos];
+
+ // Create the feedback
+ // Workaround: Since a cloned widget throws an exception when it is
+ // added to another component we have to create a new one
+ // using the renderer
+ //this._moveFeedback = cellWidget.clone();
+ var tableModel = this.getTable().getTableModel();
+ var columnModel = this.getTable().getTableColumnModel();
+ var cellInfo = { xPos:xPos, col:col, name:tableModel.getColumnName(col) }
+ var cellRenderer = columnModel.getHeaderCellRenderer(col);
+ this._moveFeedback = cellRenderer.createHeaderCell(cellInfo);
+
+ // Configure the feedback
+ with (this._moveFeedback) {
+ setWidth(cellWidget.getBoxWidth());
+ setHeight(cellWidget.getBoxHeight());
+ setZIndex(1000000);
+ setOpacity(0.8);
+ setTop(qx.dom.Location.getClientBoxTop(elem));
+ }
+ this.getTopLevelWidget().add(this._moveFeedback);
+ }
+
+ this._moveFeedback.setLeft(qx.dom.Location.getClientBoxLeft(elem) + x);
+}
+
+
+/**
+ * Hides the feedback shown while a column is moved by the user.
+ */
+qx.Proto.hideColumnMoveFeedback = function() {
+ if (this._moveFeedback != null) {
+ this.getTopLevelWidget().remove(this._moveFeedback);
+ this._moveFeedback.dispose();
+ this._moveFeedback = null;
+ }
+}
+
+
+/**
+ * Returns whether the column move feedback is currently shown.
+ */
+qx.Proto.isShowingColumnMoveFeedback = function() {
+ return this._moveFeedback != null;
+}
+
+
+/**
+ * Updates the content of the header.
+ *
+ * @param completeUpdate {boolean} if true a complete update is performed. On a
+ * complete update all header widgets are recreated.
+ */
+qx.Proto._updateContent = function(completeUpdate) {
+ var tableModel = this.getTable().getTableModel();
+ var columnModel = this.getTable().getTableColumnModel();
+ var paneModel = this.getPaneScroller().getTablePaneModel();
+
+ var children = this.getChildren();
+ var oldColCount = children.length;
+ var colCount = paneModel.getColumnCount();
+
+ var sortedColum = tableModel.getSortColumnIndex();
+
+ // Remove all widgets on the complete update
+ if (completeUpdate) {
+ this._cleanUpCells();
+ }
+
+ // Update the header
+ var cellInfo = {};
+ cellInfo.sortedAscending = tableModel.isSortAscending();
+ for (var x = 0; x < colCount; x++) {
+ var col = paneModel.getColumnAtX(x);
+
+ var colWidth = columnModel.getColumnWidth(col);
+
+ // TODO: Get real cell renderer
+ var cellRenderer = columnModel.getHeaderCellRenderer(col);
+
+ cellInfo.xPos = x;
+ cellInfo.col = col;
+ cellInfo.name = tableModel.getColumnName(col);
+ cellInfo.editable = tableModel.isColumnEditable(col);
+ cellInfo.sorted = (col == sortedColum);
+
+ // Get the cached widget
+ var cachedWidget = children[x];
+
+ // Create or update the widget
+ if (cachedWidget == null) {
+ // We have no cached widget -> create it
+ cachedWidget = cellRenderer.createHeaderCell(cellInfo);
+ cachedWidget.set({ width:colWidth, height:"100%" });
+
+ this.add(cachedWidget);
+ } else {
+ // This widget already created before -> recycle it
+ cellRenderer.updateHeaderCell(cellInfo, cachedWidget);
+ }
+ }
+}
+
+
+/**
+ * Cleans up all header cells.
+ */
+qx.Proto._cleanUpCells = function() {
+ var children = this.getChildren();
+ for (var x = children.length - 1; x >= 0; x--) {
+ var cellWidget = children[x];
+ //this.debug("disposed:" + cellWidget.getDisposed() + ",has parent: " + (cellWidget.getParent() != null) + ",x:"+x);
+ this.remove(cellWidget);
+ cellWidget.dispose();
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneModel.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneModel.js
new file mode 100644
index 0000000000..d53da59251
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneModel.js
@@ -0,0 +1,179 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * The model of a table pane. This model works as proxy to a
+ * {@link TableColumnModel} and manages the visual order of the columns shown in
+ * a {@link TablePane}.
+ *
+ * @param tableColumnModel {TableColumnModel} The TableColumnModel of which this
+ * model is the proxy.
+ *
+ * @event modelChanged {qx.event.type.Event} Fired when the model changed.
+ */
+qx.OO.defineClass("qx.ui.table.TablePaneModel", qx.core.Target,
+function(tableColumnModel) {
+ qx.core.Target.call(this);
+
+ tableColumnModel.addEventListener("visibilityChangedPre", this._onColVisibilityChanged, this);
+
+ this._tableColumnModel = tableColumnModel;
+});
+
+
+/** The visible x position of the first column this model should contain. */
+qx.OO.addProperty({ name : "firstColumnX", type : "number", defaultValue : 0 });
+
+/**
+ * The maximum number of columns this model should contain. If -1 this model will
+ * contain all remaining columns.
+ */
+qx.OO.addProperty({ name : "maxColumnCount", type : "number", defaultValue : -1 });
+
+
+// property modifier
+qx.Proto._modifyFirstColumnX = function(propValue, propOldValue, propData) {
+ this._columnCount = null;
+ this.createDispatchEvent(qx.ui.table.TablePaneModel.EVENT_TYPE_MODEL_CHANGED);
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyMaxColumnCount = function(propValue, propOldValue, propData) {
+ this._columnCount = null;
+ this.createDispatchEvent(qx.ui.table.TablePaneModel.EVENT_TYPE_MODEL_CHANGED);
+ return true;
+}
+
+
+/**
+ * Event handler. Called when the visibility of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColVisibilityChanged = function(evt) {
+ this._columnCount = null;
+
+ // TODO: Check whether the column is in this model (This is a little bit
+ // tricky, because the column could _have been_ in this model, but is
+ // not in it after the change)
+ this.createDispatchEvent(qx.ui.table.TablePaneModel.EVENT_TYPE_MODEL_CHANGED);
+}
+
+
+/**
+ * Returns the number of columns in this model.
+ *
+ * @return {int} the number of columns in this model.
+ */
+qx.Proto.getColumnCount = function() {
+ if (this._columnCount == null) {
+ var firstX = this.getFirstColumnX();
+ var maxColCount = this.getMaxColumnCount();
+ var totalColCount = this._tableColumnModel.getVisibleColumnCount();
+
+ if (maxColCount == -1 || (firstX + maxColCount) > totalColCount) {
+ this._columnCount = totalColCount - firstX;
+ } else {
+ this._columnCount = maxColCount;
+ }
+ }
+ return this._columnCount;
+}
+
+
+/**
+ * Returns the model index of the column at the position <code>xPos</code>.
+ *
+ * @param xPos {int} the x postion in the table pane of the column.
+ * @return {int} the model index of the column.
+ */
+qx.Proto.getColumnAtX = function(xPos) {
+ var firstX = this.getFirstColumnX();
+ return this._tableColumnModel.getVisibleColumnAtX(firstX + xPos);
+}
+
+
+/**
+ * Returns the x position of the column <code>col</code>.
+ *
+ * @param col {int} the model index of the column.
+ * @return {int} the x postion in the table pane of the column.
+ */
+qx.Proto.getX = function(col) {
+ var firstX = this.getFirstColumnX();
+ var maxColCount = this.getMaxColumnCount();
+
+ var x = this._tableColumnModel.getVisibleX(col) - firstX;
+ if (x >= 0 && (maxColCount == -1 || x < maxColCount)) {
+ return x;
+ } else {
+ return -1;
+ }
+}
+
+
+/**
+ * Gets the position of the left side of a column (in pixels, relative to the
+ * left side of the table pane).
+ * <p>
+ * This value corresponds to the sum of the widths of all columns left of the
+ * column.
+ *
+ * @param col {int} the model index of the column.
+ * @return the position of the left side of the column.
+ */
+qx.Proto.getColumnLeft = function(col) {
+ var left = 0;
+ var colCount = this.getColumnCount();
+ for (var x = 0; x < colCount; x++) {
+ var currCol = this.getColumnAtX(x);
+ if (currCol == col) {
+ return left;
+ }
+
+ left += this._tableColumnModel.getColumnWidth(currCol);
+ }
+ return -1;
+}
+
+
+/**
+ * Returns the total width of all columns in the model.
+ *
+ * @return {int} the total width of all columns in the model.
+ */
+qx.Proto.getTotalWidth = function() {
+ var totalWidth = 0;
+ var colCount = this.getColumnCount();
+ for (var x = 0; x < colCount; x++) {
+ var col = this.getColumnAtX(x);
+ totalWidth += this._tableColumnModel.getColumnWidth(col);
+ }
+ return totalWidth;
+}
+
+
+/** {string} The type of the event fired when the model changed. */
+qx.Class.EVENT_TYPE_MODEL_CHANGED = "modelChanged";
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneScroller.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneScroller.js
new file mode 100644
index 0000000000..d6f7773148
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TablePaneScroller.js
@@ -0,0 +1,1331 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * Shows a whole meta column. This includes a {@link TablePaneHeader},
+ * a {@link TablePane} and the needed scroll bars. This class handles the
+ * virtual scrolling and does all the mouse event handling.
+ *
+ * @param table {Table} the table the scroller belongs to.
+ */
+qx.OO.defineClass("qx.ui.table.TablePaneScroller", qx.ui.layout.VerticalBoxLayout,
+function(table) {
+ qx.ui.layout.VerticalBoxLayout.call(this);
+
+ this._table = table;
+
+ // init scrollbars
+ this._verScrollBar = new qx.ui.core.ScrollBar(false);
+ this._horScrollBar = new qx.ui.core.ScrollBar(true);
+
+ var scrollBarWidth = this._verScrollBar.getPreferredBoxWidth();
+
+ this._verScrollBar.setWidth("auto");
+ this._horScrollBar.setHeight("auto");
+ this._horScrollBar.setPaddingRight(scrollBarWidth);
+ //this._verScrollBar.setMergeEvents(true);
+
+ this._horScrollBar.addEventListener("changeValue", this._onScrollX, this);
+ this._verScrollBar.addEventListener("changeValue", this._onScrollY, this);
+
+ // init header
+ this._header = new qx.ui.table.TablePaneHeader(this);
+ this._header.set({ width:"auto", height:"auto" });
+
+ this._headerClipper = new qx.ui.layout.CanvasLayout;
+ with (this._headerClipper) {
+ setDimension("1*", "auto");
+ setOverflow("hidden");
+ add(this._header);
+ }
+
+ this._spacer = new qx.ui.basic.Terminator;
+ this._spacer.setWidth(scrollBarWidth);
+
+ this._top = new qx.ui.layout.HorizontalBoxLayout;
+ with (this._top) {
+ setHeight("auto");
+ add(this._headerClipper, this._spacer);
+ }
+
+ // init pane
+ this._tablePane = new qx.ui.table.TablePane(this);
+ this._tablePane.set({ width:"auto", height:"auto" });
+
+ this._focusIndicator = new qx.ui.layout.HorizontalBoxLayout;
+ this._focusIndicator.setAppearance("table-focus-indicator");
+ this._focusIndicator.hide();
+
+ // Workaround: If the _focusIndicator has no content if always gets a too
+ // high hight in IE.
+ var dummyContent = new qx.ui.basic.Terminator;
+ dummyContent.setWidth(0);
+ this._focusIndicator.add(dummyContent);
+
+ this._paneClipper = new qx.ui.layout.CanvasLayout;
+ with (this._paneClipper) {
+ setWidth("1*");
+ setOverflow("hidden");
+ add(this._tablePane, this._focusIndicator);
+ addEventListener("mousewheel", this._onmousewheel, this);
+ }
+
+ // add all child widgets
+ var scrollerBody = new qx.ui.layout.HorizontalBoxLayout;
+ scrollerBody.setHeight("1*");
+ scrollerBody.add(this._paneClipper, this._verScrollBar);
+
+ this.add(this._top, scrollerBody, this._horScrollBar);
+
+ // init event handlers
+ this.addEventListener("mousemove", this._onmousemove, this);
+ this.addEventListener("mousedown", this._onmousedown, this);
+ this.addEventListener("mouseup", this._onmouseup, this);
+ this.addEventListener("click", this._onclick, this);
+ this.addEventListener("dblclick", this._ondblclick, this);
+ this.addEventListener("mouseout", this._onmouseout, this);
+});
+
+/** Whether to show the horizontal scroll bar */
+qx.OO.addProperty({ name:"horizontalScrollBarVisible", type:"boolean", defaultValue:true });
+
+/** Whether to show the vertical scroll bar */
+qx.OO.addProperty({ name:"verticalScrollBarVisible", type:"boolean", defaultValue:true });
+
+/** The table pane model. */
+qx.OO.addProperty({ name:"tablePaneModel", type:"object", instance:"qx.ui.table.TablePaneModel" });
+
+/** The current position of the the horizontal scroll bar. */
+qx.OO.addProperty({ name:"scrollX", type:"number", allowNull:false, defaultValue:0 });
+
+/** The current position of the the vertical scroll bar. */
+qx.OO.addProperty({ name:"scrollY", type:"number", allowNull:false, defaultValue:0 });
+
+/**
+ * Whether column resize should be live. If false, during resize only a line is
+ * shown and the real resize happens when the user releases the mouse button.
+ */
+qx.OO.addProperty({ name:"liveResize", type:"boolean", defaultValue:false });
+
+/**
+ * Whether the focus should moved when the mouse is moved over a cell. If false
+ * the focus is only moved on mouse clicks.
+ */
+qx.OO.addProperty({ name:"focusCellOnMouseMove", type:"boolean", defaultValue:false });
+
+
+// property modifier
+qx.Proto._modifyHorizontalScrollBarVisible = function(propValue, propOldValue, propData) {
+ // Workaround: We can't use setDisplay, because the scroll bar needs its
+ // correct height in order to check its value. When using
+ // setDisplay(false) the height isn't relayouted any more
+ if (propValue) {
+ this._horScrollBar.setHeight("auto");
+ } else {
+ this._horScrollBar.setHeight(0);
+ }
+ this._horScrollBar.setVisibility(propValue);
+
+ // NOTE: We have to flush the queues before updating the content so the new
+ // layout has been applied and _updateContent is able to work with
+ // correct values.
+ qx.ui.core.Widget.flushGlobalQueues();
+ this._updateContent();
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyVerticalScrollBarVisible = function(propValue, propOldValue, propData) {
+ // Workaround: See _modifyHorizontalScrollBarVisible
+ if (propValue) {
+ this._verScrollBar.setWidth("auto");
+ } else {
+ this._verScrollBar.setWidth(0);
+ }
+ this._verScrollBar.setVisibility(propValue);
+
+ var scrollBarWidth = propValue ? this._verScrollBar.getPreferredBoxWidth() : 0;
+ this._horScrollBar.setPaddingRight(scrollBarWidth);
+ this._spacer.setWidth(scrollBarWidth);
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyTablePaneModel = function(propValue, propOldValue, propData) {
+ if (propOldValue != null) {
+ propOldValue.removeEventListener("modelChanged", this._onPaneModelChanged, this);
+ }
+ propValue.addEventListener("modelChanged", this._onPaneModelChanged, this);
+
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyScrollX = function(propValue, propOldValue, propData) {
+ this._horScrollBar.setValue(propValue);
+ return true;
+}
+
+
+// property modifier
+qx.Proto._modifyScrollY = function(propValue, propOldValue, propData) {
+ this._verScrollBar.setValue(propValue);
+ return true;
+}
+
+
+/**
+ * Returns the table this scroller belongs to.
+ *
+ * @return {Table} the table.
+ */
+qx.Proto.getTable = function() {
+ return this._table;
+};
+
+
+/**
+ * Event handler. Called when the visibility of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColVisibilityChanged = function(evt) {
+ this._updateHorScrollBarMaximum();
+ this._updateFocusIndicator();
+}
+
+
+/**
+ * Event handler. Called when the width of a column has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColWidthChanged = function(evt) {
+ this._header._onColWidthChanged(evt);
+ this._tablePane._onColWidthChanged(evt);
+
+ var data = evt.getData();
+ var paneModel = this.getTablePaneModel();
+ var x = paneModel.getX(data.col);
+ if (x != -1) {
+ // The change was in this scroller
+ this._updateHorScrollBarMaximum();
+ this._updateFocusIndicator();
+ }
+}
+
+
+/**
+ * Event handler. Called when the column order has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onColOrderChanged = function(evt) {
+ this._header._onColOrderChanged(evt);
+ this._tablePane._onColOrderChanged(evt);
+
+ this._updateHorScrollBarMaximum();
+}
+
+
+/**
+ * Event handler. Called when the table model has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelDataChanged = function(evt) {
+ this._tablePane._onTableModelDataChanged(evt);
+
+ var rowCount = this.getTable().getTableModel().getRowCount();
+ if (rowCount != this._lastRowCount) {
+ this._lastRowCount = rowCount;
+
+ this._updateVerScrollBarMaximum();
+ if (this.getFocusedRow() >= rowCount) {
+ if (rowCount == 0) {
+ this.setFocusedCell(null, null);
+ } else {
+ this.setFocusedCell(this.getFocusedColumn(), rowCount - 1);
+ }
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the selection has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onSelectionChanged = function(evt) {
+ this._tablePane._onSelectionChanged(evt);
+};
+
+
+/**
+ * Event handler. Called when the table gets or looses the focus.
+ */
+qx.Proto._onFocusChanged = function(evt) {
+ this._focusIndicator.setState("tableHasFocus", this.getTable().getFocused());
+
+ this._tablePane._onFocusChanged(evt);
+};
+
+
+/**
+ * Event handler. Called when the table model meta data has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTableModelMetaDataChanged = function(evt) {
+ this._header._onTableModelMetaDataChanged(evt);
+ this._tablePane._onTableModelMetaDataChanged(evt);
+};
+
+
+/**
+ * Event handler. Called when the pane model has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onPaneModelChanged = function(evt) {
+ this._header._onPaneModelChanged(evt);
+ this._tablePane._onPaneModelChanged(evt);
+};
+
+
+/**
+ * Updates the maximum of the horizontal scroll bar, so it corresponds to the
+ * total width of the columns in the table pane.
+ */
+qx.Proto._updateHorScrollBarMaximum = function() {
+ this._horScrollBar.setMaximum(this.getTablePaneModel().getTotalWidth());
+}
+
+
+/**
+ * Updates the maximum of the vertical scroll bar, so it corresponds to the
+ * number of rows in the table.
+ */
+qx.Proto._updateVerScrollBarMaximum = function() {
+ var rowCount = this.getTable().getTableModel().getRowCount();
+ var rowHeight = this.getTable().getRowHeight();
+
+ if (this.getTable().getKeepFirstVisibleRowComplete()) {
+ this._verScrollBar.setMaximum((rowCount + 1) * rowHeight);
+ } else {
+ this._verScrollBar.setMaximum(rowCount * rowHeight);
+ }
+}
+
+
+/**
+ * Event handler. Called when the table property "keepFirstVisibleRowComplete"
+ * changed.
+ */
+qx.Proto._onKeepFirstVisibleRowCompleteChanged = function() {
+ this._updateVerScrollBarMaximum();
+ this._updateContent();
+};
+
+
+// overridden
+qx.Proto._changeInnerHeight = function(newValue, oldValue) {
+ // The height has changed -> Update content
+ this._postponedUpdateContent();
+
+ return qx.ui.layout.VerticalBoxLayout.prototype._changeInnerHeight.call(this, newValue, oldValue);
+}
+
+
+// overridden
+qx.Proto._afterAppear = function() {
+ qx.ui.layout.VerticalBoxLayout.prototype._afterAppear.call(this);
+
+ var self = this;
+ this.getElement().onselectstart = qx.util.Return.returnFalse;
+
+ this._updateContent();
+ this._header._updateContent();
+ this._updateHorScrollBarMaximum();
+ this._updateVerScrollBarMaximum();
+}
+
+
+/**
+ * Event handler. Called when the horizontal scroll bar moved.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onScrollX = function(evt) {
+ // Workaround: See _updateContent
+ this._header.setLeft(-evt.getData());
+
+ this._paneClipper.setScrollLeft(evt.getData());
+ this.setScrollX(evt.getData());
+}
+
+
+/**
+ * Event handler. Called when the vertical scroll bar moved.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onScrollY = function(evt) {
+ this._postponedUpdateContent();
+ this.setScrollY(evt.getData());
+}
+
+
+/**
+ * Event handler. Called when the user moved the mouse wheel.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onmousewheel = function(evt) {
+ this._verScrollBar.setValue(this._verScrollBar.getValue()
+ - evt.getWheelDelta() * this.getTable().getRowHeight());
+
+ // Update the focus
+ if (this._lastMousePageX && this.getFocusCellOnMouseMove()) {
+ this._focusCellAtPagePos(this._lastMousePageX, this._lastMousePageY);
+ }
+}
+
+
+/**
+ * Event handler. Called when the user moved the mouse.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onmousemove = function(evt) {
+ var tableModel = this.getTable().getTableModel();
+ var columnModel = this.getTable().getTableColumnModel();
+
+ var useResizeCursor = false;
+ var mouseOverColumn = null;
+
+ var pageX = evt.getPageX();
+ var pageY = evt.getPageY();
+
+ // Workaround: In onmousewheel the event has wrong coordinates for pageX
+ // and pageY. So we remember the last move event.
+ this._lastMousePageX = pageX;
+ this._lastMousePageY = pageY;
+
+ if (this._resizeColumn != null) {
+ // We are currently resizing -> Update the position
+ var minColumnWidth = qx.ui.table.TablePaneScroller.MIN_COLUMN_WIDTH;
+ var newWidth = Math.max(minColumnWidth, this._lastResizeWidth + pageX - this._lastResizeMousePageX);
+
+ if (this.getLiveResize()) {
+ columnModel.setColumnWidth(this._resizeColumn, newWidth);
+ } else {
+ this._header.setColumnWidth(this._resizeColumn, newWidth);
+
+ var paneModel = this.getTablePaneModel();
+ this._showResizeLine(paneModel.getColumnLeft(this._resizeColumn) + newWidth);
+ }
+
+ useResizeCursor = true;
+ this._lastResizeMousePageX += newWidth - this._lastResizeWidth;
+ this._lastResizeWidth = newWidth;
+ } else if (this._moveColumn != null) {
+ // We are moving a column
+
+ // Check whether we moved outside the click tolerance so we can start
+ // showing the column move feedback
+ // (showing the column move feedback prevents the onclick event)
+ var clickTolerance = qx.ui.table.TablePaneScroller.CLICK_TOLERANCE;
+ if (this._header.isShowingColumnMoveFeedback()
+ || pageX > this._lastMoveMousePageX + clickTolerance
+ || pageX < this._lastMoveMousePageX - clickTolerance)
+ {
+ this._lastMoveColPos += pageX - this._lastMoveMousePageX;
+
+ this._header.showColumnMoveFeedback(this._moveColumn, this._lastMoveColPos);
+
+ // Get the responsible scroller
+ var targetScroller = this._table.getTablePaneScrollerAtPageX(pageX);
+ if (this._lastMoveTargetScroller && this._lastMoveTargetScroller != targetScroller) {
+ this._lastMoveTargetScroller.hideColumnMoveFeedback();
+ }
+ if (targetScroller != null) {
+ this._lastMoveTargetX = targetScroller.showColumnMoveFeedback(pageX);
+ } else {
+ this._lastMoveTargetX = null;
+ }
+
+ this._lastMoveTargetScroller = targetScroller;
+ this._lastMoveMousePageX = pageX;
+ }
+ } else {
+ // This is a normal mouse move
+ var row = this._getRowForPagePos(pageX, pageY);
+ if (row == -1) {
+ // The mouse is over the header
+ var resizeCol = this._getResizeColumnForPageX(pageX);
+ if (resizeCol != -1) {
+ // The mouse is over a resize region -> Show the right cursor
+ useResizeCursor = true;
+ } else {
+ var col = this._getColumnForPageX(pageX);
+ if (col != null && tableModel.isColumnSortable(col)) {
+ mouseOverColumn = col;
+ }
+ }
+ } else if (row != null) {
+ // The mouse is over the data -> update the focus
+ if (this.getFocusCellOnMouseMove()) {
+ this._focusCellAtPagePos(pageX, pageY);
+ }
+ }
+ }
+
+ // Workaround: Setting the cursor to the right widget doesn't work
+ //this._header.setCursor(useResizeCursor ? "e-resize" : null);
+ this.getTopLevelWidget().setGlobalCursor(useResizeCursor ? qx.ui.table.TablePaneScroller.CURSOR_RESIZE_HORIZONTAL : null);
+
+ this._header.setMouseOverColumn(mouseOverColumn);
+}
+
+
+/**
+ * Event handler. Called when the user pressed a mouse button.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onmousedown = function(evt) {
+ var tableModel = this.getTable().getTableModel();
+ var columnModel = this.getTable().getTableColumnModel();
+
+ var pageX = evt.getPageX();
+ var pageY = evt.getPageY();
+ var row = this._getRowForPagePos(pageX, pageY);
+ if (row == -1) {
+ // mouse is in header
+ var resizeCol = this._getResizeColumnForPageX(pageX);
+ if (resizeCol != -1) {
+ // The mouse is over a resize region -> Start resizing
+ this._resizeColumn = resizeCol;
+ this._lastResizeMousePageX = pageX;
+ this._lastResizeWidth = columnModel.getColumnWidth(this._resizeColumn);
+ this.setCapture(true);
+ } else {
+ // The mouse is not in a resize region
+ var col = this._getColumnForPageX(pageX);
+ if (col != null) {
+ // Prepare column moving
+ this._moveColumn = col;
+ this._lastMoveMousePageX = pageX;
+ this._lastMoveColPos = this.getTablePaneModel().getColumnLeft(col);
+ this.setCapture(true);
+ }
+ }
+ } else if (row != null) {
+ // The mouse is over the data -> update the focus
+ if (! this.getFocusCellOnMouseMove()) {
+ this._focusCellAtPagePos(pageX, pageY);
+ }
+
+ this.getTable()._getSelectionManager().handleMouseDown(row, evt);
+ }
+}
+
+
+/**
+ * Event handler. Called when the user released a mouse button.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onmouseup = function(evt) {
+ var columnModel = this.getTable().getTableColumnModel();
+ var paneModel = this.getTablePaneModel();
+
+ if (this._resizeColumn != null) {
+ // We are currently resizing -> Finish resizing
+ if (! this.getLiveResize()) {
+ this._hideResizeLine();
+ columnModel.setColumnWidth(this._resizeColumn, this._lastResizeWidth);
+ }
+
+ this._resizeColumn = null;
+ this.setCapture(false);
+
+ this.getTopLevelWidget().setGlobalCursor(null);
+ } else if (this._moveColumn != null) {
+ // We are moving a column -> Drop the column
+ this._header.hideColumnMoveFeedback();
+ if (this._lastMoveTargetScroller) {
+ this._lastMoveTargetScroller.hideColumnMoveFeedback();
+ }
+
+ if (this._lastMoveTargetX != null) {
+ var fromVisXPos = paneModel.getFirstColumnX() + paneModel.getX(this._moveColumn);
+ var toVisXPos = this._lastMoveTargetX;
+ if (toVisXPos != fromVisXPos && toVisXPos != fromVisXPos + 1) {
+ // The column was really moved to another position
+ // (and not moved before or after itself, which is a noop)
+
+ // Translate visible positions to overall positions
+ var fromCol = columnModel.getVisibleColumnAtX(fromVisXPos);
+ var toCol = columnModel.getVisibleColumnAtX(toVisXPos);
+ var fromOverXPos = columnModel.getOverallX(fromCol);
+ var toOverXPos = (toCol != null) ? columnModel.getOverallX(toCol) : columnModel.getOverallColumnCount();
+
+ if (toOverXPos > fromOverXPos) {
+ // Don't count the column itself
+ toOverXPos--;
+ }
+
+ // Move the column
+ columnModel.moveColumn(fromOverXPos, toOverXPos);
+ }
+ }
+
+ this._moveColumn = null;
+ this._lastMoveTargetX = null;
+ this.setCapture(false);
+ } else {
+ // This is a normal mouse up
+ var row = this._getRowForPagePos(evt.getPageX(), evt.getPageY());
+ if (row != -1 && row != null) {
+ this.getTable()._getSelectionManager().handleMouseUp(row, evt);
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the user clicked a mouse button.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onclick = function(evt) {
+ var tableModel = this.getTable().getTableModel();
+
+ var pageX = evt.getPageX();
+ var pageY = evt.getPageY();
+ var row = this._getRowForPagePos(pageX, pageY);
+ if (row == -1) {
+ // mouse is in header
+ var resizeCol = this._getResizeColumnForPageX(pageX);
+ if (resizeCol == -1) {
+ // mouse is not in a resize region
+ var col = this._getColumnForPageX(pageX);
+ if (col != null && tableModel.isColumnSortable(col)) {
+ // Sort that column
+ var sortCol = tableModel.getSortColumnIndex();
+ var ascending = (col != sortCol) ? true : !tableModel.isSortAscending();
+
+ tableModel.sortByColumn(col, ascending);
+ this.getTable().getSelectionModel().clearSelection();
+ }
+ }
+ } else if (row != null) {
+ this.getTable()._getSelectionManager().handleClick(row, evt);
+ }
+}
+
+
+/**
+ * Event handler. Called when the user double clicked a mouse button.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._ondblclick = function(evt) {
+ if (! this.isEditing()) {
+ this._focusCellAtPagePos(evt.getPageX(), evt.getPageY());
+ this.startEditing();
+ }
+}
+
+
+/**
+ * Event handler. Called when the mouse moved out.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onmouseout = function(evt) {
+ /*
+ // Workaround: See _onmousemove
+ this._lastMousePageX = null;
+ this._lastMousePageY = null;
+ */
+
+ // Reset the resize cursor when the mouse leaves the header
+ // If currently a column is resized then do nothing
+ // (the cursor will be reset on mouseup)
+ if (this._resizeColumn == null) {
+ this.getTopLevelWidget().setGlobalCursor(null);
+ }
+
+ this._header.setMouseOverColumn(null);
+}
+
+
+/**
+ * Shows the resize line.
+ *
+ * @param x {int} the position where to show the line (in pixels, relative to
+ * the left side of the pane).
+ */
+qx.Proto._showResizeLine = function(x) {
+ var resizeLine = this._resizeLine;
+ if (resizeLine == null) {
+ resizeLine = new qx.ui.basic.Terminator;
+ resizeLine.setBackgroundColor("#D6D5D9");
+ resizeLine.setWidth(3);
+ this._paneClipper.add(resizeLine);
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ this._resizeLine = resizeLine;
+ }
+
+ resizeLine._applyRuntimeLeft(x - 2); // -1 for the width
+ resizeLine._applyRuntimeHeight(this._paneClipper.getBoxHeight() + this._paneClipper.getScrollTop());
+
+ this._resizeLine.removeStyleProperty("visibility");
+}
+
+
+/**
+ * Hides the resize line.
+ */
+qx.Proto._hideResizeLine = function() {
+ this._resizeLine.setStyleProperty("visibility", "hidden");
+}
+
+
+/**
+ * Shows the feedback shown while a column is moved by the user.
+ *
+ * @param pageX {int} the x position of the mouse in the page (in pixels).
+ * @return {int} the visible x position of the column in the whole table.
+ */
+qx.Proto.showColumnMoveFeedback = function(pageX) {
+ var paneModel = this.getTablePaneModel();
+ var columnModel = this.getTable().getTableColumnModel();
+ var paneLeftX = qx.dom.Location.getClientBoxLeft(this._tablePane.getElement());
+ var colCount = paneModel.getColumnCount();
+
+ var targetXPos = 0;
+ var targetX = 0;
+ var currX = paneLeftX;
+ for (var xPos = 0; xPos < colCount; xPos++) {
+ var col = paneModel.getColumnAtX(xPos);
+ var colWidth = columnModel.getColumnWidth(col);
+
+ if (pageX < currX + colWidth / 2) {
+ break;
+ }
+
+ currX += colWidth;
+ targetXPos = xPos + 1;
+ targetX = currX - paneLeftX;
+ }
+
+ // Ensure targetX is visible
+ var clipperLeftX = qx.dom.Location.getClientBoxLeft(this._paneClipper.getElement());
+ var clipperWidth = this._paneClipper.getBoxWidth();
+ var scrollX = clipperLeftX - paneLeftX;
+ // NOTE: +2/-1 because of feedback width
+ targetX = qx.lang.Number.limit(targetX, scrollX + 2, scrollX + clipperWidth - 1);
+
+ this._showResizeLine(targetX);
+
+ // Return the overall target x position
+ return paneModel.getFirstColumnX() + targetXPos;
+}
+
+
+/**
+ * Hides the feedback shown while a column is moved by the user.
+ */
+qx.Proto.hideColumnMoveFeedback = function() {
+ this._hideResizeLine();
+}
+
+
+/**
+ * Sets the focus to the cell that's located at the page position
+ * <code>pageX</code>/<code>pageY</code>. If there is no cell at that position,
+ * nothing happens.
+ *
+ * @param pageX {int} the x position in the page (in pixels).
+ * @param pageY {int} the y position in the page (in pixels).
+ */
+qx.Proto._focusCellAtPagePos = function(pageX, pageY) {
+ var row = this._getRowForPagePos(pageX, pageY);
+ if (row != -1 && row != null) {
+ // The mouse is over the data -> update the focus
+ var col = this._getColumnForPageX(pageX);
+ if (col != null) {
+ this._table.setFocusedCell(col, row);
+ }
+ }
+}
+
+
+/**
+ * Sets the currently focused cell.
+ *
+ * @param col {int} the model index of the focused cell's column.
+ * @param row {int} the model index of the focused cell's row.
+ */
+qx.Proto.setFocusedCell = function(col, row) {
+ if (!this.isEditing()) {
+ this._tablePane.setFocusedCell(col, row, this._updateContentPlanned);
+
+ this._focusedCol = col;
+ this._focusedRow = row;
+
+ // Move the focus indicator
+ if (! this._updateContentPlanned) {
+ this._updateFocusIndicator();
+ }
+ }
+}
+
+
+/**
+ * Returns the column of currently focused cell.
+ *
+ * @return {int} the model index of the focused cell's column.
+ */
+qx.Proto.getFocusedColumn = function() {
+ return this._focusedCol;
+};
+
+
+/**
+ * Returns the row of currently focused cell.
+ *
+ * @return {int} the model index of the focused cell's column.
+ */
+qx.Proto.getFocusedRow = function() {
+ return this._focusedRow;
+};
+
+
+/**
+ * Scrolls a cell visible.
+ *
+ * @param col {int} the model index of the column the cell belongs to.
+ * @param row {int} the model index of the row the cell belongs to.
+ */
+qx.Proto.scrollCellVisible = function(col, row) {
+ var paneModel = this.getTablePaneModel();
+ var xPos = paneModel.getX(col);
+
+ if (xPos != -1) {
+ var columnModel = this.getTable().getTableColumnModel();
+
+ var colLeft = paneModel.getColumnLeft(col);
+ var colWidth = columnModel.getColumnWidth(col);
+ var rowHeight = this.getTable().getRowHeight();
+ var rowTop = row * rowHeight;
+
+ var scrollX = this.getScrollX();
+ var scrollY = this.getScrollY();
+ var viewWidth = this._paneClipper.getBoxWidth();
+ var viewHeight = this._paneClipper.getBoxHeight();
+
+ // NOTE: We don't use qx.lang.Number.limit, because min should win if max < min
+ var minScrollX = Math.min(colLeft, colLeft + colWidth - viewWidth);
+ var maxScrollX = colLeft;
+ this.setScrollX(Math.max(minScrollX, Math.min(maxScrollX, scrollX)));
+
+ var minScrollY = rowTop + rowHeight - viewHeight;
+ if (this.getTable().getKeepFirstVisibleRowComplete()) {
+ minScrollY += rowHeight - 1;
+ }
+ var maxScrollY = rowTop;
+ this.setScrollY(Math.max(minScrollY, Math.min(maxScrollY, scrollY)));
+ }
+}
+
+
+/**
+ * Returns whether currently a cell is editing.
+ *
+ * @return whether currently a cell is editing.
+ */
+qx.Proto.isEditing = function() {
+ return this._cellEditor != null;
+}
+
+
+/**
+ * Starts editing the currently focused cell. Does nothing if already editing
+ * or if the column is not editable.
+ *
+ * @return {boolean} whether editing was started
+ */
+qx.Proto.startEditing = function() {
+ var tableModel = this.getTable().getTableModel();
+ var col = this._focusedCol;
+
+ if (!this.isEditing() && (col != null) && tableModel.isColumnEditable(col)) {
+ var row = this._focusedRow;
+ var xPos = this.getTablePaneModel().getX(col);
+ var value = tableModel.getValue(col, row);
+
+ this._cellEditorFactory = this.getTable().getTableColumnModel().getCellEditorFactory(col);
+ var cellInfo = { col:col, row:row, xPos:xPos, value:value }
+ this._cellEditor = this._cellEditorFactory.createCellEditor(cellInfo);
+ this._cellEditor.set({ width:"100%", height:"100%" });
+
+ this._focusIndicator.add(this._cellEditor);
+ this._focusIndicator.addState("editing");
+
+ this._cellEditor.addEventListener("changeFocused", this._onCellEditorFocusChanged, this);
+
+ // Workaround: Calling focus() directly has no effect
+ var editor = this._cellEditor;
+ window.setTimeout(function() {
+ editor.focus();
+ }, 0);
+
+ return true;
+ }
+
+ return false;
+}
+
+
+/**
+ * Stops editing and writes the editor's value to the model.
+ */
+qx.Proto.stopEditing = function() {
+ this.flushEditor();
+ this.cancelEditing();
+}
+
+
+/**
+ * Writes the editor's value to the model.
+ */
+qx.Proto.flushEditor = function() {
+ if (this.isEditing()) {
+ var value = this._cellEditorFactory.getCellEditorValue(this._cellEditor);
+ this.getTable().getTableModel().setValue(this._focusedCol, this._focusedRow, value);
+
+ this._table.focus();
+ }
+}
+
+
+/**
+ * Stops editing without writing the editor's value to the model.
+ */
+qx.Proto.cancelEditing = function() {
+ if (this.isEditing()) {
+ this._focusIndicator.remove(this._cellEditor);
+ this._focusIndicator.removeState("editing");
+ this._cellEditor.dispose();
+
+ this._cellEditor.removeEventListener("changeFocused", this._onCellEditorFocusChanged, this);
+ this._cellEditor = null;
+ this._cellEditorFactory = null;
+ }
+}
+
+
+/**
+ * Event handler. Called when the focused state of the cell editor changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onCellEditorFocusChanged = function(evt) {
+ if (!this._cellEditor.getFocused()) {
+ this.stopEditing();
+ }
+}
+
+
+/**
+ * Returns the model index of the column the mouse is over or null if the mouse
+ * is not over a column.
+ *
+ * @param pageX {int} the x position of the mouse in the page (in pixels).
+ * @return {int} the model index of the column the mouse is over.
+ */
+qx.Proto._getColumnForPageX = function(pageX) {
+ var headerLeftX = qx.dom.Location.getClientBoxLeft(this._header.getElement());
+
+ var columnModel = this.getTable().getTableColumnModel();
+ var paneModel = this.getTablePaneModel();
+ var colCount = paneModel.getColumnCount();
+ var currX = headerLeftX;
+ for (var x = 0; x < colCount; x++) {
+ var col = paneModel.getColumnAtX(x);
+ var colWidth = columnModel.getColumnWidth(col);
+ currX += colWidth;
+
+ if (pageX < currX) {
+ return col;
+ }
+ }
+
+ return null;
+}
+
+
+/**
+ * Returns the model index of the column that should be resized when dragging
+ * starts here. Returns -1 if the mouse is in no resize region of any column.
+ *
+ * @param pageX {int} the x position of the mouse in the page (in pixels).
+ * @return {int} the column index.
+ */
+qx.Proto._getResizeColumnForPageX = function(pageX) {
+ var headerLeftX = qx.dom.Location.getClientBoxLeft(this._header.getElement());
+
+ var columnModel = this.getTable().getTableColumnModel();
+ var paneModel = this.getTablePaneModel();
+ var colCount = paneModel.getColumnCount();
+ var currX = headerLeftX;
+ var regionRadius = qx.ui.table.TablePaneScroller.RESIZE_REGION_RADIUS;
+ for (var x = 0; x < colCount; x++) {
+ var col = paneModel.getColumnAtX(x);
+ var colWidth = columnModel.getColumnWidth(col);
+ currX += colWidth;
+
+ if (pageX >= (currX - regionRadius) && pageX <= (currX + regionRadius)) {
+ return col;
+ }
+ }
+
+ return -1;
+}
+
+
+/**
+ * Returns the model index of the row the mouse is currently over. Returns -1 if
+ * the mouse is over the header. Returns null if the mouse is not over any
+ * column.
+ *
+ * @param pageX {int} the mouse x position in the page.
+ * @param pageY {int} the mouse y position in the page.
+ * @return {int} the model index of the row the mouse is currently over.
+ */
+qx.Proto._getRowForPagePos = function(pageX, pageY) {
+ var paneClipperElem = this._paneClipper.getElement();
+ var paneClipperLeftX = qx.dom.Location.getClientBoxLeft(paneClipperElem);
+ var paneClipperRightX = qx.dom.Location.getClientBoxRight(paneClipperElem);
+ if (pageX < paneClipperLeftX || pageX > paneClipperRightX) {
+ // There was no cell or header cell hit
+ return null;
+ }
+
+ var paneClipperTopY = qx.dom.Location.getClientBoxTop(paneClipperElem);
+ var paneClipperBottomY = qx.dom.Location.getClientBoxBottom(paneClipperElem);
+ if (pageY >= paneClipperTopY && pageY <= paneClipperBottomY) {
+ // This event is in the pane -> Get the row
+ var rowHeight = this.getTable().getRowHeight();
+
+ var scrollY = this._verScrollBar.getValue();
+ if (this.getTable().getKeepFirstVisibleRowComplete()) {
+ scrollY = Math.floor(scrollY / rowHeight) * rowHeight;
+ }
+
+ var tableY = scrollY + pageY - paneClipperTopY;
+ var row = Math.floor(tableY / rowHeight);
+
+ var rowCount = this.getTable().getTableModel().getRowCount();
+ return (row < rowCount) ? row : null;
+ }
+
+ var headerElem = this._headerClipper.getElement();
+ if (pageY >= qx.dom.Location.getClientBoxTop(headerElem)
+ && pageY <= qx.dom.Location.getClientBoxBottom(headerElem)
+ && pageX <= qx.dom.Location.getClientBoxRight(headerElem))
+ {
+ // This event is in the pane -> Return -1 for the header
+ return -1;
+ }
+
+ return null;
+}
+
+
+/**
+ * Sets the widget that should be shown in the top right corner.
+ * <p>
+ * The widget will not be disposed, when this table scroller is disposed. So the
+ * caller has to dispose it.
+ *
+ * @param widget {qx.ui.core.Widget} The widget to set. May be null.
+ */
+qx.Proto.setTopRightWidget = function(widget) {
+ var oldWidget = this._topRightWidget;
+ if (oldWidget != null) {
+ this._top.remove(oldWidget);
+ }
+
+ if (widget != null) {
+ this._top.remove(this._spacer);
+ this._top.add(widget);
+ } else if (oldWidget != null) {
+ this._top.add(this._spacer);
+ }
+
+ this._topRightWidget = widget;
+}
+
+
+/**
+ * Returns the header.
+ *
+ * @return {TablePaneHeader} the header.
+ */
+qx.Proto.getHeader = function() {
+ return this._header;
+}
+
+
+/**
+ * Returns the table pane.
+ *
+ * @return {TablePane} the table pane.
+ */
+qx.Proto.getTablePane = function() {
+ return this._tablePane;
+}
+
+
+/**
+ * Returns which scrollbars are needed.
+ *
+ * @param forceHorizontal {boolean ? false} Whether to show the horizontal
+ * scrollbar always.
+ * @param preventVertical {boolean ? false} Whether tp show the vertical scrollbar
+ * never.
+ * @return {int} which scrollbars are needed. This may be any combination of
+ * {@link #HORIZONTAL_SCROLLBAR} or {@link #VERTICAL_SCROLLBAR}
+ * (combined by OR).
+ */
+qx.Proto.getNeededScrollBars = function(forceHorizontal, preventVertical) {
+ var barWidth = this._verScrollBar.getPreferredBoxWidth();
+
+ // Get the width and height of the view (without scroll bars)
+ var viewWidth = this._paneClipper.getInnerWidth();
+ if (this.getVerticalScrollBarVisible()) {
+ viewWidth += barWidth;
+ }
+ var viewHeight = this._paneClipper.getInnerHeight();
+ if (this.getHorizontalScrollBarVisible()) {
+ viewHeight += barWidth;
+ }
+
+ // Get the (virtual) width and height of the pane
+ var paneWidth = this.getTablePaneModel().getTotalWidth();
+ var paneHeight = this.getTable().getRowHeight() * this.getTable().getTableModel().getRowCount();
+
+ // Check which scrollbars are needed
+ var horNeeded = false;
+ var verNeeded = false;
+ if (paneWidth > viewWidth) {
+ horNeeded = true;
+ if (paneHeight > viewHeight - barWidth) {
+ verNeeded = true;
+ }
+ } else if (paneHeight > viewHeight) {
+ verNeeded = true;
+ if (!preventVertical && (paneWidth > viewWidth - barWidth)) {
+ horNeeded = true;
+ }
+ }
+
+ // Create the mask
+ var horBar = qx.ui.table.TablePaneScroller.HORIZONTAL_SCROLLBAR;
+ var verBar = qx.ui.table.TablePaneScroller.VERTICAL_SCROLLBAR;
+ return ((forceHorizontal || horNeeded) ? horBar : 0)
+ | ((preventVertical || !verNeeded) ? 0 : verBar);
+}
+
+
+/**
+ * Does a postponed update of the content.
+ *
+ * @see #_updateContent
+ */
+qx.Proto._postponedUpdateContent = function() {
+ if (! this._updateContentPlanned) {
+ var self = this;
+ window.setTimeout(function() {
+ self._updateContent();
+ self._updateContentPlanned = false;
+ qx.ui.core.Widget.flushGlobalQueues();
+ }, 0);
+ this._updateContentPlanned = true;
+ }
+}
+
+
+/**
+ * Updates the content. Sets the right section the table pane should show and
+ * does the scrolling.
+ */
+qx.Proto._updateContent = function() {
+ var paneHeight = this._paneClipper.getInnerHeight();
+ var scrollX = this._horScrollBar.getValue();
+ var scrollY = this._verScrollBar.getValue();
+ var rowHeight = this.getTable().getRowHeight();
+
+ var firstRow = Math.floor(scrollY / rowHeight);
+ var oldFirstRow = this._tablePane.getFirstVisibleRow();
+ this._tablePane.setFirstVisibleRow(firstRow);
+
+ var rowCount = Math.ceil(paneHeight / rowHeight);
+ var paneOffset = 0;
+ if (! this.getTable().getKeepFirstVisibleRowComplete()) {
+ // NOTE: We don't consider paneOffset, because this may cause alternating
+ // adding and deleting of one row when scolling. Instead we add one row
+ // in every case.
+ rowCount++;
+ paneOffset = scrollY % rowHeight;
+ }
+ this._tablePane.setVisibleRowCount(rowCount);
+
+ if (firstRow != oldFirstRow) {
+ this._updateFocusIndicator();
+ }
+
+ // Workaround: We can't use scrollLeft for the header because IE
+ // automatically scrolls the header back, when a column is
+ // resized.
+ this._header.setLeft(-scrollX);
+ this._paneClipper.setScrollLeft(scrollX);
+ this._paneClipper.setScrollTop(paneOffset);
+
+ //this.debug("paneHeight:"+paneHeight+",rowHeight:"+rowHeight+",firstRow:"+firstRow+",rowCount:"+rowCount+",paneOffset:"+paneOffset);
+}
+
+
+/**
+ * Updates the location and the visibility of the focus indicator.
+ */
+qx.Proto._updateFocusIndicator = function() {
+ if (this._focusedCol == null) {
+ this._focusIndicator.hide();
+ } else {
+ var xPos = this.getTablePaneModel().getX(this._focusedCol);
+ if (xPos == -1) {
+ this._focusIndicator.hide();
+ } else {
+ var columnModel = this.getTable().getTableColumnModel();
+ var paneModel = this.getTablePaneModel();
+
+ var firstRow = this._tablePane.getFirstVisibleRow();
+ var rowHeight = this.getTable().getRowHeight();
+
+ this._focusIndicator.setHeight(rowHeight + 3);
+ this._focusIndicator.setWidth(columnModel.getColumnWidth(this._focusedCol) + 3);
+ this._focusIndicator.setTop((this._focusedRow - firstRow) * rowHeight - 2);
+ this._focusIndicator.setLeft(paneModel.getColumnLeft(this._focusedCol) - 2);
+
+ this._focusIndicator.show();
+ }
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this.getElement() != null) {
+ this.getElement().onselectstart = null;
+ }
+
+ this._verScrollBar.dispose();
+ this._horScrollBar.dispose();
+ this._header.dispose();
+ this._headerClipper.dispose();
+ this._spacer.dispose();
+ this._top.dispose();
+ this._tablePane.dispose();
+ this._paneClipper.dispose();
+
+ if (this._resizeLine != null) {
+ this._resizeLine.dispose();
+ }
+
+ this.removeEventListener("mousemove", this._onmousemove, this);
+ this.removeEventListener("mousedown", this._onmousedown, this);
+ this.removeEventListener("mouseup", this._onmouseup, this);
+ this.removeEventListener("click", this._onclick, this);
+ this.removeEventListener("dblclick", this._ondblclick, this);
+ this.removeEventListener("mouseout", this._onmouseout, this);
+
+ var tablePaneModel = this.getTablePaneModel();
+ if (tablePaneModel != null) {
+ tablePaneModel.removeEventListener("modelChanged", this._onPaneModelChanged, this);
+ }
+
+ return qx.ui.layout.VerticalBoxLayout.prototype.dispose.call(this);
+}
+
+
+/** {int} The minimum width a colum could get in pixels. */
+qx.Class.MIN_COLUMN_WIDTH = 10;
+
+/** {int} The radius of the resize region in pixels. */
+qx.Class.RESIZE_REGION_RADIUS = 5;
+
+/**
+ * (int) The number of pixels the mouse may move between mouse down and mouse up
+ * in order to count as a click.
+ */
+qx.Class.CLICK_TOLERANCE = 5;
+
+/**
+ * (int) The mask for the horizontal scroll bar.
+ * May be combined with {@link #VERTICAL_SCROLLBAR}.
+ *
+ * @see #getNeededScrollBars
+ */
+qx.Class.HORIZONTAL_SCROLLBAR = 1;
+
+/**
+ * (int) The mask for the vertical scroll bar.
+ * May be combined with {@link #HORIZONTAL_SCROLLBAR}.
+ *
+ * @see #getNeededScrollBars
+ */
+qx.Class.VERTICAL_SCROLLBAR = 2;
+
+/**
+ * (string) The correct value for the CSS style attribute "cursor" for the
+ * horizontal resize cursor.
+ */
+qx.Class.CURSOR_RESIZE_HORIZONTAL = (qx.sys.Client.getInstance().isGecko() && (qx.sys.Client.getInstance().getMajor() > 1 || qx.sys.Client.getInstance().getMinor() >= 8)) ? "ew-resize" : "e-resize";
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TextFieldCellEditorFactory.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TextFieldCellEditorFactory.js
new file mode 100644
index 0000000000..6878ce7470
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/table/TextFieldCellEditorFactory.js
@@ -0,0 +1,58 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_table)
+
+************************************************************************ */
+
+/**
+ * A cell editor factory creating text fields.
+ */
+qx.OO.defineClass("qx.ui.table.TextFieldCellEditorFactory", qx.ui.table.CellEditorFactory,
+function() {
+ qx.ui.table.CellEditorFactory.call(this);
+});
+
+
+// overridden
+qx.Proto.createCellEditor = function(cellInfo) {
+ var cellEditor = new qx.ui.form.TextField;
+ cellEditor.setAppearance("table-editor-textfield");
+ cellEditor.originalValue = cellInfo.value;
+ cellEditor.setValue("" + cellInfo.value);
+
+ cellEditor.addEventListener("appear", function() {
+ this.selectAll();
+ });
+
+ return cellEditor;
+}
+
+
+// overridden
+qx.Proto.getCellEditorValue = function(cellEditor) {
+ // Workaround: qx.ui.form.TextField.getValue() delivers the old value, so we use the
+ // value property of the DOM element directly
+ var value = cellEditor.getElement().value;
+
+ if (typeof cellEditor.originalValue == "number") {
+ value = parseFloat(value);
+ }
+ return value;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Button.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Button.js
new file mode 100644
index 0000000000..a231960872
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Button.js
@@ -0,0 +1,47 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.Button", qx.ui.form.Button,
+function(vText, vIcon, vIconWidth, vIconHeight, vFlash)
+{
+ qx.ui.form.Button.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+
+ // Omit focus
+ this.setTabIndex(-1);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "toolbar-button" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = qx.util.Return.returnTrue;
+qx.Proto._onkeyup = qx.util.Return.returnTrue;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/CheckBox.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/CheckBox.js
new file mode 100644
index 0000000000..781a8bc794
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/CheckBox.js
@@ -0,0 +1,86 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.CheckBox", qx.ui.toolbar.Button,
+function(vText, vIcon, vChecked)
+{
+ qx.ui.toolbar.Button.call(this, vText, vIcon);
+
+ if (qx.util.Validation.isValid(vChecked)) {
+ this.setChecked(vChecked);
+ }
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "checked", type : "boolean", defaultValue : false, getAlias:"isChecked" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData)
+{
+ propValue ? this.addState("checked") : this.removeState("checked");
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseup = function(e)
+{
+ this.setCapture(false);
+
+ if (!this.hasState("abandoned"))
+ {
+ this.addState("over");
+ this.setChecked(!this.getChecked());
+ this.execute();
+ }
+
+ this.removeState("abandoned");
+ this.removeState("pressed");
+
+ e.stopPropagation();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/MenuButton.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/MenuButton.js
new file mode 100644
index 0000000000..a06c26fdc1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/MenuButton.js
@@ -0,0 +1,258 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+#module(ui_menu)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.MenuButton", qx.ui.toolbar.Button,
+function(vText, vMenu, vIcon, vIconWidth, vIconHeight, vFlash)
+{
+ qx.ui.toolbar.Button.call(this, vText, vIcon, vIconWidth, vIconHeight, vFlash);
+
+ if (qx.util.Validation.isValidObject(vMenu)) {
+ this.setMenu(vMenu);
+ }
+
+ /*
+ this._menuButton = new qx.ui.basic.Image("widget/arrows/down_small.gif");
+ this._menuButton.setAnonymous(true);
+ this.addAtEnd(this._menuButton);
+ */
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "menu", type : "object", instance : "qx.ui.menu.Menu" });
+qx.OO.addProperty({ name : "direction", type : "string", allowNull : false, possibleValues : [ "up", "down" ], defaultValue : "down" });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getParentToolBar = function()
+{
+ var vParent = this.getParent();
+
+ if (vParent instanceof qx.ui.toolbar.Part) {
+ vParent = vParent.getParent();
+ }
+
+ return vParent instanceof qx.ui.toolbar.ToolBar ? vParent : null;
+}
+
+qx.Proto._showMenu = function(vFromKeyEvent)
+{
+ var vMenu = this.getMenu();
+
+ if (vMenu)
+ {
+ // Caching common stuff
+ var vMenuParent = vMenu.getParent();
+ var vMenuParentElement = vMenuParent.getElement();
+ var vButtonElement = this.getElement();
+ var vButtonHeight = qx.dom.Dimension.getBoxHeight(vButtonElement);
+
+ // Apply X-Location
+ var vMenuParentLeft = qx.dom.Location.getPageBoxLeft(vMenuParentElement);
+ var vButtonLeft = qx.dom.Location.getPageBoxLeft(vButtonElement);
+
+ vMenu.setLeft(vButtonLeft - vMenuParentLeft);
+
+ // Apply Y-Location
+ switch(this.getDirection())
+ {
+ case "up":
+ var vBodyHeight = qx.dom.Dimension.getInnerHeight(document.body);
+ var vMenuParentBottom = qx.dom.Location.getPageBoxBottom(vMenuParentElement);
+ var vButtonBottom = qx.dom.Location.getPageBoxBottom(vButtonElement);
+
+ vMenu.setBottom(vButtonHeight + (vBodyHeight - vButtonBottom) - (vBodyHeight - vMenuParentBottom));
+ vMenu.setTop(null);
+ break;
+
+ case "down":
+ var vButtonTop = qx.dom.Location.getPageBoxTop(vButtonElement);
+
+ vMenu.setTop(vButtonTop + vButtonHeight);
+ vMenu.setBottom(null);
+ break;
+ }
+
+ this.addState("pressed");
+
+ // If this show is called from a key event occured, we want to highlight
+ // the first menubutton inside.
+ if (vFromKeyEvent) {
+ vMenu.setHoverItem(vMenu.getFirstActiveChild());
+ }
+
+ vMenu.show();
+ }
+}
+
+qx.Proto._hideMenu = function()
+{
+ var vMenu = this.getMenu();
+
+ if (vMenu) {
+ vMenu.hide();
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyMenu = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ propOldValue.setOpener(null);
+
+ propOldValue.removeEventListener("appear", this._onmenuappear, this);
+ propOldValue.removeEventListener("disappear", this._onmenudisappear, this);
+ }
+
+ if (propValue)
+ {
+ propValue.setOpener(this);
+
+ propValue.addEventListener("appear", this._onmenuappear, this);
+ propValue.addEventListener("disappear", this._onmenudisappear, this);
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS: MOUSE
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ if (e.getTarget() != this || !e.isLeftButtonPressed()) {
+ return;
+ }
+
+ this.hasState("pressed") ? this._hideMenu() : this._showMenu();
+}
+
+qx.Proto._onmouseup = function(e) {}
+
+qx.Proto._onmouseout = function(e)
+{
+ if (e.getTarget() != this) {
+ return;
+ }
+
+ this.removeState("over");
+}
+
+qx.Proto._onmouseover = function(e)
+{
+ var vToolBar = this.getParentToolBar();
+
+ if (vToolBar)
+ {
+ var vMenu = this.getMenu();
+
+ switch(vToolBar.getOpenMenu())
+ {
+ case null:
+ case vMenu:
+ break;
+
+ default:
+ // hide other menus
+ qx.manager.object.MenuManager.getInstance().update();
+
+ // show this menu
+ this._showMenu();
+ }
+ }
+
+ return qx.ui.toolbar.Button.prototype._onmouseover.call(this, e);
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS: MENU
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmenuappear = function(e)
+{
+ var vToolBar = this.getParentToolBar();
+
+ if (!vToolBar) {
+ return;
+ }
+
+ var vMenu = this.getMenu();
+
+ vToolBar.setOpenMenu(vMenu);
+}
+
+qx.Proto._onmenudisappear = function(e)
+{
+ var vToolBar = this.getParentToolBar();
+
+ if (!vToolBar) {
+ return;
+ }
+
+ var vMenu = this.getMenu();
+
+ if (vToolBar.getOpenMenu() == vMenu) {
+ vToolBar.setOpenMenu(null);
+ }
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Part.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Part.js
new file mode 100644
index 0000000000..292a9045c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Part.js
@@ -0,0 +1,82 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.Part", qx.ui.layout.HorizontalBoxLayout,
+function()
+{
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ this._handle = new qx.ui.toolbar.PartHandle;
+ this.add(this._handle);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "toolbar-part" });
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLONE
+---------------------------------------------------------------------------
+*/
+
+// Omit recursive cloning of qx.ui.toolbar.PartHandle
+qx.Proto._cloneRecursive = function(cloneInstance)
+{
+ var vChildren = this.getChildren();
+ var vLength = vChildren.length;
+
+ for (var i=0; i<vLength; i++) {
+ if (!(vChildren[i] instanceof qx.ui.toolbar.PartHandle)) {
+ cloneInstance.add(vChildren[i].clone(true));
+ }
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._handle)
+ {
+ this._handle.dispose();
+ this._handle = null;
+ }
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/PartHandle.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/PartHandle.js
new file mode 100644
index 0000000000..4e50692832
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/PartHandle.js
@@ -0,0 +1,35 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.PartHandle", qx.ui.layout.CanvasLayout,
+function()
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ var l = new qx.ui.basic.Terminator;
+ l.setAppearance("toolbar-part-handle-line");
+ this.add(l);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "toolbar-part-handle" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/RadioButton.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/RadioButton.js
new file mode 100644
index 0000000000..fd222a214c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/RadioButton.js
@@ -0,0 +1,116 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.RadioButton", qx.ui.toolbar.CheckBox,
+function(vText, vIcon, vChecked) {
+ qx.ui.toolbar.CheckBox.call(this, vText, vIcon, vChecked);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ The assigned qx.manager.selection.RadioManager which handles the switching between registered buttons
+*/
+qx.OO.addProperty({ name : "manager", type : "object", instance : "qx.manager.selection.RadioManager", allowNull : true });
+
+/*!
+ The name of the radio group. All the radio elements in a group (registered by the same manager)
+ have the same name (and could have a different value).
+*/
+qx.OO.addProperty({ name : "name", type : "string" });
+
+/*!
+ Prohibit the deselction of the checked radio button when clicked on it.
+*/
+qx.OO.addProperty({ name : "disableUncheck", type : "boolean", defaultValue : false });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyChecked = function(propValue, propOldValue, propData)
+{
+ qx.ui.toolbar.CheckBox.prototype._modifyChecked.call(this, propValue, propOldValue, propData);
+
+ var vManager = this.getManager();
+ if (vManager) {
+ vManager.handleItemChecked(this, propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyManager = function(propValue, propOldValue, propData)
+{
+ if (propOldValue) {
+ propOldValue.remove(this);
+ }
+
+ if (propValue) {
+ propValue.add(this);
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmouseup = function(e)
+{
+ this.setCapture(false);
+
+ if (!this.hasState("abandoned"))
+ {
+ this.addState("over");
+ this.setChecked(this.getDisableUncheck() || !this.getChecked());
+ this.execute();
+ }
+
+ this.removeState("abandoned");
+ this.removeState("pressed");
+
+ e.stopPropagation();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Separator.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Separator.js
new file mode 100644
index 0000000000..61c07ee760
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/Separator.js
@@ -0,0 +1,35 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.Separator", qx.ui.layout.CanvasLayout,
+function()
+{
+ qx.ui.layout.CanvasLayout.call(this);
+
+ var l = new qx.ui.basic.Terminator;
+ l.setAppearance("toolbar-separator-line");
+ this.add(l);
+});
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "toolbar-separator" });
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/ToolBar.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/ToolBar.js
new file mode 100644
index 0000000000..c3ada9e29c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/toolbar/ToolBar.js
@@ -0,0 +1,242 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_toolbar)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.toolbar.ToolBar", qx.ui.layout.HorizontalBoxLayout,
+function()
+{
+ qx.ui.layout.HorizontalBoxLayout.call(this);
+
+ this.addEventListener("keypress", this._onkeypress);
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "openMenu", type : "object", instance : "qx.ui.menu.Menu" });
+
+/*!
+ Appearance of the widget
+*/
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "toolbar" });
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getAllButtons = function()
+{
+ var vChildren = this.getChildren();
+ var vLength = vChildren.length;
+ var vDeepChildren = [];
+ var vCurrent;
+
+ for (var i=0; i<vLength; i++)
+ {
+ vCurrent = vChildren[i];
+
+ if (vCurrent instanceof qx.ui.toolbar.MenuButton)
+ {
+ vDeepChildren.push(vCurrent);
+ }
+ else if (vCurrent instanceof qx.ui.toolbar.Part)
+ {
+ vDeepChildren = vDeepChildren.concat(vCurrent.getChildren());
+ }
+ }
+
+ return vDeepChildren;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Wraps key events to target functions
+*/
+qx.Proto._onkeypress = function(e)
+{
+ switch(e.getKeyIdentifier())
+ {
+ case "Left":
+ return this._onkeypress_left();
+
+ case "Right":
+ return this._onkeypress_right();
+ }
+}
+
+qx.Proto._onkeypress_left = function()
+{
+ var vMenu = this.getOpenMenu();
+ if (!vMenu) {
+ return;
+ }
+
+ var vOpener = vMenu.getOpener();
+ if (!vOpener) {
+ return;
+ }
+
+ var vChildren = this.getAllButtons();
+ var vChildrenLength = vChildren.length;
+ var vIndex = vChildren.indexOf(vOpener);
+ var vCurrent;
+ var vPrevButton = null;
+
+ for (var i=vIndex-1; i>=0; i--)
+ {
+ vCurrent = vChildren[i];
+
+ if (vCurrent instanceof qx.ui.toolbar.MenuButton && vCurrent.getEnabled())
+ {
+ vPrevButton = vCurrent;
+ break;
+ }
+ }
+
+ // If none found, try again from the begin (looping)
+ if (!vPrevButton)
+ {
+ for (var i=vChildrenLength-1; i>vIndex; i--)
+ {
+ vCurrent = vChildren[i];
+
+ if (vCurrent instanceof qx.ui.toolbar.MenuButton && vCurrent.getEnabled())
+ {
+ vPrevButton = vCurrent;
+ break;
+ }
+ }
+ }
+
+ if (vPrevButton)
+ {
+ // hide other menus
+ qx.manager.object.MenuManager.getInstance().update();
+
+ // show previous menu
+ vPrevButton._showMenu(true);
+ }
+}
+
+qx.Proto._onkeypress_right = function()
+{
+ var vMenu = this.getOpenMenu();
+ if (!vMenu) {
+ return;
+ }
+
+ var vOpener = vMenu.getOpener();
+ if (!vOpener) {
+ return;
+ }
+
+ var vChildren = this.getAllButtons();
+ var vChildrenLength = vChildren.length;
+ var vIndex = vChildren.indexOf(vOpener);
+ var vCurrent;
+ var vNextButton = null;
+
+ for (var i=vIndex+1; i<vChildrenLength; i++)
+ {
+ vCurrent = vChildren[i];
+
+ if (vCurrent instanceof qx.ui.toolbar.MenuButton && vCurrent.getEnabled())
+ {
+ vNextButton = vCurrent;
+ break;
+ }
+ }
+
+ // If none found, try again from the begin (looping)
+ if (!vNextButton)
+ {
+ for (var i=0; i<vIndex; i++)
+ {
+ vCurrent = vChildren[i];
+
+ if (vCurrent instanceof qx.ui.toolbar.MenuButton && vCurrent.getEnabled())
+ {
+ vNextButton = vCurrent;
+ break;
+ }
+ }
+ }
+
+ if (vNextButton)
+ {
+ // hide other menus
+ qx.manager.object.MenuManager.getInstance().update();
+
+ // show next menu
+ vNextButton._showMenu(true);
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("keypress", this._onkeypress);
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/AbstractTreeElement.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/AbstractTreeElement.js
new file mode 100644
index 0000000000..b5468a3540
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/AbstractTreeElement.js
@@ -0,0 +1,502 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tree)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.tree.AbstractTreeElement", qx.ui.layout.BoxLayout,
+function(vLabel, vIcon, vIconSelected)
+{
+ if (this.classname == qx.ui.tree.AbstractTreeElement.ABSTRACT_CLASS) {
+ throw new Error("Please omit the usage of qx.ui.tree.AbstractTreeElement directly. Choose between qx.ui.tree.TreeFolder and qx.ui.tree.TreeFile instead!");
+ }
+
+ // Precreate subwidgets
+ this._indentObject = new qx.ui.embed.HtmlEmbed;
+ this._iconObject = new qx.ui.basic.Image;
+ this._labelObject = new qx.ui.basic.Label;
+
+ // Make anonymous
+ this._indentObject.setAnonymous(true);
+ this._iconObject.setAnonymous(true);
+ this._labelObject.setAnonymous(true);
+
+ // Behaviour and Hard Styling
+ this._labelObject.setSelectable(false);
+ this._labelObject.setStyleProperty("lineHeight", "100%");
+
+ qx.ui.layout.BoxLayout.call(this, "horizontal");
+
+ if (qx.util.Validation.isValid(vLabel)) {
+ this.setLabel(vLabel);
+ }
+
+ // Prohibit selection
+ this.setSelectable(false);
+
+ // Base URL used for indent images
+ this.BASE_URI = qx.manager.object.AliasManager.getInstance().resolvePath("widget/tree/");
+
+ // Adding subwidgets
+ this.add(this._indentObject, this._iconObject, this._labelObject);
+
+ // Set Icons
+ if ((vIcon != null) && (qx.util.Validation.isValidString(vIcon))) {
+ this.setIcon(vIcon);
+ this.setIconSelected(vIcon);
+ }
+ if ((vIconSelected != null) && (qx.util.Validation.isValidString(vIconSelected))) {
+ this.setIconSelected(vIconSelected);
+ }
+
+ // Setup initial icon
+ this._iconObject.setSource(this._evalCurrentIcon());
+
+ // Set Appearance
+ this._iconObject.setAppearance("tree-element-icon");
+ this._labelObject.setAppearance("tree-element-label");
+
+ // Register event listeners
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+});
+
+qx.ui.tree.AbstractTreeElement.ABSTRACT_CLASS = "qx.ui.tree.AbstractTreeElement";
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tree-element" });
+
+/*!
+ The icons
+*/
+qx.OO.addProperty({ name : "icon", type : "string" });
+qx.OO.addProperty({ name : "iconSelected", type : "string" });
+
+/*!
+ The label/caption/text of the qx.ui.basic.Atom instance
+*/
+qx.OO.addProperty({ name : "label", type : "string" });
+
+/*!
+ Selected property
+*/
+qx.OO.addProperty({ name : "selected", type : "boolean", defaultValue : false });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyLabel = function(propValue, propOldValue, propData)
+{
+ if (this._labelObject) {
+ this._labelObject.setHtml(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifySelected = function(propValue, propOldValue, propData)
+{
+ propValue ? this.addState("selected") : this.removeState("selected");
+ propValue ? this._labelObject.addState("selected") : this._labelObject.removeState("selected");
+
+ var vTree = this.getTree();
+ if (!vTree._fastUpdate || (propOldValue && vTree._oldItem == this))
+ {
+ this._iconObject.setSource(this._evalCurrentIcon());
+
+ if (propValue) {
+ this._iconObject.addState("selected");
+ } else {
+ this._iconObject.removeState("selected");
+ }
+ }
+
+ var vManager = this.getTree().getManager();
+
+ if (propOldValue && vManager.getSelectedItem() == this)
+ {
+ vManager.deselectAll();
+ }
+ else if (propValue && vManager.getSelectedItem() != this)
+ {
+ vManager.setSelectedItem(this);
+ }
+
+ return true;
+}
+
+qx.Proto._evalCurrentIcon = function()
+{
+ if (this.getSelected() && this.getIconSelected()) {
+ return this.getIconSelected();
+ } else {
+ return this.getIcon() || "icon/16/file-new.png";
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getParentFolder = function()
+{
+ try {
+ return this.getParent().getParent();
+ } catch(ex) {}
+
+ return null;
+}
+
+qx.Proto.getLevel = function()
+{
+ var vParentFolder = this.getParentFolder();
+ return vParentFolder ? vParentFolder.getLevel() + 1 : null;
+}
+
+qx.Proto.getTree = function()
+{
+ var vParentFolder = this.getParentFolder();
+ return vParentFolder ? vParentFolder.getTree() : null;
+}
+
+qx.Proto.getIndentObject = function() {
+ return this._indentObject;
+}
+
+qx.Proto.getIconObject = function() {
+ return this._iconObject;
+}
+
+qx.Proto.getLabelObject = function() {
+ return this._labelObject;
+}
+
+/**
+ * <p>deselects, disconnects, removes and disposes the
+ * current tree element and its content.
+ * </p>
+ *
+ * <p>destroys the current item (TreeFile or TreeFolder)
+ * and all its subitems. The destruction of the subitems
+ * is done by calling destroyContent. This is done if the
+ * subitem has the method destroyContent which is true if the
+ * subitem is a TreeFolder (or one of its subclasses).
+ * </p>
+ *
+ * <p>The method destroyContent is defined in the TreeFolder class.
+ * </p>
+ */
+qx.Proto.destroy = function() {
+ var manager = this.getTree() ? this.getTree().getManager() : null;
+ if(manager) {
+
+ // if the current destroyed item is
+ // selectd deselect the item. If we are
+ // in single selection mode we have to
+ // call deselectAll because setItemSelected
+ // refuses to deselect in this case
+ if(manager.getItemSelected(this)) {
+ if(manager.getMultiSelection()) {
+ manager.setItemSelected(this,false);
+ }
+ else {
+ manager.deselectAll();
+ }
+ }
+
+ // set the leadItem to null if the current
+ // destroyed item is the leadItem
+ if(manager.getLeadItem() == this) {
+ manager.setLeadItem(null);
+ }
+ // set the anchorItem to null if the current
+ // destroyed item is the anchorItem
+ if(manager.getAnchorItem() == this) {
+ manager.setAnchorItem(null);
+ }
+ }
+
+ // if the item has the method destroyContent defined
+ // then it is a TreeFolder (and it's subclasses)
+ // which potentially have content which also
+ // has to be destroyed
+ if(this.destroyContent) {
+ this.destroyContent();
+ }
+
+ // first disconnect the item so rendering
+ // of the tree lines can be done correctly
+ this.disconnect();
+
+ // remove the current item from
+ // the parent folder
+ var parentFolder = this.getParentFolder();
+ if(parentFolder) {
+ parentFolder.remove(this);
+ }
+
+ this.dispose();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ QUEUE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addToTreeQueue = function()
+{
+ var vTree = this.getTree();
+ if (vTree) {
+ vTree.addChildToTreeQueue(this);
+ }
+}
+
+qx.Proto.removeFromTreeQueue = function()
+{
+ var vTree = this.getTree();
+ if (vTree) {
+ vTree.removeChildFromTreeQueue(this);
+ }
+}
+
+qx.Proto.addToCustomQueues = function(vHint)
+{
+ this.addToTreeQueue();
+
+ qx.ui.layout.BoxLayout.prototype.addToCustomQueues.call(this, vHint);
+}
+
+qx.Proto.removeFromCustomQueues = function(vHint)
+{
+ this.removeFromTreeQueue();
+
+ qx.ui.layout.BoxLayout.prototype.removeFromCustomQueues.call(this, vHint);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAYBLE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyParent = function(propValue, propOldValue, propData)
+{
+ qx.ui.layout.BoxLayout.prototype._modifyParent.call(this, propValue, propOldValue, propData);
+
+ // Be sure to update previous folder also if it is closed currently (plus/minus symbol)
+ if (propOldValue && !propOldValue.isDisplayable() && propOldValue.getParent() && propOldValue.getParent().isDisplayable()) {
+ propOldValue.getParent().addToTreeQueue();
+ }
+
+ // Be sure to update new folder also if it is closed currently (plus/minus symbol)
+ if (propValue && !propValue.isDisplayable() && propValue.getParent() && propValue.getParent().isDisplayable()) {
+ propValue.getParent().addToTreeQueue();
+ }
+
+ return true;
+}
+
+qx.Proto._handleDisplayableCustom = function(vDisplayable, vParent, vHint)
+{
+ qx.ui.layout.BoxLayout.prototype._handleDisplayableCustom.call(this, vDisplayable, vParent, vHint);
+
+ if (vHint)
+ {
+ var vParentFolder = this.getParentFolder();
+ var vPreviousParentFolder = this._previousParentFolder;
+
+ if (vPreviousParentFolder)
+ {
+ if (this._wasLastVisibleChild)
+ {
+ vPreviousParentFolder._updateIndent();
+ }
+ else if (!vPreviousParentFolder.hasContent())
+ {
+ vPreviousParentFolder.addToTreeQueue();
+ }
+ }
+
+ if (vParentFolder && vParentFolder.isDisplayable() && vParentFolder._initialLayoutDone) {
+ vParentFolder.addToTreeQueue();
+ }
+
+ if (this.isLastVisibleChild())
+ {
+ var vPrev = this.getPreviousVisibleSibling();
+
+ if (vPrev && vPrev instanceof qx.ui.tree.AbstractTreeElement) {
+ vPrev._updateIndent();
+ }
+ }
+
+ if (vDisplayable) {
+ this._updateIndent();
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ this.getTree().getManager().handleMouseDown(this, e);
+ e.stopPropagation();
+}
+
+qx.Proto._onmouseup = qx.util.Return.returnTrue;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TREE FLUSH
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.flushTree = function()
+{
+ // store informations for update process
+ this._previousParentFolder = this.getParentFolder();
+ this._wasLastVisibleChild = this.isLastVisibleChild();
+
+ // generate html for indent area
+ var vLevel = this.getLevel();
+ var vTree = this.getTree();
+ var vImage;
+ var vHtml = [];
+ var vCurrentObject = this;
+
+ for (var i=0; i<vLevel; i++)
+ {
+ vImage = vCurrentObject.getIndentSymbol(vTree.getUseTreeLines(), i==0);
+
+ if (vImage)
+ {
+ vHtml.push("<img style=\"position:absolute;top:0px;left:");
+ vHtml.push((vLevel-i-1) * 19);
+ vHtml.push("px\" src=\"");
+ vHtml.push(this.BASE_URI);
+ vHtml.push(vImage);
+ vHtml.push(".");
+ vHtml.push("gif");
+ vHtml.push("\" />");
+ }
+
+ vCurrentObject = vCurrentObject.getParentFolder();
+ }
+
+ this._indentObject.setHtml(vHtml.join(""));
+ this._indentObject.setWidth(vLevel * 19);
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._indentObject)
+ {
+ this._indentObject.dispose();
+ this._indentObject = null;
+ }
+
+ if (this._iconObject)
+ {
+ this._iconObject.dispose();
+ this._iconObject = null;
+ }
+
+ if (this._labelObject)
+ {
+ this._labelObject.dispose();
+ this._labelObject = null;
+ }
+
+ this._previousParentFolder = null;
+
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/Tree.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/Tree.js
new file mode 100644
index 0000000000..18affeccb4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/Tree.js
@@ -0,0 +1,398 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tree)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.tree.Tree", qx.ui.tree.TreeFolder,
+function(vLabel, vIcon, vIconSelected)
+{
+ qx.ui.tree.TreeFolder.call(this, vLabel, vIcon, vIconSelected);
+
+ // ************************************************************************
+ // INITILISIZE MANAGER
+ // ************************************************************************
+ this._manager = new qx.manager.selection.TreeSelectionManager(this);
+
+
+ this._iconObject.setAppearance("tree-icon");
+ this._labelObject.setAppearance("tree-label");
+
+
+ // ************************************************************************
+ // DEFAULT STATE
+ // ************************************************************************
+ // The tree should be open by default
+ this.setOpen(true);
+
+ // Fix vertical alignment of empty tree
+ this.addToFolder();
+
+
+ // ************************************************************************
+ // KEY EVENT LISTENER
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+ this.addEventListener("keyup", this._onkeyup);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "useDoubleClick", type : "boolean", defaultValue : false, getAlias : "useDoubleClick" });
+qx.OO.addProperty({ name : "useTreeLines", type : "boolean", defaultValue : true, getAlias : "useTreeLines" });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER BINDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+qx.Proto.getSelectedElement = function() {
+ return this.getManager().getSelectedItem();
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ QUEUE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addChildToTreeQueue = function(vChild)
+{
+ if (!vChild._isInTreeQueue && !vChild._isDisplayable) {
+ this.debug("Ignoring invisible child: " + vChild);
+ }
+
+ if (!vChild._isInTreeQueue && vChild._isDisplayable)
+ {
+ qx.ui.core.Widget.addToGlobalWidgetQueue(this);
+
+ if (!this._treeQueue) {
+ this._treeQueue = {};
+ }
+
+ this._treeQueue[vChild.toHashCode()] = vChild;
+
+ vChild._isInTreeQueue = true;
+ }
+}
+
+qx.Proto.removeChildFromTreeQueue = function(vChild)
+{
+ if (vChild._isInTreeQueue)
+ {
+ if (this._treeQueue) {
+ delete this._treeQueue[vChild.toHashCode()];
+ }
+
+ delete vChild._isInTreeQueue;
+ }
+}
+
+qx.Proto.flushWidgetQueue = function() {
+ this.flushTreeQueue();
+}
+
+qx.Proto.flushTreeQueue = function()
+{
+ if (!qx.lang.Object.isEmpty(this._treeQueue))
+ {
+ for (var vHashCode in this._treeQueue)
+ {
+ // this.debug("Flushing Tree Child: " + this._treeQueue[vHashCode]);
+ this._treeQueue[vHashCode].flushTree();
+ delete this._treeQueue[vHashCode]._isInTreeQueue;
+ }
+
+ delete this._treeQueue;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyUseTreeLines = function(propValue, propOldValue, propData)
+{
+ if (this._initialLayoutDone) {
+ this._updateIndent();
+ }
+
+ return true;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getTree = function() {
+ return this;
+}
+
+qx.Proto.getParentFolder = function() {
+ return null;
+}
+
+qx.Proto.getLevel = function() {
+ return 0;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMMON CHECKERS
+---------------------------------------------------------------------------
+*/
+
+qx.ui.tree.Tree.isTreeFolder = function(vObject) {
+ return vObject && vObject instanceof qx.ui.tree.TreeFolder && !(vObject instanceof qx.ui.tree.Tree);
+};
+
+qx.ui.tree.Tree.isOpenTreeFolder = function(vObject) {
+ return vObject instanceof qx.ui.tree.TreeFolder && vObject.getOpen() && vObject.hasContent();
+};
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e)
+{
+ var vSelectedItem = this.getManager().getSelectedItem();
+
+ if (e.getKeyIdentifier() == "Enter") {
+ e.preventDefault();
+
+ if (qx.ui.tree.Tree.isTreeFolder(vSelectedItem)) {
+ return vSelectedItem.toggle();
+ }
+ }
+};
+
+
+qx.Proto._onkeypress = function(e)
+{
+ var vManager = this.getManager();
+ var vSelectedItem = vManager.getSelectedItem();
+
+ switch(e.getKeyIdentifier())
+ {
+ case "Left":
+ e.preventDefault();
+
+ if (qx.ui.tree.Tree.isTreeFolder(vSelectedItem))
+ {
+ if (!vSelectedItem.getOpen())
+ {
+ var vParent = vSelectedItem.getParentFolder();
+ if (vParent instanceof qx.ui.tree.TreeFolder) {
+ if (!(vParent instanceof qx.ui.tree.Tree)) {
+ vParent.close();
+ }
+
+ this.setSelectedElement(vParent);
+ }
+ }
+ else
+ {
+ return vSelectedItem.close();
+ }
+ }
+ else if (vSelectedItem instanceof qx.ui.tree.TreeFile)
+ {
+ var vParent = vSelectedItem.getParentFolder();
+ if (vParent instanceof qx.ui.tree.TreeFolder) {
+ if (!(vParent instanceof qx.ui.tree.Tree)) {
+ vParent.close();
+ }
+
+ this.setSelectedElement(vParent);
+ }
+ }
+
+ break;
+
+ case "Right":
+ e.preventDefault();
+
+ if (qx.ui.tree.Tree.isTreeFolder(vSelectedItem))
+ {
+ if (!vSelectedItem.getOpen())
+ {
+ return vSelectedItem.open();
+ }
+ else if (vSelectedItem.hasContent())
+ {
+ var vFirst = vSelectedItem.getFirstVisibleChildOfFolder();
+ this.setSelectedElement(vFirst);
+
+ if (vFirst instanceof qx.ui.tree.TreeFolder) {
+ vFirst.open();
+ }
+
+ return;
+ }
+ }
+
+ break;
+
+ default:
+ if (!this._fastUpdate)
+ {
+ this._fastUpdate = true;
+ this._oldItem = vSelectedItem;
+ }
+
+ vManager.handleKeyPress(e);
+ }
+};
+
+
+qx.Proto._onkeyup = function(e)
+{
+ if (this._fastUpdate)
+ {
+ var vOldItem = this._oldItem;
+ var vNewItem = this.getManager().getSelectedItem();
+
+ vNewItem.getIconObject().addState("selected");
+
+ delete this._fastUpdate;
+ delete this._oldItem;
+ }
+};
+
+
+qx.Proto.getLastTreeChild = function()
+{
+ var vLast = this;
+
+ while (vLast instanceof qx.ui.tree.AbstractTreeElement)
+ {
+ if (!(vLast instanceof qx.ui.tree.TreeFolder) || !vLast.getOpen()) {
+ return vLast;
+ }
+
+ vLast = vLast.getLastVisibleChildOfFolder();
+ }
+
+ return null;
+};
+
+
+qx.Proto.getFirstTreeChild = function() {
+ return this;
+};
+
+
+qx.Proto.setSelectedElement = function(vElement)
+{
+ var vManager = this.getManager();
+
+ vManager.setSelectedItem(vElement);
+ vManager.setLeadItem(vElement);
+};
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+ this.removeEventListener("keyup", this._onkeyup);
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ delete this._oldItem;
+
+ return qx.ui.tree.TreeFolder.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFile.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFile.js
new file mode 100644
index 0000000000..8939b18e2d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFile.js
@@ -0,0 +1,62 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tree)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.tree.TreeFile", qx.ui.tree.AbstractTreeElement,
+function(vLabel, vIcon, vIconSelected) {
+ qx.ui.tree.AbstractTreeElement.call(this, vLabel, vIcon, vIconSelected);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INDENT HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getIndentSymbol = function(vUseTreeLines, vIsLastColumn)
+{
+ if (vUseTreeLines)
+ {
+ if (vIsLastColumn)
+ {
+ return this.isLastChild() ? "end" : "cross";
+ }
+ else
+ {
+ return "line";
+ }
+ }
+
+ return null;
+}
+
+qx.Proto._updateIndent = function() {
+ this.addToTreeQueue();
+}
+
+qx.Proto.getItems = function() {
+ return [this];
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFolder.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFolder.js
new file mode 100644
index 0000000000..3f660867f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/tree/TreeFolder.js
@@ -0,0 +1,605 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_tree)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.tree.TreeFolder", qx.ui.tree.AbstractTreeElement,
+function(vLabel, vIcon, vIconSelected)
+{
+ qx.ui.tree.AbstractTreeElement.call(this, vLabel, vIcon, vIconSelected);
+
+ this._iconObject.setAppearance("tree-folder-icon");
+ this._labelObject.setAppearance("tree-folder-label");
+
+ this.addEventListener("dblclick", this._ondblclick);
+
+ // Remapping of add/remove methods
+ this.add = this.addToFolder;
+ this.addBefore = this.addBeforeToFolder;
+ this.addAfter = this.addAfterToFolder;
+ this.addAt = this.addAtToFolder;
+ this.addAtBegin = this.addAtBeginToFolder;
+ this.addAtEnd = this.addAtEndToFolder;
+ this.remove = this.removeFromFolder;
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "tree-folder" });
+qx.OO.changeProperty({ name : "icon", type : "string" });
+qx.OO.changeProperty({ name : "iconSelected", type : "string" });
+
+qx.OO.addProperty({ name : "open", type : "boolean", defaultValue : false });
+qx.OO.addProperty({ name : "alwaysShowPlusMinusSymbol", type : "boolean", defaultValue : false });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.hasContent = function() {
+ return this._containerObject && this._containerObject.getChildrenLength() > 0;
+}
+
+qx.Proto.open = function()
+{
+ if (this.getOpen()) {
+ return;
+ }
+
+ if (this.hasContent() && this.isSeeable())
+ {
+ this.getTopLevelWidget().setGlobalCursor("progress");
+ qx.client.Timer.once(this._openCallback, this, 0);
+ }
+ else
+ {
+ this.setOpen(true);
+ }
+}
+
+qx.Proto.close = function() {
+ this.setOpen(false);
+}
+
+qx.Proto.toggle = function() {
+ this.getOpen() ? this.close() : this.open();
+}
+
+qx.Proto._openCallback = function()
+{
+ this.setOpen(true);
+ qx.ui.core.Widget.flushGlobalQueues();
+ this.getTopLevelWidget().setGlobalCursor(null);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createChildrenStructure = function()
+{
+ this.setAppearance(this instanceof qx.ui.tree.Tree ? "tree-container" : "tree-folder-container");
+
+ if (!this._horizontalLayout)
+ {
+ this.setOrientation("vertical");
+
+ this._horizontalLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._horizontalLayout.setWidth(null);
+ this._horizontalLayout.setParent(this);
+ this._horizontalLayout.setAnonymous(true);
+ this._horizontalLayout.setAppearance(this instanceof qx.ui.tree.Tree ? "tree" : "tree-folder");
+
+ this._indentObject.setParent(this._horizontalLayout);
+ this._iconObject.setParent(this._horizontalLayout);
+ this._labelObject.setParent(this._horizontalLayout);
+ }
+
+ if (!this._containerObject)
+ {
+ this._containerObject = new qx.ui.layout.VerticalBoxLayout;
+ this._containerObject.setWidth(null);
+ this._containerObject.setAnonymous(true);
+
+ // it should be faster to first handle display,
+ // because the default display value is true and if we first
+ // setup the parent the logic do all to make the
+ // widget first visible and then, if the folder is not
+ // opened again invisible.
+ this._containerObject.setDisplay(this.getOpen());
+ this._containerObject.setParent(this);
+
+ // remap remove* functions
+ this.remapChildrenHandlingTo(this._containerObject);
+ }
+}
+
+qx.Proto._handleChildMove = function(vChild, vRelationIndex, vRelationChild)
+{
+ if (vChild.isDisplayable())
+ {
+ var vChildren = this._containerObject.getChildren();
+ var vOldChildIndex = vChildren.indexOf(vChild);
+
+ if (vOldChildIndex != -1)
+ {
+ if (vRelationChild) {
+ vRelationIndex = vChildren.indexOf(vRelationChild);
+ }
+
+ if (vRelationIndex == vChildren.length-1)
+ {
+ vChild._updateIndent();
+
+ // Update indent of previous last child
+ this._containerObject.getLastVisibleChild()._updateIndent();
+ }
+ else if (vChild._wasLastVisibleChild)
+ {
+ vChild._updateIndent();
+
+ // Update indent for new last child
+ var vPreviousSibling = vChild.getPreviousVisibleSibling();
+ if (vPreviousSibling) {
+ vPreviousSibling._updateIndent();
+ }
+ }
+ }
+ }
+}
+
+qx.Proto.addToFolder = function()
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject) {
+ return this._containerObject.add.apply(this._containerObject, arguments);
+ }
+}
+
+qx.Proto.addBeforeToFolder = function(vChild, vBefore)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ this._handleChildMove(vChild, null, vBefore);
+ return this._containerObject.addBefore.apply(this._containerObject, arguments);
+ }
+}
+
+qx.Proto.addAfterToFolder = function(vChild, vAfter)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ this._handleChildMove(vChild, null, vAfter);
+ return this._containerObject.addAfter.apply(this._containerObject, arguments);
+ }
+}
+
+qx.Proto.addAtToFolder = function(vChild, vIndex)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ this._handleChildMove(vChild, vIndex);
+ return this._containerObject.addAt.apply(this._containerObject, arguments);
+ }
+}
+
+qx.Proto.addAtBeginToFolder = function(vChild) {
+ return this.addAtToFolder(vChild, 0);
+}
+
+qx.Proto.addAtEndToFolder = function(vChild)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ var vLast = this._containerObject.getLastChild();
+
+ if (vLast)
+ {
+ this._handleChildMove(vChild, null, vLast);
+ return this._containerObject.addAfter.call(this._containerObject, vChild, vLast);
+ }
+ else
+ {
+ return this.addAtBeginToFolder(vChild);
+ }
+ }
+}
+
+qx.Proto._remappingChildTable = [ "remove", "removeAt", "removeAll" ];
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getContainerObject = function() {
+ return this._containerObject;
+}
+
+qx.Proto.getHorizontalLayout = function() {
+ return this._horizontalLayout;
+}
+
+qx.Proto.getFirstVisibleChildOfFolder = function()
+{
+ if (this._containerObject) {
+ return this._containerObject.getFirstChild();
+ }
+}
+
+qx.Proto.getLastVisibleChildOfFolder = function()
+{
+ if (this._containerObject) {
+ return this._containerObject.getLastChild();
+ }
+}
+
+qx.Proto.getItems = function(recursive, invisible)
+{
+ var a = [this];
+
+ if (this._containerObject)
+ {
+ var ch = invisible == true ? this._containerObject.getChildren() : this._containerObject.getVisibleChildren();
+
+ if (recursive == false)
+ {
+ a = a.concat(ch);
+ }
+ else
+ {
+ for (var i=0, chl=ch.length; i<chl; i++) {
+ a = a.concat(ch[i].getItems(recursive, invisible));
+ }
+ }
+ }
+
+ return a;
+}
+
+/**
+ * <p>deselects, disconnects, removes and disposes the
+ * content of the folder and its subfolders.
+ * </p>
+ *
+ * <p>the current items subitems (and the subitems of each
+ * subitem) are destoyed going top down the TreeFolder
+ * hierarchy. The current item is left as is.
+ * </p>
+ */
+qx.Proto.destroyContent = function() {
+ if(this.hasContent()) {
+
+ var manager = this.getTree() ? this.getTree().getManager() : null;
+
+ var leadItem;
+ var anchorItem;
+ if(manager) {
+ leadItem = manager.getLeadItem();
+ anchorItem = manager.getAnchorItem();
+ }
+
+ var items = this.getItems();
+ var item;
+
+ for(var i=items.length-1;i>=0;--i) {
+ item = items[i];
+
+ // this.getItems seems to also contain this.
+ // In order to avoid endless loops by calling
+ // recursively destroyContent we have to avoid
+ // destroying ourselves
+ if(item != this) {
+ if(manager) {
+ // set the leadItem to null if the current
+ // destroyed item is the leadItem
+ if(leadItem == item) {
+ manager.setLeadItem(null);
+ }
+ // set the anchorItem to null if the current
+ // destroyed item is the anchorItem
+ if(anchorItem == item) {
+ manager.setAnchorItem(null);
+ }
+
+ // if the current destroyed item is
+ // selectd deselect the item. If we are
+ // in single selection mode we have to
+ // call deselectAll because setItemSelected
+ // refuses to deselect in this case
+ if(manager.getItemSelected(item)) {
+ if(manager.getMultiSelection()) {
+ manager.setItemSelected(item,false);
+ }
+ else {
+ manager.deselectAll();
+ }
+ }
+
+ // if the item has the method destroyContent defined
+ // then it is a TreeFolder (and it's subclasses)
+ // which potentially have content which also
+ // has to be destroyed
+ if (item.destroyContent) {
+ item.destroyContent();
+ }
+ }
+
+ // first disconnect the item so rendering
+ // of the tree lines can be done correctly
+ item.disconnect();
+ this.remove(item);
+ item.dispose();
+ }
+ }
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._evalCurrentIcon = function()
+{
+ if (this.getSelected()) {
+ return this.getIconSelected() || "icon/16/folder-open.png";
+ } else {
+ return this.getIcon() || "icon/16/folder.png";
+ }
+}
+
+qx.Proto._modifyOpen = function(propValue, propOldValue, propData)
+{
+ this._updateLastColumn();
+
+ if (this._containerObject) {
+ this._containerObject.setDisplay(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyAlwaysShowPlusMinusSymbol = function(propValue, propOldValue, propData)
+{
+ this._updateLastColumn();
+
+ return true;
+}
+
+qx.Proto._updateLastColumn = function()
+{
+ if (this._indentObject)
+ {
+ var vElement = this._indentObject.getElement();
+
+ if (vElement && vElement.firstChild) {
+ vElement.firstChild.src = this.BASE_URI + this.getIndentSymbol(this.getTree().getUseTreeLines(), true) + ".gif";
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ var vOriginalTarget = e.getOriginalTarget();
+
+ switch(vOriginalTarget)
+ {
+ case this._indentObject:
+ if (this._indentObject.getElement().firstChild == e.getDomTarget())
+ {
+ this.getTree().getManager().handleMouseDown(this, e);
+ this.toggle();
+ }
+
+ break;
+
+ case this._containerObject:
+ break;
+
+ case this:
+ if (this._containerObject) {
+ break;
+ }
+
+ // no break here
+
+ default:
+ this.getTree().getManager().handleMouseDown(this, e);
+ }
+
+ e.stopPropagation();
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vOriginalTarget = e.getOriginalTarget();
+
+ switch(vOriginalTarget)
+ {
+ case this._indentObject:
+ case this._containerObject:
+ case this:
+ break;
+
+ default:
+ if (!this.getTree().getUseDoubleClick()) {
+ this.open();
+ }
+ }
+}
+
+qx.Proto._ondblclick = function(e)
+{
+ if (!this.getTree().getUseDoubleClick()) {
+ return;
+ }
+
+ this.toggle();
+ e.stopPropagation();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INDENT HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getIndentSymbol = function(vUseTreeLines, vIsLastColumn)
+{
+ if (vIsLastColumn)
+ {
+ if (this.hasContent() || this.getAlwaysShowPlusMinusSymbol())
+ {
+ if (!vUseTreeLines)
+ {
+ return this.getOpen() ? "minus" : "plus";
+ }
+ else if (this.isLastChild())
+ {
+ return this.getOpen() ? "end_minus" : "end_plus";
+ }
+ else
+ {
+ return this.getOpen() ? "cross_minus" : "cross_plus";
+ }
+ }
+ else if (vUseTreeLines)
+ {
+ return this.isLastChild() ? "end" : "cross";
+ }
+ }
+ else
+ {
+ return vUseTreeLines && !this.isLastChild() ? "line" : null;
+ }
+}
+
+qx.Proto._updateIndent = function()
+{
+ // Intentionally bypass superclass; the _updateIndent we want is in TreeFile
+ qx.ui.tree.TreeFile.prototype._updateIndent.call(this);
+
+ if (!this._containerObject) {
+ return;
+ }
+
+ var ch = this._containerObject.getVisibleChildren();
+ for (var i=0, l=ch.length; i<l; i++) {
+ ch[i]._updateIndent();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("dblclick", this._ondblclick);
+
+ if (this._horizontalLayout)
+ {
+ this._horizontalLayout.dispose();
+ this._horizontalLayout = null;
+ }
+
+ if (this._containerObject)
+ {
+ this._containerObject.dispose();
+ this._containerObject = null;
+ }
+
+ return qx.ui.tree.AbstractTreeElement.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/AbstractTreeElement.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/AbstractTreeElement.js
new file mode 100644
index 0000000000..16245b9f0b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/AbstractTreeElement.js
@@ -0,0 +1,529 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_treefullcontrol)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.treefullcontrol.AbstractTreeElement", qx.ui.layout.BoxLayout,
+function(treeRowStructure)
+{
+ if (this.classname == qx.ui.treefullcontrol.AbstractTreeElement.ABSTRACT_CLASS) {
+ throw new Error("Please omit the usage of qx.ui.treefullcontrol.AbstractTreeElement directly. Choose between qx.ui.treefullcontrol.TreeFolder, qx.ui.treefullcontrol.TreeFolderSimple, qx.ui.treefullcontrol.TreeFile and qx.ui.treefullcontrol.TreeFileSimple instead!");
+ }
+
+ if (treeRowStructure !== qx.ui.treefullcontrol.TreeRowStructure.getInstance())
+ {
+ throw new Error("A qx.ui.treefullcontrol.TreeRowStructure parameter is required.");
+ }
+
+ // Precreate subwidgets
+ this._indentObject = treeRowStructure._indentObject;
+ this._iconObject = treeRowStructure._iconObject;
+ this._labelObject = treeRowStructure._labelObject;
+
+ // Make anonymous
+ this._indentObject.setAnonymous(true);
+ this._iconObject.setAnonymous(true);
+ this._labelObject.setAnonymous(true);
+
+ // Behaviour and Hard Styling
+ this._labelObject.setSelectable(false);
+ this._labelObject.setStyleProperty("lineHeight",
+ "100%");
+
+ qx.ui.layout.BoxLayout.call(this, "horizontal");
+
+ if (qx.util.Validation.isValid(treeRowStructure._label)) {
+ this.setLabel(treeRowStructure._label);
+ }
+
+ // Prohibit selection
+ this.setSelectable(false);
+
+ // Base URL used for indent images
+ this.BASE_URI = qx.manager.object.AliasManager.getInstance().resolvePath("widget/tree/");
+
+ /*
+ * Add all of the objects which are to be in the horizontal layout.
+ */
+ for (var i = 0; i < treeRowStructure._fields.length; i++)
+ {
+ this.add(treeRowStructure._fields[i]);
+ }
+
+ // Set Icons
+ if ((treeRowStructure._icons.unselected != null) &&
+ (qx.util.Validation.isValidString(treeRowStructure._icons.unselected))) {
+ this.setIcon(treeRowStructure._icons.unselected);
+ this.setIconSelected(treeRowStructure._icons.unselected);
+ }
+ if ((treeRowStructure._icons.selected != null) &&
+ (qx.util.Validation.isValidString(treeRowStructure._icons.selected))) {
+ this.setIconSelected(treeRowStructure._icons.selected);
+ }
+
+ // Setup initial icon
+ this._iconObject.setSource(this._evalCurrentIcon());
+
+ // Set Appearance
+ this._iconObject.setAppearance("tree-element-icon");
+ this._labelObject.setAppearance("tree-element-label");
+
+ // Register event listeners
+ this.addEventListener("mousedown", this._onmousedown);
+ this.addEventListener("mouseup", this._onmouseup);
+});
+
+qx.ui.treefullcontrol.AbstractTreeElement.ABSTRACT_CLASS = "qx.ui.treefullcontrol.AbstractTreeElement";
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.changeProperty({ name : "appearance",
+ type : "string",
+ defaultValue : "tree-element"
+ });
+
+/*!
+ The icons
+*/
+qx.OO.addProperty({ name : "icon",
+ type : "string"
+ });
+
+qx.OO.addProperty({ name : "iconSelected",
+ type : "string"
+ });
+
+/*!
+ The label/caption/text of the qx.ui.basic.Atom instance
+*/
+qx.OO.addProperty({ name : "label",
+ type : "string"
+ });
+
+/*!
+ Selected property
+*/
+qx.OO.addProperty({ name : "selected",
+ type : "boolean",
+ defaultValue : false
+ });
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyLabel = function(propValue, propOldValue, propData)
+{
+ if (this._labelObject) {
+ this._labelObject.setHtml(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifySelected = function(propValue, propOldValue, propData)
+{
+ if (propValue) {
+ this.addState("selected");
+ this._labelObject.addState("selected");
+ } else {
+ this.removeState("selected");
+ this._labelObject.removeState("selected");
+ }
+
+ var vTree = this.getTree();
+ if (!vTree._fastUpdate ||
+ (propOldValue && vTree._oldItem == this)) {
+ this._iconObject.setSource(this._evalCurrentIcon());
+
+ if (propValue) {
+ this._iconObject.addState("selected");
+ } else {
+ this._iconObject.removeState("selected");
+ }
+ }
+
+ var vManager = this.getTree().getManager();
+
+ if (propOldValue && vManager.getSelectedItem() == this)
+ {
+ vManager.deselectAll();
+ }
+ else if (propValue && vManager.getSelectedItem() != this)
+ {
+ vManager.setSelectedItem(this);
+ }
+
+ return true;
+}
+
+qx.Proto._evalCurrentIcon = function()
+{
+ if (this.getSelected() && this.getIconSelected()) {
+ return this.getIconSelected();
+ } else {
+ return this.getIcon() || "icon/16/file-new.png";
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getParentFolder = function()
+{
+ try {
+ return this.getParent().getParent();
+ } catch(ex) {}
+
+ return null;
+}
+
+qx.Proto.getLevel = function()
+{
+ var vParentFolder = this.getParentFolder();
+ return vParentFolder ? vParentFolder.getLevel() + 1 : null;
+}
+
+qx.Proto.getTree = function()
+{
+ var vParentFolder = this.getParentFolder();
+ return vParentFolder ? vParentFolder.getTree() : null;
+}
+
+qx.Proto.getIndentObject = function() {
+ return this._indentObject;
+}
+
+qx.Proto.getIconObject = function() {
+ return this._iconObject;
+}
+
+qx.Proto.getLabelObject = function() {
+ return this._labelObject;
+}
+
+/**
+ * Obtain the entire hierarchy of labels from the root down to the current
+ * node.
+ *
+ * @param
+ * vArr -
+ * When called by the user, arr should typically be an empty array. Each
+ * level from the current node upwards will push its label onto the array.
+ */
+qx.Proto.getHierarchy = function(vArr) {
+ // Add our label to the array
+ if (this._labelObject) {
+ vArr.unshift(this._labelObject.getHtml());
+ }
+
+ // Get the parent folder
+ var parent = this.getParentFolder();
+
+ // If it exists...
+ if (parent) {
+ // ... then add it and its ancestors' labels to the array.
+ parent.getHierarchy(vArr);
+ }
+
+ // Give 'em what they came for
+ return vArr;
+}
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ QUEUE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addToTreeQueue = function()
+{
+ var vTree = this.getTree();
+ if (vTree) {
+ vTree.addChildToTreeQueue(this);
+ }
+}
+
+qx.Proto.removeFromTreeQueue = function()
+{
+ var vTree = this.getTree();
+ if (vTree) {
+ vTree.removeChildFromTreeQueue(this);
+ }
+}
+
+qx.Proto.addToCustomQueues = function(vHint)
+{
+ this.addToTreeQueue();
+
+ qx.ui.layout.BoxLayout.prototype.addToCustomQueues.call(this, vHint);
+}
+
+qx.Proto.removeFromCustomQueues = function(vHint)
+{
+ this.removeFromTreeQueue();
+
+ qx.ui.layout.BoxLayout.prototype.removeFromCustomQueues.call(this, vHint);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPLAYBLE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyParent = function(propValue, propOldValue, propData)
+{
+ qx.ui.layout.BoxLayout.prototype._modifyParent.call(this, propValue, propOldValue, propData);
+
+ // Be sure to update previous folder also if it is closed currently
+ // (plus/minus symbol)
+ if (propOldValue &&
+ !propOldValue.isDisplayable() &&
+ propOldValue.getParent() &&
+ propOldValue.getParent().isDisplayable()) {
+ propOldValue.getParent().addToTreeQueue();
+ }
+
+ // Be sure to update new folder also if it is closed currently
+ // (plus/minus symbol)
+ if (propValue &&
+ !propValue.isDisplayable() &&
+ propValue.getParent() &&
+ propValue.getParent().isDisplayable()) {
+ propValue.getParent().addToTreeQueue();
+ }
+
+ return true;
+}
+
+qx.Proto._handleDisplayableCustom = function(vDisplayable, vParent, vHint)
+{
+ qx.ui.layout.BoxLayout.prototype._handleDisplayableCustom.call(this,
+ vDisplayable,
+ vParent,
+ vHint);
+
+ if (vHint)
+ {
+ var vParentFolder = this.getParentFolder();
+ var vPreviousParentFolder = this._previousParentFolder;
+
+ if (vPreviousParentFolder)
+ {
+ if (this._wasLastVisibleChild)
+ {
+ vPreviousParentFolder._updateIndent();
+ }
+ else if (!vPreviousParentFolder.hasContent())
+ {
+ vPreviousParentFolder.addToTreeQueue();
+ }
+ }
+
+ if (vParentFolder &&
+ vParentFolder.isDisplayable() &&
+ vParentFolder._initialLayoutDone) {
+ vParentFolder.addToTreeQueue();
+ }
+
+ if (this.isLastVisibleChild())
+ {
+ var vPrev = this.getPreviousVisibleSibling();
+
+ if (vPrev &&
+ vPrev instanceof qx.ui.treefullcontrol.AbstractTreeElement) {
+ vPrev._updateIndent();
+ }
+ }
+
+ if (vDisplayable) {
+ this._updateIndent();
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ this.getTree().getManager().handleMouseDown(this, e);
+ e.stopPropagation();
+}
+
+qx.Proto._onmouseup = qx.util.Return.returnTrue;
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ TREE FLUSH
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.flushTree = function()
+{
+ // store information for update process
+ this._previousParentFolder = this.getParentFolder();
+ this._wasLastVisibleChild = this.isLastVisibleChild();
+
+ // generate html for indent area
+ var vLevel = this.getLevel();
+ var vTree = this.getTree();
+ var vImage;
+ var vHtml = [];
+ var vCurrentObject = this;
+ var vMinLevel = 0;
+ var vMaxLevel = vLevel;
+
+ // If we're displaying the open/close button for the root node (normal)...
+ if (vTree.getRootOpenClose()) {
+ // ... then we need one more level
+ vMaxLevel = vLevel + 1;
+ }
+
+ // If we're not displaying the root node (creating virtual roots)...
+ if (vTree.hideNode()) {
+ // ... then start one level higher
+ vMinLevel = 1;
+ }
+
+ for (var i=vMinLevel; i<vMaxLevel; i++)
+ {
+ vImage = vCurrentObject.getIndentSymbol(vTree.getUseTreeLines(),
+ i,
+ vMinLevel,
+ vMaxLevel);
+
+ if (vImage)
+ {
+ vHtml.push("<img style=\"position:absolute;top:0px;left:");
+
+ // location of image; Root's image could be left of margin (invisible)
+ vHtml.push((vMaxLevel-i-1) * 19);
+
+ vHtml.push("px\" src=\"");
+ vHtml.push(this.BASE_URI);
+ vHtml.push(vImage);
+ vHtml.push(".");
+ vHtml.push("gif");
+ vHtml.push("\" />");
+ }
+
+ vCurrentObject = vCurrentObject.getParentFolder();
+ }
+
+ this._indentObject.setHtml(vHtml.join(""));
+ this._indentObject.setWidth((vMaxLevel - vMinLevel) * 19);
+}
+
+
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._indentObject)
+ {
+ this._indentObject.dispose();
+ this._indentObject = null;
+ }
+
+ if (this._iconObject)
+ {
+ this._iconObject.dispose();
+ this._iconObject = null;
+ }
+
+ if (this._labelObject)
+ {
+ this._labelObject.dispose();
+ this._labelObject = null;
+ }
+
+ this._previousParentFolder = null;
+
+ this.removeEventListener("mousedown", this._onmousedown);
+ this.removeEventListener("mouseup", this._onmouseup);
+
+ return qx.ui.layout.BoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/Tree.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/Tree.js
new file mode 100644
index 0000000000..912ede6d60
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/Tree.js
@@ -0,0 +1,539 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_treefullcontrol)
+
+************************************************************************ */
+
+/**
+ * qx.ui.treefullcontrol.Tree objects are tree root nodes but act like
+ * TreeFolder.
+ *
+ * @param treeRowStructure An instance of qx.ui.treefullcontrol.TreeRowStructure,
+ * defining the structure of this tree row.
+ */
+qx.OO.defineClass("qx.ui.treefullcontrol.Tree", qx.ui.treefullcontrol.TreeFolder,
+function(treeRowStructure)
+{
+ qx.ui.treefullcontrol.TreeFolder.call(this, treeRowStructure);
+
+ // ************************************************************************
+ // INITILISIZE MANAGER
+ // ************************************************************************
+ this._manager = new qx.manager.selection.TreeFullControlSelectionManager(this);
+
+
+ this._iconObject.setAppearance("tree-icon");
+ this._labelObject.setAppearance("tree-label");
+
+
+ // ************************************************************************
+ // DEFAULT STATE
+ // ************************************************************************
+ // The tree should be open by default
+ this.setOpen(true);
+
+ // Fix vertical alignment of empty tree
+ this.addToFolder();
+
+
+ // ************************************************************************
+ // KEY EVENT LISTENER
+ // ************************************************************************
+ this.addEventListener("keydown", this._onkeydown);
+ this.addEventListener("keypress", this._onkeypress);
+ this.addEventListener("keyup", this._onkeyup);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+qx.OO.addProperty({ name : "useDoubleClick",
+ type : "boolean",
+ defaultValue : false,
+ getAlias : "useDoubleClick"
+ });
+
+qx.OO.addProperty({ name : "useTreeLines",
+ type : "boolean",
+ defaultValue : true,
+ getAlias : "useTreeLines"
+ });
+
+/*!
+ In specific applications, it is desirable to omit tree lines for only
+ certain indentation levels. This property provides an array wherein the
+ index of the array corresponds to the indentation level, counted from left
+ to right; and the value of that element, if it contains, specifically, the
+ boolean value <i>true</i>, indicates that tree lines at that indentation
+ level are to be omitted. Any value of that element other than <i>true</i>,
+ or if an indentation level's index does not exist in the array, means that
+ tree lines should be displayed for that indentation level. (There are some
+ minor code efficiencies that are realized if this array is empty, so after
+ having set an element to <i>true</i> and desiring to reset the default
+ behavior, you should 'delete' the element rather than setting it to some
+ value other than <i>true</i>.)
+
+ If useTreeLines is <i>false</i>, then all tree lines are excluded and this
+ property is ignored.
+*/
+qx.OO.addProperty({ name : "excludeSpecificTreeLines",
+ type : "object",
+ defaultValue : []
+ });
+
+/*!
+ Hide the root (Tree) node. This differs from the visibility property in
+ that this property hides *only* the current node, not the node's children.
+*/
+qx.OO.addProperty({ name : "hideNode",
+ type : "boolean",
+ defaultValue : false,
+ getAlias : "hideNode"
+ });
+
+/*!
+ Whether the Root should have an open/close button. This may also be
+ used in conjunction with the hideNode property to provide for virtual root
+ nodes. In the latter case, be very sure that the virtual root nodes are
+ expanded programatically, since there will be no open/close button for the
+ user to open them.
+*/
+qx.OO.addProperty({ name : "rootOpenClose",
+ type : "boolean",
+ defaultValue : true
+ });
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER BINDING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getManager = function() {
+ return this._manager;
+}
+
+qx.Proto.getSelectedElement = function() {
+ return this.getManager().getSelectedItems()[0];
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ QUEUE HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.addChildToTreeQueue = function(vChild)
+{
+ if (!vChild._isInTreeQueue && !vChild._isDisplayable) {
+ this.debug("Ignoring invisible child: " + vChild);
+ }
+
+ if (!vChild._isInTreeQueue && vChild._isDisplayable)
+ {
+ qx.ui.core.Widget.addToGlobalWidgetQueue(this);
+
+ if (!this._treeQueue) {
+ this._treeQueue = {};
+ }
+
+ this._treeQueue[vChild.toHashCode()] = vChild;
+
+ vChild._isInTreeQueue = true;
+ }
+}
+
+qx.Proto.removeChildFromTreeQueue = function(vChild)
+{
+ if (vChild._isInTreeQueue)
+ {
+ if (this._treeQueue) {
+ delete this._treeQueue[vChild.toHashCode()];
+ }
+
+ delete vChild._isInTreeQueue;
+ }
+}
+
+qx.Proto.flushWidgetQueue = function() {
+ this.flushTreeQueue();
+}
+
+qx.Proto.flushTreeQueue = function()
+{
+ if (!qx.lang.Object.isEmpty(this._treeQueue))
+ {
+ for (var vHashCode in this._treeQueue)
+ {
+ // this.debug("Flushing Tree Child: " + this._treeQueue[vHashCode]);
+ this._treeQueue[vHashCode].flushTree();
+ delete this._treeQueue[vHashCode]._isInTreeQueue;
+ }
+
+ delete this._treeQueue;
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyUseTreeLines = function(propValue, propOldValue, propData)
+{
+ if (this._initialLayoutDone) {
+ this._updateIndent();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyHideNode = function(propValue, propOldValue, propData)
+{
+ if (! propValue) {
+ this._horizontalLayout.setHeight(this._horizontalLayout.originalHeight);
+ this._horizontalLayout.show();
+ } else {
+ this._horizontalLayout.originalHeight = this._horizontalLayout.getHeight();
+ this._horizontalLayout.setHeight(0);
+ this._horizontalLayout.hide();
+ }
+
+ if (this._initialLayoutDone) {
+ this._updateIndent();
+ }
+
+ return true;
+}
+
+qx.Proto._modifyRootOpenClose = function(propValue, propOldValue, propData)
+{
+ if (this._initialLayoutDone) {
+ this._updateIndent();
+ }
+
+ return true;
+}
+
+// Override getter so we can return a clone of the array. Otherwise, the
+// setter finds the identical array (after user modifications) and the modify
+// function doesn't get called.
+qx.Proto.getExcludeSpecificTreeLines = function()
+{
+ var vName = "excludeSpecificTreeLines";
+ var vUpName = qx.lang.String.toFirstUp(vName);
+ var vStorageField = "_value" + vUpName;
+
+ return this[vStorageField].slice(0);
+}
+
+qx.Proto._modifyExcludeSpecificTreeLines = function(propValue,
+ propOldValue,
+ propData)
+{
+ if (this._initialLayoutDone) {
+ this._updateIndent();
+ }
+
+ return true;
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getTree = function() {
+ return this;
+}
+
+qx.Proto.getParentFolder = function() {
+ return null;
+}
+
+qx.Proto.getLevel = function() {
+ return 0;
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ COMMON CHECKERS
+---------------------------------------------------------------------------
+*/
+
+qx.ui.treefullcontrol.Tree.isTreeFolder = function(vObject) {
+ return (vObject &&
+ vObject instanceof qx.ui.treefullcontrol.TreeFolder &&
+ !(vObject instanceof qx.ui.treefullcontrol.Tree));
+}
+
+qx.ui.treefullcontrol.Tree.isOpenTreeFolder = function(vObject) {
+ return (vObject instanceof qx.ui.treefullcontrol.TreeFolder &&
+ vObject.getOpen() &&
+ vObject.hasContent());
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT HANDLER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onkeydown = function(e)
+{
+ var vManager = this.getManager();
+ var vSelectedItem = vManager.getSelectedItem();
+
+ if (e.getKeyIdentifier() == "Enter")
+ {
+ e.preventDefault();
+ if (qx.ui.treefullcontrol.Tree.isTreeFolder(vSelectedItem)) {
+ return vSelectedItem.toggle();
+ }
+ }
+}
+
+
+qx.Proto._onkeypress = function(e)
+{
+ var vManager = this.getManager();
+ var vSelectedItem = vManager.getSelectedItem();
+
+ switch(e.getKeyIdentifier())
+ {
+ case "Left":
+ e.preventDefault();
+
+ if (qx.ui.treefullcontrol.Tree.isTreeFolder(vSelectedItem))
+ {
+ if (!vSelectedItem.getOpen())
+ {
+ var vParent = vSelectedItem.getParentFolder();
+ if (vParent instanceof qx.ui.treefullcontrol.TreeFolder) {
+ if (!(vParent instanceof qx.ui.treefullcontrol.Tree)) {
+ vParent.close();
+ }
+
+ this.setSelectedElement(vParent);
+ }
+ }
+ else
+ {
+ return vSelectedItem.close();
+ }
+ }
+ else if (vSelectedItem instanceof qx.ui.treefullcontrol.TreeFile)
+ {
+ var vParent = vSelectedItem.getParentFolder();
+ if (vParent instanceof qx.ui.treefullcontrol.TreeFolder) {
+ if (!(vParent instanceof qx.ui.treefullcontrol.Tree)) {
+ vParent.close();
+ }
+
+ this.setSelectedElement(vParent);
+ }
+ }
+
+ break;
+
+ case "Right":
+ e.preventDefault();
+
+ if (qx.ui.treefullcontrol.Tree.isTreeFolder(vSelectedItem))
+ {
+ if (!vSelectedItem.getOpen())
+ {
+ return vSelectedItem.open();
+ }
+ else if (vSelectedItem.hasContent())
+ {
+ var vFirst = vSelectedItem.getFirstVisibleChildOfFolder();
+ this.setSelectedElement(vFirst);
+
+ if (vFirst instanceof qx.ui.tree.TreeFolder) {
+ vFirst.open();
+ }
+
+ return;
+ }
+ }
+
+ break;
+
+ default:
+ if (!this._fastUpdate)
+ {
+ this._fastUpdate = true;
+ this._oldItem = vSelectedItem;
+ }
+
+ vManager.handleKeyPress(e);
+ }
+};
+
+
+qx.Proto._onkeyup = function(e)
+{
+ if (this._fastUpdate)
+ {
+ var vNewItem = this.getManager().getSelectedItem();
+
+ if (! vNewItem) {
+ return;
+ }
+
+ vNewItem.getIconObject().addState("selected");
+
+ delete this._fastUpdate;
+ delete this._oldItem;
+ }
+}
+
+qx.Proto.getLastTreeChild = function()
+{
+ var vLast = this;
+
+ while (vLast instanceof qx.ui.treefullcontrol.AbstractTreeElement)
+ {
+ if (!(vLast instanceof qx.ui.treefullcontrol.TreeFolder) ||
+ !vLast.getOpen()) {
+ return vLast;
+ }
+
+ vLast = vLast.getLastVisibleChildOfFolder();
+ }
+
+ return null;
+}
+
+qx.Proto.getFirstTreeChild = function() {
+ return this;
+}
+
+qx.Proto.setSelectedElement = function(vElement)
+{
+ var vManager = this.getManager();
+
+ vManager.setSelectedItem(vElement);
+ vManager.setLeadItem(vElement);
+}
+
+/* Override getHierarchy: do not add label if root node is hidden */
+qx.Proto.getHierarchy = function(vArr)
+{
+ if (! this.hideNode() && this._labelObject) {
+ vArr.unshift(this._labelObject.getHtml());
+ }
+ return vArr;
+}
+
+
+qx.Proto.getIndentSymbol = function(vUseTreeLines, vColumn, vLastColumn)
+{
+ if (vColumn == vLastColumn &&
+ (this.hasContent() || this.getAlwaysShowPlusMinusSymbol()))
+ {
+ if (! vUseTreeLines)
+ {
+ return this.getOpen() ? "minus" : "plus";
+ }
+ else
+ {
+ return this.getOpen() ? "only_minus" : "only_plus";
+ }
+ }
+ else
+ {
+ return null;
+ }
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("keydown", this._onkeydown);
+ this.removeEventListener("keypress", this._onkeypress);
+ this.removeEventListener("keyup", this._onkeyup);
+
+ if (this._manager)
+ {
+ this._manager.dispose();
+ this._manager = null;
+ }
+
+ delete this._oldItem;
+
+ return qx.ui.treefullcontrol.TreeFolder.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFile.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFile.js
new file mode 100644
index 0000000000..bf38a87c47
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFile.js
@@ -0,0 +1,81 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_treefullcontrol)
+
+************************************************************************ */
+
+/**
+ * qx.ui.treefullcontrol.TreeFile objects are terminal tree rows (i.e. no
+ * sub-trees)
+ *
+ * @param
+ * treeRowStructure -
+ * An instance of qx.ui.treefullcontrol.TreeRowStructure, defining the
+ * structure of this tree row.
+ */
+qx.OO.defineClass("qx.ui.treefullcontrol.TreeFile", qx.ui.treefullcontrol.AbstractTreeElement,
+function(treeRowStructure)
+{
+ qx.ui.treefullcontrol.AbstractTreeElement.call(this, treeRowStructure);
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INDENT HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getIndentSymbol = function(vUseTreeLines,
+ vColumn,
+ vFirstColumn,
+ vLastColumn)
+{
+ var vLevel = this.getLevel();
+ var vExcludeList = this.getTree().getExcludeSpecificTreeLines();
+ var vExclude = vExcludeList[vLastColumn - vColumn - 1];
+
+ if (vUseTreeLines && ! (vExclude === true))
+ {
+ if (vColumn == vFirstColumn)
+ {
+ return this.isLastChild() ? "end" : "cross";
+ }
+ else
+ {
+ return "line";
+ }
+ }
+
+ return null;
+}
+
+qx.Proto._updateIndent = function() {
+ this.addToTreeQueue();
+}
+
+qx.Proto.getItems = function() {
+ return [this];
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFolder.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFolder.js
new file mode 100644
index 0000000000..93a50c27bd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeFolder.js
@@ -0,0 +1,651 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_treefullcontrol)
+
+************************************************************************ */
+
+/**
+ * qx.ui.treefullcontrol.TreeFolder objects are tree rows which may contain
+ * sub-trees
+ *
+ * @param
+ * treeRowStructure -
+ * An instance of qx.ui.treefullcontrol.TreeRowStructure, defining the
+ * structure of this tree row.
+ *
+ * @event treeOpenWithContent {qx.event.type.DataEvent}
+ * @event treeOpenWhileEmpty {qx.event.type.DataEvent}
+ * @event treeClose {qx.event.type.DataEvent}
+ */
+qx.OO.defineClass("qx.ui.treefullcontrol.TreeFolder", qx.ui.treefullcontrol.AbstractTreeElement,
+function(treeRowStructure)
+{
+ qx.ui.treefullcontrol.AbstractTreeElement.call(this, treeRowStructure);
+
+ // Save the tree row field order. We'll need it to create children structure.
+ this._treeRowStructureFields = treeRowStructure._fields;
+
+ this._iconObject.setAppearance("tree-folder-icon");
+ this._labelObject.setAppearance("tree-folder-label");
+
+ this.addEventListener("dblclick", this._ondblclick);
+
+ // Remapping of add/remove methods
+ this.add = this.addToFolder;
+ this.addBefore = this.addBeforeToFolder;
+ this.addAfter = this.addAfterToFolder;
+ this.addAt = this.addAtToFolder;
+ this.addAtBegin = this.addAtBeginToFolder;
+ this.addAtEnd = this.addAtEndToFolder;
+});
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+
+qx.OO.changeProperty({ name : "appearance",
+ type : "string",
+ defaultValue : "tree-folder"
+ });
+
+qx.OO.changeProperty({ name : "icon",
+ type : "string"
+ });
+
+qx.OO.changeProperty({ name : "iconSelected",
+ type : "string"
+ });
+
+qx.OO.addProperty({ name : "open",
+ type : "boolean",
+ defaultValue : false
+ });
+
+qx.OO.addProperty({ name : "alwaysShowPlusMinusSymbol",
+ type : "boolean",
+ defaultValue : false
+ });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.hasContent = function() {
+ return (this._containerObject &&
+ this._containerObject.getChildrenLength() > 0);
+}
+
+qx.Proto.open = function()
+{
+ if (this.getOpen()) {
+ return;
+ }
+
+ if (this.hasContent())
+ {
+ // If there are listeners waiting for a treeOpenWithContent event...
+ if (this.getTree().hasEventListeners("treeOpenWithContent")) {
+ // ... then issue the event
+ this.getTree().dispatchEvent(new qx.event.type.DataEvent("treeOpenWithContent", this), true);
+ }
+
+ this.getTopLevelWidget().setGlobalCursor("progress");
+ qx.client.Timer.once(this._openCallback, this, 0);
+ }
+ else
+ {
+ // If there are listeners waiting for a treeOpenWithContent event...
+ if (this.getTree().hasEventListeners("treeOpenWhileEmpty")) {
+ // ... then issue the event
+ this.getTree().dispatchEvent(new qx.event.type.DataEvent("treeOpenWhileEmpty", this), true);
+ }
+
+ this.setOpen(true);
+ }
+}
+
+qx.Proto.close = function()
+{
+ // If there are listeners waiting for a treeClose event...
+ if (this.getTree().hasEventListeners("treeClose")) {
+ // ... then issue the event
+ this.getTree().dispatchEvent(new qx.event.type.DataEvent("treeClose", this), true);
+ }
+
+ this.setOpen(false);
+}
+
+qx.Proto.toggle = function()
+{
+ this.getOpen() ? this.close() : this.open();
+}
+
+qx.Proto._openCallback = function()
+{
+ this.setOpen(true);
+ qx.ui.core.Widget.flushGlobalQueues();
+ this.getTopLevelWidget().setGlobalCursor(null);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._createChildrenStructure = function()
+{
+ this.setAppearance(this instanceof qx.ui.treefullcontrol.Tree
+ ? "tree-container"
+ : "tree-folder-container");
+
+ if (!this._horizontalLayout)
+ {
+ this.setOrientation("vertical");
+
+ // Create a horizontal layout for this tree row
+ this._horizontalLayout = new qx.ui.layout.HorizontalBoxLayout;
+ this._horizontalLayout.setWidth(null);
+ this._horizontalLayout.setParent(this);
+ this._horizontalLayout.setAnonymous(true);
+ this._horizontalLayout.setAppearance(this instanceof qx.ui.treefullcontrol.Tree
+ ? "tree"
+ : "tree-folder");
+
+ // Move the row fields into the horizontal layout
+ for (var i = 0; i < this._treeRowStructureFields.length; i++)
+ {
+ this._treeRowStructureFields[i].setParent(this._horizontalLayout);
+ }
+
+ // We don't need the tree row structure any more.
+ this._treeRowStructureFields = null;
+ }
+
+ if (!this._containerObject)
+ {
+ // Create a veritcal box layout for all of this folder's children
+ this._containerObject = new qx.ui.layout.VerticalBoxLayout;
+ this._containerObject.setWidth(null);
+ this._containerObject.setAnonymous(true);
+
+ // it should be faster to first handle display,
+ // because the default display value is true and if we first
+ // setup the parent the logic do all to make the
+ // widget first visible and then, if the folder is not
+ // opened again invisible.
+ this._containerObject.setDisplay(this.getOpen());
+ this._containerObject.setParent(this);
+
+ // remap remove* functions
+ this.remapChildrenHandlingTo(this._containerObject);
+ }
+}
+
+qx.Proto._handleChildMove = function(vChild, vRelationIndex, vRelationChild)
+{
+ if (vChild.isDisplayable())
+ {
+ var vChildren = this._containerObject.getChildren();
+ var vOldChildIndex = vChildren.indexOf(vChild);
+
+ if (vOldChildIndex != -1)
+ {
+ if (vRelationChild) {
+ vRelationIndex = vChildren.indexOf(vRelationChild);
+ }
+
+ if (vRelationIndex == vChildren.length-1)
+ {
+ vChild._updateIndent();
+
+ // Update indent of previous last child
+ this._containerObject.getLastVisibleChild()._updateIndent();
+ }
+ else if (vChild._wasLastVisibleChild)
+ {
+ vChild._updateIndent();
+
+ // Update indent for new last child
+ var vPreviousSibling = vChild.getPreviousVisibleSibling();
+ if (vPreviousSibling) {
+ vPreviousSibling._updateIndent();
+ }
+ }
+ }
+ }
+}
+
+qx.Proto.addToFolder = function()
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject) {
+ return this._containerObject.add.apply(this._containerObject, arguments);
+ }
+}
+
+qx.Proto.addBeforeToFolder = function(vChild, vBefore)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ this._handleChildMove(vChild, null, vBefore);
+ return this._containerObject.addBefore.apply(this._containerObject,
+ arguments);
+ }
+}
+
+qx.Proto.addAfterToFolder = function(vChild, vAfter)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ this._handleChildMove(vChild, null, vAfter);
+ return this._containerObject.addAfter.apply(this._containerObject,
+ arguments);
+ }
+}
+
+qx.Proto.addAtToFolder = function(vChild, vIndex)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ this._handleChildMove(vChild, vIndex);
+ return this._containerObject.addAt.apply(this._containerObject, arguments);
+ }
+}
+
+qx.Proto.addAtBeginToFolder = function(vChild) {
+ return this.addAtToFolder(vChild, 0);
+}
+
+qx.Proto.addAtEndToFolder = function(vChild)
+{
+ this._createChildrenStructure();
+
+ if (this._containerObject)
+ {
+ var vLast = this._containerObject.getLastChild();
+
+ if (vLast)
+ {
+ this._handleChildMove(vChild, null, vLast);
+ return this._containerObject.addAfter.call(this._containerObject,
+ vChild,
+ vLast);
+ }
+ else
+ {
+ return this.addAtBeginToFolder(vChild);
+ }
+ }
+}
+
+qx.Proto._remappingChildTable = [ "remove", "removeAt", "removeAll" ];
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CHILDREN UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getContainerObject = function()
+{
+ return this._containerObject;
+}
+
+qx.Proto.getHorizontalLayout = function()
+{
+ return this._horizontalLayout;
+}
+
+qx.Proto.getFirstVisibleChildOfFolder = function()
+{
+ if (this._containerObject) {
+ return this._containerObject.getFirstChild();
+ }
+}
+
+qx.Proto.getLastVisibleChildOfFolder = function()
+{
+ if (this._containerObject) {
+ return this._containerObject.getLastChild();
+ }
+}
+
+qx.Proto.getItems = function()
+{
+ var a = [this];
+
+ if (this._containerObject)
+ {
+ var ch = this._containerObject.getVisibleChildren();
+
+ for (var i=0, chl=ch.length; i<chl; i++) {
+ a = a.concat(ch[i].getItems());
+ }
+ }
+
+ return a;
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._evalCurrentIcon = function()
+{
+ if (this.getSelected()) {
+ return this.getIconSelected() || "icon/16/folder-open.png";
+ } else {
+ return this.getIcon() || "icon/16/folder.png";
+ }
+}
+
+qx.Proto._modifyOpen = function(propValue, propOldValue, propData)
+{
+ // we need the whole indent process if certain tree lines are to be excluded
+ if (this.getTree().getExcludeSpecificTreeLines().length > 0) {
+ this._updateIndent();
+ } else {
+ this._updateLastColumn();
+ }
+
+ if (this._containerObject) {
+ this._containerObject.setDisplay(propValue);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyAlwaysShowPlusMinusSymbol = function(propValue, propOldValue, propData)
+{
+ var t = this.getTree();
+ if (t) {
+ // we need the whole indent process if only certain tree lines are to be
+ // excluded
+ if (t.getExcludeSpecificTreeLines().length > 0) {
+ this._updateIndent();
+ } else {
+ this._updateLastColumn();
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._updateLastColumn = function()
+{
+ if (this._indentObject)
+ {
+ var vElement = this._indentObject.getElement();
+
+ if (vElement && vElement.firstChild) {
+ vElement.firstChild.src =
+ (this.BASE_URI +
+ this.getIndentSymbol(this.getTree().getUseTreeLines(), 0, 0, 0) +
+ ".gif");
+ }
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onmousedown = function(e)
+{
+ var vOriginalTarget = e.getOriginalTarget();
+
+ switch(vOriginalTarget)
+ {
+ case this._indentObject:
+ if (this._indentObject.getElement().firstChild == e.getDomTarget())
+ {
+ this.getTree().getManager().handleMouseDown(this, e);
+ this.toggle();
+ }
+
+ break;
+
+ case this._containerObject:
+ break;
+
+ case this:
+ if (this._containerObject) {
+ break;
+ }
+
+ // no break here
+
+ default:
+ this.getTree().getManager().handleMouseDown(this, e);
+ }
+
+ e.stopPropagation();
+}
+
+qx.Proto._onmouseup = function(e)
+{
+ var vOriginalTarget = e.getOriginalTarget();
+
+ switch(vOriginalTarget)
+ {
+ case this._indentObject:
+ case this._containerObject:
+ case this:
+ break;
+
+ default:
+ if (!this.getTree().getUseDoubleClick()) {
+ this.open();
+ }
+ }
+}
+
+qx.Proto._ondblclick = function(e)
+{
+ if (!this.getTree().getUseDoubleClick()) {
+ return;
+ }
+
+ this.toggle();
+ e.stopPropagation();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ INDENT HELPER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getIndentSymbol = function(vUseTreeLines,
+ vColumn,
+ vFirstColumn,
+ vLastColumn)
+{
+ var vLevel = this.getLevel();
+ var vExcludeList = this.getTree().getExcludeSpecificTreeLines();
+ var vExclude = vExcludeList[vLastColumn - vColumn - 1];
+
+ if (vColumn == vFirstColumn)
+ {
+ if (this.hasContent() || this.getAlwaysShowPlusMinusSymbol())
+ {
+ // If tree lines were not requested, don't display them
+ if (!vUseTreeLines)
+ {
+ return this.getOpen() ? "minus" : "plus";
+ }
+
+
+ // If this is the first level under the root...
+ if (vLevel == 1) {
+ // ... and the root is not being displayed and this is the first
+ // child...
+ var vParentFolder = this.getParentFolder();
+ if (vParentFolder &&
+ !vParentFolder._horizontalLayout.getVisibility() &&
+ this.isFirstChild())
+ {
+ //... then if this is also the last (i.e. only) child, use no tree
+ // lines; otherwise, use descender lines but no ascender.
+ if (this.isLastChild() || vExclude === true)
+ {
+ return this.getOpen() ? "only_minus" : "only_plus";
+ }
+ else
+ {
+ return this.getOpen() ? "start_minus" : "start_plus";
+ }
+ }
+ }
+
+ if (vExclude === true)
+ {
+ return this.getOpen() ? "only_minus" : "only_plus";
+ }
+ else if (this.isLastChild())
+ {
+ return this.getOpen() ? "end_minus" : "end_plus";
+ }
+ else
+ {
+ return this.getOpen() ? "cross_minus" : "cross_plus";
+ }
+ }
+ else if (vUseTreeLines && ! (vExclude === true))
+ {
+ return this.isLastChild() ? "end" : "cross";
+ }
+ }
+ else
+ {
+ if (vUseTreeLines && ! this.isLastChild()) {
+ if (vExclude === true) {
+ return null;
+ }
+ return "line";
+ }
+ return null;
+ }
+}
+
+qx.Proto._updateIndent = function()
+{
+ // Intentionally bypass superclass; the _updateIndent we want is in TreeFile
+ qx.ui.treefullcontrol.TreeFile.prototype._updateIndent.call(this);
+
+ if (!this._containerObject) {
+ return;
+ }
+
+ var ch = this._containerObject.getVisibleChildren();
+ for (var i=0, l=ch.length; i<l; i++) {
+ ch[i]._updateIndent();
+ }
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this.removeEventListener("dblclick", this._ondblclick);
+
+ if (this._horizontalLayout)
+ {
+ this._horizontalLayout.dispose();
+ this._horizontalLayout = null;
+ }
+
+ if (this._containerObject)
+ {
+ this._containerObject.dispose();
+ this._containerObject = null;
+ }
+
+ return qx.ui.treefullcontrol.AbstractTreeElement.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeRowStructure.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeRowStructure.js
new file mode 100644
index 0000000000..4fc32ef31e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/treefullcontrol/TreeRowStructure.js
@@ -0,0 +1,260 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_treefullcontrol)
+
+************************************************************************ */
+
+/**
+ * The structure of a tree row.
+ *
+ * This is a singleton class. The constructor is not accessed by users;
+ * instead, to obtain the one and only TreeRowStructure object, call either
+ *
+ * qx.ui.treefullcontrol.TreeRowStructure.newRow()
+ *
+ * or
+ *
+ * qx.ui.treefullcontrol.TreeRowStructure.standard().
+ *
+ * The structure of a tree row is provided by a
+ * qx.ui.treefullcontrol.TreeRowStructure. The order of elements added to
+ * this object is the order in which they will be presented in a tree row.
+ *
+ * The three standard parts of a tree: the indentation (and its associated
+ * tree-lines, if enabled), the icon (selected or unselected), and the label
+ * are added to the structure in the desired order by calling, respectively,
+ * the methods addIndent(), addIcon() and addLabel().
+ *
+ * By default, indentation will appear at the beginning of the tree row. This
+ * can be changed by calling the addIndent() method after having calling other
+ * add*() methods on this object. If indentation is to be at the beginning of
+ * the tree row, simply do not call addIndent().
+ *
+ * Any other object which is valid within a qx.ui.layout.HorizontalBoxLayout
+ * may be added to the structure using addObject(). If the object has no
+ * special treatment, it may be made anonymous with obj.SetAnonymous(true).
+ * Otherwise, all handling for the object should be done by the application.
+ *
+ * A "standard" (traditional) tree row would be generated like this:
+ *
+ * treeRowStructure = qx.ui.treefullcontrol.TreeRowStructure.standard("Trash");
+ *
+ * which equates to issuing these commands:
+ *
+ * treeRowStructure = qx.ui.treefullcontrol.TreeRowStructure.newRow();
+ *
+ * //treeRowStructure.addIndent() // defaults to here; no need to call
+ * treeRowStructure.addIcon();
+ * treeRowStructure.addLabel("Trash");
+ *
+ * The former method is typically preferred.
+ *
+ * An example of a more sophisticated structure:
+ *
+ * treeRowStructure = qx.ui.treefullcontrol.TreeRowStructure.newRow();
+ *
+ * // A left-justified icon
+ * obj = new qx.ui.basic.Image("icon/16/alarm.png");
+ * treeRowStructure.addObject(obj, true);
+ *
+ * // Here's our indentation and tree-lines
+ * treeRowStructure.addIndent();
+ *
+ * // The standard tree icon follows
+ * treeRowStructure.addIcon("icon/16/desktop.png","icon/16/dictionary.png");
+ *
+ * // Right after the tree icon is a checkbox
+ * obj = new qx.ui.form.CheckBox(null, 23, null, false);
+ * obj.setPadding(0, 0);
+ * treeRowStructure.addObject(obj, true);
+ *
+ * // The label
+ * treeRowStructure.addLabel("Trash");
+ *
+ * // All else should be right justified
+ * obj = new qx.ui.basic.HorizontalSpacer;
+ * treeRowStructure.addObject(obj, true);
+ *
+ * // Add a file size, date and mode
+ * obj = new qx.ui.basic.Label("23kb");
+ * obj.setWidth(50);
+ * treeRowStructure.addObject(obj, true);
+ * obj = new qx.ui.basic.Label("11 Sept 1959");
+ * obj.setWidth(150);
+ * treeRowStructure.addObject(obj, true);
+ * obj = new qx.ui.basic.Label("-rw-r--r--");
+ * obj.setWidth(80);
+ * treeRowStructure.addObject(obj, true);
+ */
+
+qx.OO.defineClass("qx.ui.treefullcontrol.TreeRowStructure", qx.core.Object,
+function()
+{
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Prepare to define a new row.
+ *
+ * This reinitializes the singleton TreeRowStructure so that it is ready to
+ * define a new tree row.
+ *
+ * @return The singleton itself, purely for convenience.
+ */
+qx.Proto.newRow = function()
+{
+ /* Create the indent, icon, and label objects */
+ this._indentObject = new qx.ui.embed.HtmlEmbed;
+ this._iconObject = new qx.ui.basic.Image;
+ this._labelObject = new qx.ui.basic.Label;
+
+ /* Create an object to hold the ordering of row objects */
+ this._fields = new Array;
+
+ /* Create an object to hold the icon names */
+ this._icons = new Object;
+
+ /* Initially assume that indentation goes at the beginning of the row */
+ this._fields.push(this._indentObject);
+
+ /* Set initial flags */
+ this._indentAdded = false;
+ this._iconAdded = false;
+ this._labelAdded = false;
+
+ /* Return the singleton (from which we were called) */
+ return this;
+}
+
+/**
+ * Define a new row with the 'standard' structure.
+ *
+ * This reinitializes the singleton TreeRowStructure to the state of a
+ * standard'or traditional tree row:
+ * - indentation
+ * - icon
+ * - label
+ *
+ * The icon parameters may be omitted in which case the defaults will be
+ * used. If the label parameter is omitted, no label will appear.
+ *
+ * @param vLabel {string} The label text
+ * @param vIcon {string} Relative path to the 'non-selected' icon
+ * @param vIconSelected {string} Relative path to the 'selected' icon
+ *
+ * @return The singleton itself, purely for convenience.
+ */
+qx.Proto.standard = function(vLabel, vIcon, vIconSelected)
+{
+ this.newRow();
+ this.addIcon(vIcon, vIconSelected);
+ this.addLabel(vLabel);
+
+ return this;
+}
+
+qx.Proto.addIndent = function()
+{
+ /* If the assumed indent object is in use... */
+ if (! this._indentAdded)
+ {
+ /* ... then remove it. */
+ this._fields.shift();
+ this._indentAdded = true;
+ }
+ else
+ {
+ throw new Error("Indent object added more than once.");
+ }
+
+ /* Add the indentation to the structure */
+ this._fields.push(this._indentObject);
+}
+
+qx.Proto.addIcon = function(vIcon, vIconSelected)
+{
+ /* Ensure only one standard icon is added */
+ if (! this._iconAdded)
+ {
+ this._iconAdded = true;
+ }
+ else
+ {
+ throw new Error("Icon object added more than once.");
+ }
+
+ /* Track the two icon names */
+ this._icons.unselected = vIcon;
+ this._icons.selected = vIconSelected;
+
+ /* Add the icon to the structure */
+ this._fields.push(this._iconObject);
+}
+
+qx.Proto.addLabel = function(vLabel)
+{
+ /* Ensure only one standard label is added */
+ if (! this._labelAdded)
+ {
+ this._labelAdded = true;
+ }
+ else
+ {
+ throw new Error("Label added more than once.");
+ }
+
+ /* Track the label text */
+ this._label = vLabel;
+
+ /* Add the label to the structure */
+ this._fields.push(this._labelObject);
+}
+
+/*
+ * Add an object to the tree row structure. For convenience, vAnonymous can
+ * be provided, and if a boolean value is provided, vObj.setAnonymous() is
+ * called with the provided value. If the object has already been
+ * setAnonymous or if there is no need to do so, then provide no value for
+ * vAnonymous or pass 'null'.
+ */
+qx.Proto.addObject = function(vObj, vAnonymous)
+{
+ /* Is requested, set this object's anonymous state */
+ if (typeof vAnonymous == "boolean")
+ {
+ vObj.setAnonymous(vAnonymous);
+ }
+
+ /* Add this user-specified object to the structure */
+ this._fields.push(vObj);
+}
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/window/Window.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/window/Window.js
new file mode 100644
index 0000000000..3f55963727
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/ui/window/Window.js
@@ -0,0 +1,1441 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(ui_window)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.ui.window.Window", qx.ui.popup.Popup,
+function(vCaption, vIcon, vWindowManager)
+{
+ qx.ui.popup.Popup.call(this);
+
+ // ************************************************************************
+ // FUNCTIONAL STYLE
+ // ************************************************************************
+
+ this.setMinWidth("auto");
+ this.setMinHeight("auto");
+ this.setAutoHide(false);
+
+
+
+ // ************************************************************************
+ // MANAGER
+ // ************************************************************************
+
+ // Init Focus Manager
+ this.activateFocusRoot();
+
+ // Init Window Manager
+ this.setWindowManager(vWindowManager || qx.ui.window.Window.getDefaultWindowManager());
+
+
+
+ // ************************************************************************
+ // RESIZE AND MOVE FRAME
+ // ************************************************************************
+
+ var f = this._frame = new qx.ui.basic.Terminator;
+ f.setAppearance("window-resize-frame");
+
+
+ // ************************************************************************
+ // LAYOUT
+ // ************************************************************************
+
+ var l = this._layout = new qx.ui.layout.VerticalBoxLayout;
+ l.setEdge(0);
+ this.add(l);
+
+
+ // ************************************************************************
+ // CAPTIONBAR
+ // ************************************************************************
+
+ var cb = this._captionBar = new qx.ui.layout.HorizontalBoxLayout;
+ cb.setAppearance("window-captionbar");
+ l.add(cb);
+
+
+ // ************************************************************************
+ // CAPTIONICON
+ // ************************************************************************
+
+ if (qx.util.Validation.isValidString(vIcon))
+ {
+ var ci = this._captionIcon = new qx.ui.basic.Image(vIcon);
+ ci.setAppearance("window-captionbar-icon");
+ cb.add(ci);
+ }
+
+
+ // ************************************************************************
+ // CAPTIONTITLE
+ // ************************************************************************
+
+ var ct = this._captionTitle = new qx.ui.basic.Label(vCaption);
+ ct.setAppearance("window-captionbar-title");
+ ct.setSelectable(false);
+ cb.add(ct);
+
+
+ // ************************************************************************
+ // CAPTIONFLEX
+ // ************************************************************************
+
+ var cf = this._captionFlex = new qx.ui.basic.HorizontalSpacer;
+ cb.add(cf);
+
+
+ // ************************************************************************
+ // CAPTIONBUTTONS: MINIMIZE
+ // ************************************************************************
+
+ var bm = this._minimizeButton = new qx.ui.form.Button(null, "widget/window/minimize.gif");
+
+ bm.setAppearance("window-captionbar-minimize-button");
+ bm.setTabIndex(-1);
+
+ bm.addEventListener("execute", this._onminimizebuttonclick, this);
+ bm.addEventListener("mousedown", this._onbuttonmousedown, this);
+
+ cb.add(bm);
+
+
+ // ************************************************************************
+ // CAPTIONBUTTONS: RESTORE
+ // ************************************************************************
+
+ var br = this._restoreButton = new qx.ui.form.Button(null, "widget/window/restore.gif");
+
+ br.setAppearance("window-captionbar-restore-button");
+ br.setTabIndex(-1);
+
+ br.addEventListener("execute", this._onrestorebuttonclick, this);
+ br.addEventListener("mousedown", this._onbuttonmousedown, this);
+
+ // don't add initially
+ // cb.add(br);
+
+
+ // ************************************************************************
+ // CAPTIONBUTTONS: MAXIMIZE
+ // ************************************************************************
+
+ var bx = this._maximizeButton = new qx.ui.form.Button(null, "widget/window/maximize.gif");
+
+ bx.setAppearance("window-captionbar-maximize-button");
+ bx.setTabIndex(-1);
+
+ bx.addEventListener("execute", this._onmaximizebuttonclick, this);
+ bx.addEventListener("mousedown", this._onbuttonmousedown, this);
+
+ cb.add(bx);
+
+
+ // ************************************************************************
+ // CAPTIONBUTTONS: CLOSE
+ // ************************************************************************
+
+ var bc = this._closeButton = new qx.ui.form.Button(null, "widget/window/close.gif");
+
+ bc.setAppearance("window-captionbar-close-button");
+ bc.setTabIndex(-1);
+
+ bc.addEventListener("execute", this._onclosebuttonclick, this);
+ bc.addEventListener("mousedown", this._onbuttonmousedown, this);
+
+ cb.add(bc);
+
+
+ // ************************************************************************
+ // PANE
+ // ************************************************************************
+
+ var p = this._pane = new qx.ui.layout.CanvasLayout;
+ p.setHeight("1*");
+ p.setOverflow("hidden");
+ l.add(p);
+
+
+ // ************************************************************************
+ // STATUSBAR
+ // ************************************************************************
+
+ var sb = this._statusBar = new qx.ui.layout.HorizontalBoxLayout;
+ sb.setAppearance("window-statusbar");
+
+
+ // ************************************************************************
+ // STATUSTEXT
+ // ************************************************************************
+
+ var st = this._statusText = new qx.ui.basic.Label("Ready");
+ st.setAppearance("window-statusbar-text");
+ st.setSelectable(false);
+ sb.add(st);
+
+
+ // ************************************************************************
+ // INIT
+ // ************************************************************************
+
+ this.setCaption(vCaption);
+ this.setIcon(vIcon);
+
+
+ // ************************************************************************
+ // EVENTS: WINDOW
+ // ************************************************************************
+
+ this.addEventListener("mousedown", this._onwindowmousedown, this);
+ this.addEventListener("mouseup", this._onwindowmouseup, this);
+ this.addEventListener("mousemove", this._onwindowmousemove, this);
+ this.addEventListener("click", this._onwindowclick, this);
+
+
+ // ************************************************************************
+ // EVENTS: CAPTIONBAR
+ // ************************************************************************
+
+ cb.addEventListener("mousedown", this._oncaptionmousedown, this);
+ cb.addEventListener("mouseup", this._oncaptionmouseup, this);
+ cb.addEventListener("mousemove", this._oncaptionmousemove, this);
+ cb.addEventListener("dblclick", this._oncaptiondblblick, this);
+
+
+ // ************************************************************************
+ // REMAPPING
+ // ************************************************************************
+ this.remapChildrenHandlingTo(this._pane);
+});
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/*!
+ Appearance of the widget
+*/
+qx.OO.changeProperty({ name : "appearance", type : "string", defaultValue : "window" });
+
+/*!
+ The windowManager to use for.
+*/
+qx.OO.addProperty({ name : "windowManager", type : "object" });
+
+/*!
+ If the window is active, only one window in a single qx.manager.object.WindowManager could
+ have set this to true at the same time.
+*/
+qx.OO.addProperty({ name : "active", type : "boolean", defaultValue : false });
+
+/*!
+ Should be window be modal (this disable minimize and maximize buttons)
+*/
+qx.OO.addProperty({ name : "modal", type : "boolean", defaultValue : false });
+
+/*!
+ Should be window be modal (this disable minimize and maximize buttons)
+*/
+qx.OO.addProperty({ name : "mode", type : "string", defaultValue : null, possibleValues : [ "minimized", "maximized" ], allowNull : true });
+
+/*!
+ The opener (button) of the window
+*/
+qx.OO.addProperty({ name : "opener", type : "object" });
+
+/*!
+ The text of the caption
+*/
+qx.OO.addProperty({ name : "caption", type : "string" });
+
+/*!
+ The icon of the caption
+*/
+qx.OO.addProperty({ name : "icon", type : "string" });
+
+/*!
+ The text of the statusbar
+*/
+qx.OO.addProperty({ name : "status", type : "string", defaultValue : "Ready" });
+
+/*!
+ Should the close button be shown
+*/
+qx.OO.addProperty({ name : "showClose", type : "boolean", defaultValue : true });
+
+/*!
+ Should the maximize button be shown
+*/
+qx.OO.addProperty({ name : "showMaximize", type : "boolean", defaultValue : true });
+
+/*!
+ Should the minimize button be shown
+*/
+qx.OO.addProperty({ name : "showMinimize", type : "boolean", defaultValue : true });
+
+/*!
+ Should the statusbar be shown
+*/
+qx.OO.addProperty({ name : "showStatusbar", type : "boolean", defaultValue : false });
+
+/*!
+ Should the user have the ability to close the window
+*/
+qx.OO.addProperty({ name : "allowClose", type : "boolean", defaultValue : true });
+
+/*!
+ Should the user have the ability to maximize the window
+*/
+qx.OO.addProperty({ name : "allowMaximize", type : "boolean", defaultValue : true });
+
+/*!
+ Should the user have the ability to minimize the window
+*/
+qx.OO.addProperty({ name : "allowMinimize", type : "boolean", defaultValue : true });
+
+/*!
+ If the text (in the captionbar) should be visible
+*/
+qx.OO.addProperty({ name : "showCaption", type : "boolean", defaultValue : true });
+
+/*!
+ If the icon (in the captionbar) should be visible
+*/
+qx.OO.addProperty({ name : "showIcon", type : "boolean", defaultValue : true });
+
+/*!
+ If the window is resizeable
+*/
+qx.OO.addProperty({ name : "resizeable", type : "boolean", defaultValue : true });
+
+/*!
+ If the window is moveable
+*/
+qx.OO.addProperty({ name : "moveable", type : "boolean", defaultValue : true });
+
+/*!
+ The resize method to use
+*/
+qx.OO.addProperty({ name : "resizeMethod", type : "string", defaultValue : "frame", possibleValues : [ "opaque", "lazyopaque", "frame", "translucent" ] });
+
+/*!
+ The move method to use
+*/
+qx.OO.addProperty({ name : "moveMethod", type : "string", defaultValue : "opaque", possibleValues : [ "opaque", "frame", "translucent" ] });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MANAGER HANDLING
+---------------------------------------------------------------------------
+*/
+
+qx.ui.window.Window.getDefaultWindowManager = function()
+{
+ if (!qx.ui.window.Window._defaultWindowManager) {
+ qx.ui.window.Window._defaultWindowManager = new qx.manager.object.WindowManager;
+ }
+
+ return qx.ui.window.Window._defaultWindowManager;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.getPane = function() {
+ return this._pane;
+}
+
+qx.Proto.getCaptionBar = function() {
+ return this._captionBar;
+}
+
+qx.Proto.getStatusBar = function() {
+ return this._statusBar;
+}
+
+qx.Proto.close = function() {
+ this.hide();
+}
+
+qx.Proto.open = function(vOpener)
+{
+ if (qx.util.Validation.isValid(vOpener)) {
+ this.setOpener(vOpener);
+ }
+
+ if (this.getCentered()) {
+ this.centerToBrowser();
+ }
+
+ this.show();
+}
+
+qx.Proto.focus = function() {
+ this.setActive(true);
+}
+
+qx.Proto.blur = function() {
+ this.setActive(false);
+}
+
+qx.Proto.maximize = function() {
+ this.setMode("maximized");
+}
+
+qx.Proto.minimize = function() {
+ this.setMode("minimized");
+}
+
+qx.Proto.restore = function() {
+ this.setMode(null);
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ APPEAR/DISAPPEAR
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._beforeAppear = function()
+{
+ // Intentionally bypass superclass and call super.super._beforeAppear
+ qx.ui.layout.CanvasLayout.prototype._beforeAppear.call(this);
+
+ // Hide popups
+ qx.manager.object.PopupManager.getInstance().update();
+
+ // Configure the focus root to be the current opened window
+ qx.event.handler.EventHandler.getInstance().setFocusRoot(this);
+
+ this.getWindowManager().add(this);
+ this._makeActive();
+}
+
+qx.Proto._beforeDisappear = function()
+{
+ // Intentionally bypass superclass and call super.super._beforeDisappear
+ qx.ui.layout.CanvasLayout.prototype._beforeDisappear.call(this);
+
+ // Reset focus root
+ var vFocusRoot = qx.event.handler.EventHandler.getInstance().getFocusRoot();
+ if (vFocusRoot == this || this.contains(vFocusRoot)) {
+ qx.event.handler.EventHandler.getInstance().setFocusRoot(null);
+ }
+
+ // Be sure to disable any capturing inside invisible parts
+ // Is this to much overhead?
+ // Are there any other working solutions?
+ var vWidget = qx.event.handler.EventHandler.getInstance().getCaptureWidget();
+ if (vWidget && this.contains(vWidget)) {
+ vWidget.setCapture(false);
+ }
+
+ this.getWindowManager().remove(this);
+ this._makeInactive();
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ ZIndex Positioning
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._minZIndex = 1e5;
+
+qx.Proto._sendTo = function()
+{
+ var vAll = qx.lang.Object.getValues(this.getWindowManager().getAll()).sort(qx.util.Compare.byZIndex);
+ var vLength = vAll.length;
+ var vIndex = this._minZIndex;
+
+ for (var i=0; i<vLength; i++) {
+ vAll[i].setZIndex(vIndex++);
+ }
+}
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIERS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._modifyActive = function(propValue, propOldValue, propData)
+{
+ if (propOldValue)
+ {
+ if (this.getFocused()) {
+ this.setFocused(false);
+ }
+
+ if (this.getWindowManager().getActiveWindow() == this) {
+ this.getWindowManager().setActiveWindow(null);
+ }
+
+ this.removeState("active");
+ this._captionBar.removeState("active");
+ }
+ else
+ {
+ // Switch focus
+ // Also do this if gets inactive as this moved the focus outline
+ // away from any focused child.
+ if (!this.getFocusedChild()) {
+ this.setFocused(true);
+ }
+
+ this.getWindowManager().setActiveWindow(this);
+ this.bringToFront();
+
+ this.addState("active");
+ this._captionBar.addState("active");
+ }
+
+ return true;
+}
+
+qx.Proto._modifyModal = function(propValue, propOldValue, propData)
+{
+ // Inform blocker
+ if (this._initialLayoutDone && this.getVisibility() && this.getDisplay())
+ {
+ var vTop = this.getTopLevelWidget();
+ propValue ? vTop.block(this) : vTop.release(this);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyAllowClose = function(propValue, propOldValue, propData) {
+ return this._closeButtonManager();
+}
+
+qx.Proto._modifyAllowMaximize = function(propValue, propOldValue, propData) {
+ return this._maximizeButtonManager();
+}
+
+qx.Proto._modifyAllowMinimize = function(propValue, propOldValue, propData) {
+ return this._minimizeButtonManager();
+}
+
+qx.Proto._modifyMode = function(propValue, propOldValue, propData)
+{
+ switch(propValue)
+ {
+ case "minimized":
+ this._minimize();
+ break;
+
+ case "maximized":
+ this._maximize();
+ break;
+
+ default:
+ switch(propOldValue)
+ {
+ case "maximized":
+ this._restoreFromMaximized();
+ break;
+
+ case "minimized":
+ this._restoreFromMinimized();
+ break;
+ }
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShowCaption = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this._captionBar.addAt(this._captionTitle, this.getShowIcon() ? 1 : 0);
+ }
+ else
+ {
+ this._captionBar.remove(this._captionTitle);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShowIcon = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this._captionBar.addAtBegin(this._captionIcon);
+ }
+ else
+ {
+ this._captionBar.remove(this._captionIcon);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShowStatusbar = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this._layout.addAtEnd(this._statusBar);
+ }
+ else
+ {
+ this._layout.remove(this._statusBar);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShowClose = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this._captionBar.addAtEnd(this._closeButton);
+ }
+ else
+ {
+ this._captionBar.remove(this._closeButton);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShowMaximize = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ var t = this.getMode() == "maximized" ? this._restoreButton : this._maximizeButton;
+
+ if (this.getShowMinimize())
+ {
+ this._captionBar.addAfter(t, this._minimizeButton);
+ }
+ else
+ {
+ this._captionBar.addAfter(t, this._captionFlex);
+ }
+ }
+ else
+ {
+ this._captionBar.remove(this._maximizeButton);
+ this._captionBar.remove(this._restoreButton);
+ }
+
+ return true;
+}
+
+qx.Proto._modifyShowMinimize = function(propValue, propOldValue, propData)
+{
+ if (propValue)
+ {
+ this._captionBar.addAfter(this._minimizeButton, this._captionFlex);
+ }
+ else
+ {
+ this._captionBar.remove(this._minimizeButton);
+ }
+
+ return true;
+}
+
+qx.Proto._minimizeButtonManager = function()
+{
+ this._minimizeButton.setEnabled(this.getAllowMinimize());
+
+ return true;
+}
+
+qx.Proto._closeButtonManager = function()
+{
+ this._closeButton.setEnabled(this.getAllowClose());
+
+ return true;
+}
+
+qx.Proto._maximizeButtonManager = function()
+{
+ var b = this.getAllowMaximize() && this.getResizeable() && this._computedMaxWidthTypeNull && this._computedMaxHeightTypeNull;
+
+ this._maximizeButton.setEnabled(b);
+ this._restoreButton.setEnabled(b);
+
+ return true;
+}
+
+qx.Proto._modifyStatus = function(propValue, propOldValue, propData)
+{
+ this._statusText.setHtml(propValue);
+
+ return true;
+}
+
+qx.Proto._modifyMaxWidth = function(propValue, propOldValue, propData) {
+ return this._maximizeButtonManager();
+}
+
+qx.Proto._modifyMaxHeight = function(propValue, propOldValue, propData) {
+ return this._maximizeButtonManager();
+}
+
+qx.Proto._modifyResizeable = function(propValue, propOldValue, propData) {
+ return this._maximizeButtonManager();
+}
+
+qx.Proto._modifyCaption = function(propValue, propOldValue, propData)
+{
+ this._captionTitle.setHtml(propValue);
+ return true;
+}
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ STATE LAYOUT IMPLEMENTATION
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._minimize = function()
+{
+ this.blur();
+ this.hide();
+}
+
+qx.Proto._restoreFromMaximized = function()
+{
+ // restore previous dimension and location
+ this.setLeft(this._previousLeft ? this._previousLeft : null);
+ this.setWidth(this._previousWidth ? this._previousWidth : null);
+ this.setRight(this._previousRight ? this._previousRight : null);
+
+ this.setTop(this._previousTop ? this._previousTop : null);
+ this.setHeight(this._previousHeight ? this._previousHeight : null);
+ this.setBottom(this._previousBottom ? this._previousBottom : null);
+
+ // update state
+ this.removeState("maximized");
+
+ // toggle button
+ if (this.getShowMaximize())
+ {
+ var cb = this._captionBar;
+ var v = cb.indexOf(this._restoreButton);
+
+ cb.remove(this._restoreButton);
+ cb.addAt(this._maximizeButton, v);
+ }
+
+ // finally focus the window
+ this.focus();
+}
+
+qx.Proto._restoreFromMinimized = function()
+{
+ if (this.hasState("maximized"))
+ {
+ this.setMode("maximized");
+ }
+
+ this.show();
+ this.focus();
+}
+
+qx.Proto._maximize = function()
+{
+ if (this.hasState("maximized"))
+ {
+ return;
+ }
+
+ // store current dimension and location
+ this._previousLeft = this.getLeft();
+ this._previousWidth = this.getWidth();
+ this._previousRight = this.getRight();
+ this._previousTop = this.getTop();
+ this._previousHeight = this.getHeight();
+ this._previousBottom = this.getBottom();
+
+ // setup new dimension and location
+ this.setWidth(null);
+ this.setLeft(0);
+ this.setRight(0);
+ this.setHeight(null);
+ this.setTop(0);
+ this.setBottom(0);
+
+ // update state
+ this.addState("maximized");
+
+ // toggle button
+ if (this.getShowMaximize())
+ {
+ var cb = this._captionBar;
+ var v = cb.indexOf(this._maximizeButton);
+
+ cb.remove(this._maximizeButton);
+ cb.addAt(this._restoreButton, v);
+ }
+
+ // finally focus the window
+ this.focus();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS: WINDOW
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onwindowmousedown = function(e)
+{
+ this.focus();
+
+ if (this._resizeNorth || this._resizeSouth || this._resizeWest || this._resizeEast)
+ {
+ // enable capturing
+ this.setCapture(true);
+
+ // activate global cursor
+ this.getTopLevelWidget().setGlobalCursor(this.getCursor());
+
+ // caching element
+ var el = this.getElement();
+
+ // measuring and caching of values for resize session
+ var pa = this.getParent();
+ var pl = pa.getElement();
+
+ var l = qx.dom.Location.getPageAreaLeft(pl);
+ var t = qx.dom.Location.getPageAreaTop(pl);
+ var r = qx.dom.Location.getPageAreaRight(pl);
+ var b = qx.dom.Location.getPageAreaBottom(pl);
+
+ // handle frame and translucently
+ switch(this.getResizeMethod())
+ {
+ case "translucent":
+ this.setOpacity(0.5);
+ break;
+
+ case "frame":
+ var f = this._frame;
+
+ if (f.getParent() != this.getParent())
+ {
+ f.setParent(this.getParent());
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+
+ f._applyRuntimeLeft(qx.dom.Location.getPageBoxLeft(el) - l);
+ f._applyRuntimeTop(qx.dom.Location.getPageBoxTop(el) - t);
+
+ f._applyRuntimeWidth(qx.dom.Dimension.getBoxWidth(el));
+ f._applyRuntimeHeight(qx.dom.Dimension.getBoxHeight(el));
+
+ f.setZIndex(this.getZIndex() + 1);
+
+ break;
+ }
+
+ // create resize session
+ var s = this._resizeSession = {};
+
+ if (this._resizeWest)
+ {
+ s.boxWidth = qx.dom.Dimension.getBoxWidth(el);
+ s.boxRight = qx.dom.Location.getPageBoxRight(el);
+ }
+
+ if (this._resizeWest || this._resizeEast)
+ {
+ s.boxLeft = qx.dom.Location.getPageBoxLeft(el);
+
+ s.parentAreaOffsetLeft = l;
+ s.parentAreaOffsetRight = r;
+
+ s.minWidth = this.getMinWidthValue();
+ s.maxWidth = this.getMaxWidthValue();
+ }
+
+ if (this._resizeNorth)
+ {
+ s.boxHeight = qx.dom.Dimension.getBoxHeight(el);
+ s.boxBottom = qx.dom.Location.getPageBoxBottom(el);
+ }
+
+ if (this._resizeNorth || this._resizeSouth)
+ {
+ s.boxTop = qx.dom.Location.getPageBoxTop(el);
+
+ s.parentAreaOffsetTop = t;
+ s.parentAreaOffsetBottom = b;
+
+ s.minHeight = this.getMinHeightValue();
+ s.maxHeight = this.getMaxHeightValue();
+ }
+ }
+ else
+ {
+ // cleanup resize session
+ delete this._resizeSession;
+ }
+
+ // stop event
+ e.stopPropagation();
+}
+
+qx.Proto._onwindowmouseup = function(e)
+{
+ var s = this._resizeSession;
+
+ if (s)
+ {
+ // disable capturing
+ this.setCapture(false);
+
+ // deactivate global cursor
+ this.getTopLevelWidget().setGlobalCursor(null);
+
+ // sync sizes to frame
+ switch(this.getResizeMethod())
+ {
+ case "frame":
+ var o = this._frame;
+ if (!(o && o.getParent())) {
+ break;
+ }
+ // no break here
+
+ case "lazyopaque":
+ if (qx.util.Validation.isValidNumber(s.lastLeft)) {
+ this.setLeft(s.lastLeft);
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastTop)) {
+ this.setTop(s.lastTop);
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastWidth)) {
+ this.setWidth(s.lastWidth);
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastHeight)) {
+ this.setHeight(s.lastHeight);
+ }
+
+ if (this.getResizeMethod() == "frame") {
+ this._frame.setParent(null);
+ }
+ break;
+
+ case "translucent":
+ this.setOpacity(null);
+ break;
+ }
+
+ // cleanup session
+ delete this._resizeNorth;
+ delete this._resizeEast;
+ delete this._resizeSouth;
+ delete this._resizeWest;
+
+ delete this._resizeSession;
+ }
+
+ // stop event
+ e.stopPropagation();
+}
+
+qx.Proto._near = function(p, e) {
+ return e > (p - 5) && e < (p + 5);
+}
+
+qx.Proto._onwindowmousemove = function(e)
+{
+ if (!this.getResizeable() || this.getMode() != null) {
+ return;
+ }
+
+ var s = this._resizeSession;
+
+ if (s)
+ {
+ if (this._resizeWest)
+ {
+ s.lastWidth = qx.lang.Number.limit(s.boxWidth + s.boxLeft - Math.max(e.getPageX(), s.parentAreaOffsetLeft), s.minWidth, s.maxWidth);
+ s.lastLeft = s.boxRight - s.lastWidth - s.parentAreaOffsetLeft;
+ }
+ else if (this._resizeEast)
+ {
+ s.lastWidth = qx.lang.Number.limit(Math.min(e.getPageX(), s.parentAreaOffsetRight) - s.boxLeft, s.minWidth, s.maxWidth);
+ }
+
+ if (this._resizeNorth)
+ {
+ s.lastHeight = qx.lang.Number.limit(s.boxHeight + s.boxTop - Math.max(e.getPageY(), s.parentAreaOffsetTop), s.minHeight, s.maxHeight);
+ s.lastTop = s.boxBottom - s.lastHeight - s.parentAreaOffsetTop;
+ }
+ else if (this._resizeSouth)
+ {
+ s.lastHeight = qx.lang.Number.limit(Math.min(e.getPageY(), s.parentAreaOffsetBottom) - s.boxTop, s.minHeight, s.maxHeight);
+ }
+
+ switch(this.getResizeMethod())
+ {
+ case "opaque":
+ case "translucent":
+ if (this._resizeWest || this._resizeEast)
+ {
+ this.setWidth(s.lastWidth);
+
+ if (this._resizeWest) {
+ this.setLeft(s.lastLeft);
+ }
+ }
+
+ if (this._resizeNorth || this._resizeSouth)
+ {
+ this.setHeight(s.lastHeight);
+
+ if (this._resizeNorth) {
+ this.setTop(s.lastTop);
+ }
+ }
+
+ break;
+
+ default:
+ var o = this.getResizeMethod() == "frame" ? this._frame : this;
+
+ if (this._resizeWest || this._resizeEast)
+ {
+ o._applyRuntimeWidth(s.lastWidth);
+
+ if (this._resizeWest) {
+ o._applyRuntimeLeft(s.lastLeft);
+ }
+ }
+
+ if (this._resizeNorth || this._resizeSouth)
+ {
+ o._applyRuntimeHeight(s.lastHeight);
+
+ if (this._resizeNorth) {
+ o._applyRuntimeTop(s.lastTop);
+ }
+ }
+ }
+ }
+ else
+ {
+ var resizeMode = "";
+ var el = this.getElement();
+
+ this._resizeNorth = this._resizeSouth = this._resizeWest = this._resizeEast = false;
+
+ if (this._near(qx.dom.Location.getPageBoxTop(el), e.getPageY()))
+ {
+ resizeMode = "n";
+ this._resizeNorth = true;
+ }
+ else if (this._near(qx.dom.Location.getPageBoxBottom(el), e.getPageY()))
+ {
+ resizeMode = "s";
+ this._resizeSouth = true;
+ }
+
+ if (this._near(qx.dom.Location.getPageBoxLeft(el), e.getPageX()))
+ {
+ resizeMode += "w";
+ this._resizeWest = true;
+ }
+ else if (this._near(qx.dom.Location.getPageBoxRight(el), e.getPageX()))
+ {
+ resizeMode += "e";
+ this._resizeEast = true;
+ }
+
+ if (this._resizeNorth || this._resizeSouth || this._resizeWest || this._resizeEast)
+ {
+ this.setCursor(resizeMode + "-resize");
+ }
+ else
+ {
+ this.setCursor(null);
+ }
+ }
+
+ // stop event
+ e.stopPropagation();
+}
+
+qx.Proto._onwindowclick = function(e)
+{
+ // stop event
+ e.stopPropagation();
+};
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS: BUTTONS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._onbuttonmousedown = function(e) {
+ e.stopPropagation();
+}
+
+qx.Proto._onminimizebuttonclick = function(e)
+{
+ this.minimize();
+
+ // we need to be sure that the button gets the right states after clicking
+ // because the button will move and does not get the mouseup event anymore
+ this._minimizeButton.removeState("pressed");
+ this._minimizeButton.removeState("abandoned");
+ this._minimizeButton.removeState("over");
+
+ e.stopPropagation();
+}
+
+qx.Proto._onrestorebuttonclick = function(e)
+{
+ this.restore();
+
+ // we need to be sure that the button gets the right states after clicking
+ // because the button will move and does not get the mouseup event anymore
+ this._restoreButton.removeState("pressed");
+ this._restoreButton.removeState("abandoned");
+ this._restoreButton.removeState("over");
+
+ e.stopPropagation();
+}
+
+qx.Proto._onmaximizebuttonclick = function(e)
+{
+ this.maximize();
+
+ // we need to be sure that the button gets the right states after clicking
+ // because the button will move and does not get the mouseup event anymore
+ this._maximizeButton.removeState("pressed");
+ this._maximizeButton.removeState("abandoned");
+ this._maximizeButton.removeState("over");
+
+ e.stopPropagation();
+}
+
+qx.Proto._onclosebuttonclick = function(e)
+{
+ this.close();
+
+ // we need to be sure that the button gets the right states after clicking
+ // because the button will move and does not get the mouseup event anymore
+ this._closeButton.removeState("pressed");
+ this._closeButton.removeState("abandoned");
+ this._closeButton.removeState("over");
+
+ e.stopPropagation();
+}
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENTS: CAPTIONBAR
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._oncaptionmousedown = function(e)
+{
+ if (!e.isLeftButtonPressed() || !this.getMoveable() || this.getMode() != null) {
+ return;
+ }
+
+ // enable capturing
+ this._captionBar.setCapture(true);
+
+ // element cache
+ var el = this.getElement();
+
+ // measuring and caching of values for drag session
+ var pa = this.getParent();
+ var pl = pa.getElement();
+
+ var l = qx.dom.Location.getPageAreaLeft(pl);
+ var t = qx.dom.Location.getPageAreaTop(pl);
+ var r = qx.dom.Location.getPageAreaRight(pl);
+ var b = qx.dom.Location.getPageAreaBottom(pl);
+
+ this._dragSession =
+ {
+ offsetX : e.getPageX() - qx.dom.Location.getPageBoxLeft(el) + l,
+ offsetY : e.getPageY() - qx.dom.Location.getPageBoxTop(el) + t,
+
+ parentAvailableAreaLeft : l + 5,
+ parentAvailableAreaTop : t + 5,
+ parentAvailableAreaRight : r - 5,
+ parentAvailableAreaBottom : b - 5
+ }
+
+ // handle frame and translucently
+ switch(this.getMoveMethod())
+ {
+ case "translucent":
+ this.setOpacity(0.5);
+ break;
+
+ case "frame":
+ var f = this._frame;
+
+ if (f.getParent() != this.getParent())
+ {
+ f.setParent(this.getParent());
+ qx.ui.core.Widget.flushGlobalQueues();
+ }
+
+ f._applyRuntimeLeft(qx.dom.Location.getPageBoxLeft(el) - l);
+ f._applyRuntimeTop(qx.dom.Location.getPageBoxTop(el) - t);
+
+ f._applyRuntimeWidth(qx.dom.Dimension.getBoxWidth(el));
+ f._applyRuntimeHeight(qx.dom.Dimension.getBoxHeight(el));
+
+ f.setZIndex(this.getZIndex() + 1);
+
+ break;
+ }
+}
+
+qx.Proto._oncaptionmouseup = function(e)
+{
+ var s = this._dragSession;
+
+ if (!s) {
+ return;
+ }
+
+ // disable capturing
+ this._captionBar.setCapture(false);
+
+ // move window to last position
+ if (qx.util.Validation.isValidNumber(s.lastX)) {
+ this.setLeft(s.lastX);
+ }
+
+ if (qx.util.Validation.isValidNumber(s.lastY)) {
+ this.setTop(s.lastY);
+ }
+
+ // handle frame and translucently
+ switch(this.getMoveMethod())
+ {
+ case "translucent":
+ this.setOpacity(null);
+ break;
+
+ case "frame":
+ this._frame.setParent(null);
+ break;
+ }
+
+ // cleanup session
+ delete this._dragSession;
+}
+
+qx.Proto._oncaptionmousemove = function(e)
+{
+ var s = this._dragSession;
+
+ // pre check for active session and capturing
+ if (!s || !this._captionBar.getCapture()) {
+ return;
+ }
+
+ // pre check if we go out of the available area
+ if (!qx.lang.Number.isBetweenRange(e.getPageX(), s.parentAvailableAreaLeft, s.parentAvailableAreaRight) || !qx.lang.Number.isBetweenRange(e.getPageY(), s.parentAvailableAreaTop, s.parentAvailableAreaBottom)) {
+ return;
+ }
+
+ // use the fast and direct dom methods
+ var o = this.getMoveMethod() == "frame" ? this._frame : this;
+
+ o._applyRuntimeLeft(s.lastX = e.getPageX() - s.offsetX);
+ o._applyRuntimeTop(s.lastY = e.getPageY() - s.offsetY);
+}
+
+qx.Proto._oncaptiondblblick = function()
+{
+ if (!this._maximizeButton.getEnabled()) {
+ return;
+ }
+
+ return this.getMode() == "maximized" ? this.restore() : this.maximize();
+}
+
+
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ if (this._layout)
+ {
+ this._layout.dispose();
+ this._layout = null;
+ }
+
+ if (this._frame)
+ {
+ this._frame.dispose();
+ this._frame = null;
+ }
+
+ if (this._captionBar)
+ {
+ this._captionBar.dispose();
+ this._captionBar = null;
+ }
+
+ if (this._captionIcon)
+ {
+ this._captionIcon.dispose();
+ this._captionIcon = null;
+ }
+
+ if (this._captionTitle)
+ {
+ this._captionTitle.dispose();
+ this._captionTitle = null;
+ }
+
+ if (this._captionFlex)
+ {
+ this._captionFlex.dispose();
+ this._captionFlex = null;
+ }
+
+ if (this._closeButton)
+ {
+ this._closeButton.dispose();
+ this._closeButton = null;
+ }
+
+ if (this._minimizeButton)
+ {
+ this._minimizeButton.dispose();
+ this._minimizeButton = null;
+ }
+
+ if (this._maximizeButton)
+ {
+ this._maximizeButton.dispose();
+ this._maximizeButton = null;
+ }
+
+ if (this._restoreButton)
+ {
+ this._restoreButton.dispose();
+ this._restoreButton = null;
+ }
+
+ if (this._pane)
+ {
+ this._pane.dispose();
+ this._pane = null;
+ }
+
+ if (this._statusBar)
+ {
+ this._statusBar.dispose();
+ this._statusBar = null;
+ }
+
+ if (this._statusText)
+ {
+ this._statusText.dispose();
+ this._statusText = null;
+ }
+
+ return qx.ui.popup.Popup.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js
new file mode 100644
index 0000000000..3a8406f029
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/ColorUtil.js
@@ -0,0 +1,162 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.ColorUtil");
+
+qx.Class.rgb2hsb = function(vRed, vGreen, vBlue)
+{
+ var vHue, vSaturation, vBrightness;
+
+ vRed = parseFloat(vRed);
+ vGreen = parseFloat(vGreen);
+ vBlue = parseFloat(vBlue);
+
+ var cmax = (vRed > vGreen) ? vRed : vGreen;
+ if (vBlue > cmax) {
+ cmax = vBlue;
+ }
+
+ var cmin = (vRed < vGreen) ? vRed : vGreen;
+ if (vBlue < cmin) {
+ cmin = vBlue;
+ }
+
+ vBrightness = cmax / 255.0;
+
+ if (cmax != 0)
+ {
+ vSaturation = (cmax - cmin) / cmax;
+ }
+ else
+ {
+ vSaturation = 0;
+ }
+
+ if (vSaturation == 0)
+ {
+ vHue = 0;
+ }
+ else
+ {
+ var redc = (cmax - vRed) / (cmax - cmin);
+ var greenc = (cmax - vGreen) / (cmax - cmin);
+ var bluec = (cmax - vBlue) / (cmax - cmin);
+
+ if (vRed == cmax)
+ {
+ vHue = bluec - greenc;
+ }
+ else if (vGreen == cmax)
+ {
+ vHue = 2.0 + redc - bluec;
+ }
+ else
+ {
+ vHue = 4.0 + greenc - redc;
+ }
+
+ vHue = vHue / 6.0;
+ if (vHue < 0) vHue = vHue + 1.0;
+ }
+
+ return {
+ hue : Math.round(vHue * 360),
+ saturation : Math.round(vSaturation * 100),
+ brightness : Math.round(vBrightness * 100)
+ }
+}
+
+qx.Class.hsb2rgb = function(vHue, vSaturation, vBrightness)
+{
+ var i, f, p, q, t, vReturn;
+
+ vHue = parseFloat(vHue/360);
+ vSaturation = parseFloat(vSaturation/100);
+ vBrightness = parseFloat(vBrightness/100);
+
+ if(vHue >= 1.0) vHue %= 1.0;
+ if(vSaturation > 1.0) vSaturation = 1.0;
+ if(vBrightness > 1.0) vBrightness = 1.0;
+
+ var tov = Math.floor(255 * vBrightness);
+
+ var vReturn = {};
+
+ if(vSaturation == 0.0)
+ {
+ vReturn.red = vReturn.green = vReturn.blue = tov;
+ }
+ else
+ {
+ vHue *= 6.0;
+
+ i = Math.floor(vHue);
+
+ f = vHue - i;
+
+ p = Math.floor(tov * (1.0 - vSaturation));
+ q = Math.floor(tov * (1.0 - (vSaturation * f)));
+ t = Math.floor(tov * (1.0 - (vSaturation * (1.0 - f))));
+
+ switch(i)
+ {
+ case 0:
+ vReturn.red = tov;
+ vReturn.green = t;
+ vReturn.blue = p;
+ break;
+
+ case 1:
+ vReturn.red = q;
+ vReturn.green = tov;
+ vReturn.blue = p;
+ break;
+
+ case 2:
+ vReturn.red = p;
+ vReturn.green = tov;
+ vReturn.blue = t;
+ break;
+
+ case 3:
+ vReturn.red = p;
+ vReturn.green = q;
+ vReturn.blue = tov;
+ break;
+
+ case 4:
+ vReturn.red = t;
+ vReturn.green = p;
+ vReturn.blue = tov;
+ break;
+
+ case 5:
+ vReturn.red = tov;
+ vReturn.green = p;
+ vReturn.blue = q;
+ break;
+ }
+ }
+
+ return vReturn;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Compare.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Compare.js
new file mode 100644
index 0000000000..3de325d717
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Compare.js
@@ -0,0 +1,86 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.Compare");
+
+qx.util.Compare.byString = function(a, b) {
+ return a==b ? 0 : a > b ? 1 : -1;
+}
+
+qx.util.Compare.byStringCaseInsensitive = function(a, b) {
+ return qx.util.Compare.byString(a.toLowerCase(), b.toLowerCase());
+}
+
+qx.util.Compare.byStringUmlautsShort = function(a, b) {
+ return qx.util.Compare.byString(qx.util.Normalization.umlautsShort(a), qx.util.Normalization.umlautsShort(b));
+}
+
+qx.util.Compare.byStringUmlautsShortCaseInsensitive = function(a, b) {
+ return qx.util.Compare.byString(qx.util.Normalization.umlautsShort(a).toLowerCase(), qx.util.Normalization.umlautsShort(b).toLowerCase());
+}
+
+qx.util.Compare.byStringUmlautsLong = function(a, b) {
+ return qx.util.Compare.byString(qx.util.Normalization.umlautsLong(a), qx.util.Normalization.umlautsLong(b));
+}
+
+qx.util.Compare.byStringUmlautsLongCaseInsensitive = function(a, b) {
+ return qx.util.Compare.byString(qx.util.Normalization.umlautsLong(a).toLowerCase(), qx.util.Normalization.umlautsLong(b).toLowerCase());
+}
+
+qx.util.Compare.byFloat = function(a, b) {
+ return a - b;
+}
+
+qx.util.Compare.byInteger = qx.util.Compare.byNumber = qx.util.Compare.byFloat;
+
+qx.util.Compare.byIntegerString = function(a, b) {
+ return parseInt(a) - parseInt(b);
+}
+
+qx.util.Compare.byFloatString = function(a, b) {
+ return parseFloat(a) - parseFloat(b);
+}
+
+qx.util.Compare.byNumberString = qx.util.Compare.byFloatString;
+
+qx.util.Compare.byIPv4 = function(a, b)
+{
+ var ipa = a.split(".", 4);
+ var ipb = b.split(".", 4);
+
+ for (var i=0; i<3; i++)
+ {
+ a = parseInt(ipa[i]);
+ b = parseInt(ipb[i]);
+
+ if (a != b) {
+ return a - b;
+ }
+ }
+
+ return parseInt(ipa[3]) - parseInt(ipb[3]);
+}
+
+qx.util.Compare.byZIndex = function(a, b) {
+ return a.getZIndex() - b.getZIndex();
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/FormUtil.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/FormUtil.js
new file mode 100644
index 0000000000..2d4913008d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/FormUtil.js
@@ -0,0 +1,109 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(io_remote)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.FormUtil");
+
+qx.Class.ignoreInputTypes = [ "file", "submit", "image", "reset", "button" ];
+qx.Class.ignoreElementTypes = [ "fieldset" ];
+qx.Class.checkElementTypes = [ "radio", "checkbox" ];
+qx.Class.multiSelectType = "select-multiple";
+
+qx.Class.inputFilter = function(vNode)
+{
+ if (vNode.disabled) {
+ return false;
+ }
+
+ var vTag = (vNode.tagName || "").toLowerCase();
+
+ if (qx.lang.Array.contains(qx.util.FormUtil.ignoreElementTypes, vTag)) {
+ return false;
+ }
+
+ var vType = vNode.type.toLowerCase();
+
+ if (qx.lang.Array.contains(qx.util.FormUtil.ignoreInputTypes, vType)) {
+ return false;
+ }
+
+ if (!vNode.checked && qx.lang.Array.contains(qx.util.FormUtil.checkElementTypes, vType)) {
+ return false;
+ }
+
+ return true;
+}
+
+qx.Class.getFields = function(vForm) {
+ return Array.filter(vForm.elements, qx.util.FormUtil.inputFilter);
+}
+
+qx.Class.encodeField = function(vNode)
+{
+ var vName = vNode.name || "";
+ var vType = (vNode.type || "").toLowerCase();
+
+ if(vType === qx.util.FormUtil.multiSelectType)
+ {
+ var vValues = [];
+
+ for(var i=0; i<vNode.options.length; i++)
+ {
+ if(vNode.options[i].selected) {
+ vValues.push(vName + "=" + vNode.options[i].value);
+ }
+ }
+
+ return vValues.join("&");
+ }
+ else
+ {
+ return vName + "=" + vNode.value;
+ }
+}
+
+qx.Class.encodeForm = function(vForm)
+{
+ var vFields = qx.util.FormUtil.getFields(vForm);
+ var vAll = [];
+
+ for (var i=0, l=vFields.length; i<l; i++) {
+ vAll.push(qx.util.FormUtil.encodeField(vFields[i]));
+ }
+
+ return vAll.join("&");
+}
+
+qx.Class.bind = function(vForm, vMethod)
+{
+ qx.dom.EventRegistration.addEventListener(vForm, "submit", function(e)
+ {
+ e.returnValue = false;
+
+ if (typeof e.preventDefault === "function") {
+ e.preventDefault();
+ }
+
+ return vMethod(e);
+ });
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Normalization.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Normalization.js
new file mode 100644
index 0000000000..1d94b5dcfc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Normalization.js
@@ -0,0 +1,56 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.Normalization");
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ HANDLING OF UMLAUTS
+---------------------------------------------------------------------------
+*/
+
+qx.util.Normalization._umlautsRegExp = /[\xE4\xF6\xFC\xDF\xC4\xD6\xDC]/g;
+
+qx.util.Normalization._umlautsShortData = { "\xC4": "A", "\xD6": "O", "\xDC": "U", "\xE4": "a", "\xF6": "o", "\xFC": "u", "\xDF": "s" }
+
+qx.util.Normalization._umlautsShort = function(vChar) {
+ return qx.util.Normalization._umlautsShortData[vChar];
+}
+
+qx.util.Normalization.umlautsShort = function(vString) {
+ return vString.replace(qx.util.Normalization._umlautsRegExp, qx.util.Normalization._umlautsShort);
+}
+
+qx.util.Normalization._umlautsLongData = { "\xC4": "Ae", "\xD6": "Oe", "\xDC": "Ue", "\xE4": "ae", "\xF6": "oe", "\xFC": "ue", "\xDF": "ss" }
+
+qx.util.Normalization._umlautsLong = function(vChar) {
+ return qx.util.Normalization._umlautsLongData[vChar];
+}
+
+qx.util.Normalization.umlautsLong = function(vString) {
+ return vString.replace(qx.util.Normalization._umlautsRegExp, qx.util.Normalization._umlautsLong);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Return.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Return.js
new file mode 100644
index 0000000000..2f5c7dd1e2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Return.js
@@ -0,0 +1,74 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.Return");
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ SIMPLE RETURN METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.util.Return.returnTrue = function() {
+ return true;
+};
+
+qx.util.Return.returnFalse = function() {
+ return false;
+};
+
+qx.util.Return.returnNull = function() {
+ return null;
+};
+
+qx.util.Return.returnThis = function() {
+ return this;
+};
+
+qx.util.Return.returnInstance = function()
+{
+ if (!this._instance)
+ {
+ this._instance = new this;
+
+ /*
+ if (this._instance.debug) {
+ this._instance.debug("Created...");
+ }*/
+ }
+
+ return this._instance;
+};
+
+qx.util.Return.returnZero = function() {
+ return 0;
+};
+
+qx.util.Return.returnNegativeIndex = function() {
+ return -1;
+};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Textile.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Textile.js
new file mode 100644
index 0000000000..1bf42982c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Textile.js
@@ -0,0 +1,178 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * Optimized version of SuperTextile
+ */
+qx.OO.defineClass("qx.util.Textile");
+
+/**
+ * ATTENTION: Deprecated module. Will be removed with qooxdoo 0.7.
+ *
+ * Textilizes a string
+ * http://www.creatimation.net/journal/textile-live-preview (offline)
+ *
+ * @param s {string} Text to be textilized.
+ * @return {string} The textilized text.
+ */
+qx.util.Textile.textilize = function(s)
+{
+ var r = s;
+
+ // quick tags first
+ var qtags = [
+ ["\\*", "strong"],
+ ["\\?\\?", "cite"],
+ ["\\+", "ins"],
+ ["~", "sub"],
+ ["\\^", "sup"],
+ ["@", "code"]
+ ];
+
+ var ttag, htag, re, line, lines, nr, changed, inlist, listtype;
+
+ for (var i=0;i<qtags.length;i++) {
+ ttag = qtags[i][0]; htag = qtags[i][1];
+ re = new RegExp(ttag+"\\b(.+?)\\b"+ttag,"g");
+ r = r.replace(re,"<"+htag+">"+"$1"+"</"+htag+">");
+ }
+
+ // underscores count as part of a word, so do them separately
+ re = new RegExp("\\b_(.+?)_\\b","g");
+ r = r.replace(re,"<em>$1</em>");
+
+ // jeff: so do dashes
+ re = new RegExp("[\s\n]-(.+?)-[\s\n]","g");
+ r = r.replace(re,"<del>$1</del>");
+
+ // links
+ re = new RegExp('"\\b(.+?)\\(\\b(.+?)\\b\\)":([^\\s]+)','g');
+ r = r.replace(re,'<a href="$3" title="$2">$1</a>');
+ re = new RegExp('"\\b(.+?)\\b":([^\\s]+)','g');
+ r = r.replace(re,'<a href="$2">$1</a>');
+
+ // images
+ re = new RegExp("!\\b(.+?)\\(\\b(.+?)\\b\\)!","g");
+ r = r.replace(re,'<img src="$1" alt="$2">');
+ re = new RegExp("!\\b(.+?)\\b!","g");
+ r = r.replace(re,'<img src="$1">');
+
+ // block level formatting
+
+ // Jeff's hack to show single line breaks as they should.
+ // insert breaks - but you get some....stupid ones
+ re = new RegExp("(.*)\n([^#\*\n].*)","g");
+ r = r.replace(re,"$1<br />$2");
+
+ // remove the stupid breaks.
+ re = new RegExp("\n<br />","g");
+ r = r.replace(re,"\n");
+
+ lines = r.split("\n");
+ nr = "";
+
+ for (var i=0;i<lines.length;i++)
+ {
+ line = lines[i].replace(/\s*$/,"");
+ changed = 0;
+
+ if (line.search(/^\s*bq\.\s+/) != -1)
+ {
+ line = line.replace(/^\s*bq\.\s+/,"\t<blockquote>")+"</blockquote>";
+ changed = 1;
+ }
+
+ // jeff adds h#.
+ if (line.search(/^\s*h[1-6]\.\s+/) != -1)
+ {
+ re = new RegExp("h([1-6])\.(.+)","g");
+ line = line.replace(re,"<h$1>$2</h$1>");
+ changed = 1;
+ }
+
+ if (line.search(/^\s*\*\s+/) != -1)
+ {
+ // for bullet list; make up an liu tag to be fixed later
+ line = line.replace(/^\s*\*\s+/,"\t<liu>") + "</liu>";
+ changed = 1;
+ }
+
+ if (line.search(/^\s*#\s+/) != -1)
+ {
+ // # for numeric list; make up an lio tag to be fixed later
+ line = line.replace(/^\s*#\s+/,"\t<lio>") + "</lio>";
+ changed = 1;
+ }
+
+ if (!changed && (line.replace(/\s/g,"").length > 0))
+ {
+ line = "<p>"+line+"</p>";
+ }
+
+ lines[i] = line + "\n";
+ }
+
+ // Second pass to do lists
+ inlist = 0;
+ listtype = "";
+
+ for (var i=0;i<lines.length;i++)
+ {
+ line = lines[i];
+
+ if (inlist && listtype == "ul" && !line.match(/^\t<liu/))
+ {
+ line = "</ul>\n" + line;
+ inlist = 0;
+ }
+
+ if (inlist && listtype == "ol" && !line.match(/^\t<lio/))
+ {
+ line = "</ol>\n" + line;
+ inlist = 0;
+ }
+
+ if (!inlist && line.match(/^\t<liu/))
+ {
+ line = "<ul>" + line;
+ inlist = 1;
+ listtype = "ul";
+ }
+
+ if (!inlist && line.match(/^\t<lio/))
+ {
+ line = "<ol>" + line;
+ inlist = 1;
+ listtype = "ol";
+ }
+
+ lines[i] = line;
+ }
+
+ r = lines.join("\n");
+
+ // jeff added : will correctly replace <li(o|u)> AND </li(o|u)>
+ r = r.replace(/li[o|u]>/g, "li>");
+
+ return r;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Validation.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Validation.js
new file mode 100644
index 0000000000..1fadd1d686
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/Validation.js
@@ -0,0 +1,172 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(core)
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.util.Validation");
+
+/*
+ All methods use the strict comparison operators as all modern
+ browsers (needs support for JavaScript 1.3) seems to support this.
+
+ http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Comparison_Operators
+*/
+
+qx.util.Validation.isValid = function(v)
+{
+ switch(typeof v)
+ {
+ case "undefined":
+ return false;
+
+ case "object":
+ return v !== null;
+
+ case "string":
+ return v !== "";
+
+ case "number":
+ return !isNaN(v);
+
+ case "function":
+ case "boolean":
+ return true;
+ }
+
+ return false;
+}
+
+qx.util.Validation.isInvalid = function(v)
+{
+ switch(typeof v)
+ {
+ case "undefined":
+ return true;
+
+ case "object":
+ return v === null;
+
+ case "string":
+ return v === "";
+
+ case "number":
+ return isNaN(v);
+
+ case "function":
+ case "boolean":
+ return false;
+ }
+
+ return true;
+}
+
+qx.util.Validation.isValidNumber = function(v) {
+ return typeof v === "number" && !isNaN(v);
+}
+
+qx.util.Validation.isInvalidNumber = function(v) {
+ return typeof v !== "number" || isNaN(v);
+}
+
+qx.util.Validation.isValidString = function(v) {
+ return typeof v === "string" && v !== "";
+}
+
+qx.util.Validation.isInvalidString = function(v) {
+ return typeof v !== "string" || v === "";
+}
+
+qx.util.Validation.isValidArray = function(v) {
+ return typeof v === "object" && v !== null && v instanceof Array;
+}
+
+qx.util.Validation.isInvalidArray = function(v) {
+ return typeof v !== "object" || v === null || !(v instanceof Array);
+}
+
+qx.util.Validation.isValidObject = function(v) {
+ return typeof v === "object" && v !== null && !(v instanceof Array);
+}
+
+qx.util.Validation.isInvalidObject = function(v) {
+ return typeof v !== "object" || v === null || v instanceof Array;
+}
+
+qx.util.Validation.isValidNode = function(v) {
+ return typeof v === "object" && v !== null;
+}
+
+qx.util.Validation.isInvalidNode = function(v) {
+ return typeof v !== "object" || v === null;
+}
+
+qx.util.Validation.isValidElement = function(v) {
+ return typeof v === "object" && v !== null || v.nodeType !== 1;
+}
+
+qx.util.Validation.isInvalidElement = function(v) {
+ return typeof v !== "object" || v === null || v.nodeType !== 1;
+}
+
+qx.util.Validation.isValidFunction = function(v) {
+ return typeof v === "function";
+}
+
+qx.util.Validation.isInvalidFunction = function(v) {
+ return typeof v !== "function";
+}
+
+qx.util.Validation.isValidBoolean = function(v) {
+ return typeof v === "boolean";
+}
+
+qx.util.Validation.isInvalidBoolean = function(v) {
+ return typeof v !== "boolean";
+}
+
+qx.util.Validation.isValidStringOrNumber = function(v)
+{
+ switch(typeof v)
+ {
+ case "string":
+ return v !== "";
+
+ case "number":
+ return !isNaN(v);
+ }
+
+ return false;
+}
+
+qx.util.Validation.isInvalidStringOrNumber = function(v)
+{
+ switch(typeof v)
+ {
+ case "string":
+ return v === "";
+
+ case "number":
+ return isNaN(v);
+ }
+
+ return false;
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/DateFormat.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/DateFormat.js
new file mode 100644
index 0000000000..7460ea4467
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/DateFormat.js
@@ -0,0 +1,614 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * A formatter and parser for dates
+ *
+ * @param format {string} The format to use. If null, the
+ * {@link #DEFAULT_DATE_TIME_FORMAT} is used.
+ */
+qx.OO.defineClass("qx.util.format.DateFormat", qx.util.format.Format,
+function(format) {
+ qx.util.format.Format.call(this);
+
+ this._format = (format != null) ? format : qx.util.format.DateFormat.DEFAULT_DATE_TIME_FORMAT;
+});
+
+
+/**
+ * Fills a number with leading zeros ("25" -> "0025").
+ *
+ * @param number {int} the number to fill.
+ * @param minSize {int} the minimum size the returned string should have.
+ * @return {string} the filled number as string.
+ */
+qx.Proto._fillNumber = function(number, minSize) {
+ var str = "" + number;
+ while (str.length < minSize) {
+ str = "0" + str;
+ }
+ return str;
+}
+
+
+/**
+ * Returns the day in year of a date.
+ *
+ * @param date {Date} the date.
+ * @return {int} the day in year.
+ */
+qx.Proto._getDayInYear = function(date) {
+ var helpDate = new Date(date.getTime());
+ var day = helpDate.getDate();
+ while (helpDate.getMonth() != 0) {
+ // Set the date to the last day of the previous month
+ helpDate.setDate(-1);
+ day += helpDate.getDate() + 1;
+ }
+ return day;
+}
+
+
+/**
+ * Returns the thursday in the same week as the date.
+ *
+ * @param date {Date} the date to get the thursday of.
+ * @return {Date} the thursday in the same week as the date.
+ */
+qx.Proto._thursdayOfSameWeek = function(date) {
+ return new Date(date.getTime() + (3 - ((date.getDay() + 6) % 7)) * 86400000);
+}
+
+
+/**
+ * Returns the week in year of a date.
+ *
+ * @param date {Date} the date to get the week in year of.
+ * @return {int} the week in year.
+ */
+qx.Proto._getWeekInYear = function(date) {
+ // This algorithm gets the correct calendar week after ISO 8601.
+ // This standard is used in almost all european countries.
+ // TODO: In the US week in year is calculated different!
+ // See http://www.merlyn.demon.co.uk/weekinfo.htm
+
+ // The following algorithm comes from http://www.salesianer.de/util/kalwoch.html
+
+ // Get the thursday of the week the date belongs to
+ var thursdayDate = this._thursdayOfSameWeek(date);
+ // Get the year the thursday (and therefor the week) belongs to
+ var weekYear = thursdayDate.getFullYear();
+ // Get the thursday of the week january 4th belongs to
+ // (which defines week 1 of a year)
+ var thursdayWeek1 = this._thursdayOfSameWeek(new Date(weekYear, 0, 4));
+ // Calculate the calendar week
+ return Math.floor(1.5 + (thursdayDate.getTime() - thursdayWeek1.getTime()) / 86400000 / 7)
+}
+
+
+/**
+ * Formats a date.
+ * <p>
+ * Uses the same syntax as
+ * <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html" target="_blank">
+ * the SimpleDateFormat class in Java</a>.
+ *
+ * @param date {Date} The date to format.
+ * @return {string} the formatted date.
+ */
+qx.Proto.format = function(date) {
+ var DateFormat = qx.util.format.DateFormat;
+
+ var fullYear = date.getFullYear();
+ var month = date.getMonth();
+ var dayOfMonth = date.getDate();
+ var dayOfWeek = date.getDay();
+ var hours = date.getHours();
+ var minutes = date.getMinutes();
+ var seconds = date.getSeconds();
+ var ms = date.getMilliseconds();
+ var timezone = date.getTimezoneOffset() / 60;
+
+ // Create the output
+ this._initFormatTree();
+ var output = "";
+ for (var i = 0; i < this._formatTree.length; i++) {
+ var currAtom = this._formatTree[i];
+
+ if (currAtom.type == "literal") {
+ output += currAtom.text;
+ } else {
+ // This is a wildcard
+ var wildcardChar = currAtom.character;
+ var wildcardSize = currAtom.size;
+
+ // Get its replacement
+ var replacement = "?";
+ switch (wildcardChar) {
+ // TODO: G - Era designator (e.g. AD). Problem: Not covered by JScript Date class
+ // TODO: W - Week in month (e.g. 2)
+ // TODO: F - Day of week in month (e.g. 2). Problem: What is this?
+
+ case 'y': // Year
+ if (wildcardSize == 2) {
+ replacement = this._fillNumber(fullYear % 100, 2);
+ } else if (wildcardSize == 4) {
+ replacement = fullYear;
+ }
+ break;
+ case 'D': // Day in year (e.g. 189)
+ replacement = this._fillNumber(this._getDayInYear(date), wildcardSize); break;
+ case 'd': // Day in month
+ replacement = this._fillNumber(dayOfMonth, wildcardSize); break;
+ case 'w': // Week in year (e.g. 27)
+ replacement = this._fillNumber(this._getWeekInYear(date), wildcardSize); break;
+ case 'E': // Day in week
+ if (wildcardSize == 2) {
+ replacement = DateFormat.SHORT_DAY_OF_WEEK_NAMES[dayOfWeek];
+ } else if (wildcardSize == 3) {
+ replacement = DateFormat.MEDIUM_DAY_OF_WEEK_NAMES[dayOfWeek];
+ } else if (wildcardSize == 4) {
+ replacement = DateFormat.FULL_DAY_OF_WEEK_NAMES[dayOfWeek];
+ }
+ break;
+ case 'M': // Month
+ if (wildcardSize == 1 || wildcardSize == 2) {
+ replacement = this._fillNumber(month + 1, wildcardSize);
+ } else if (wildcardSize == 3) {
+ replacement = DateFormat.SHORT_MONTH_NAMES[month];
+ } else if (wildcardSize == 4) {
+ replacement = DateFormat.FULL_MONTH_NAMES[month];
+ }
+ break;
+ case 'a': // am/pm marker
+ // NOTE: 0:00 is am, 12:00 is pm
+ replacement = (hours < 12) ? DateFormat.AM_MARKER : DateFormat.PM_MARKER; break;
+ case 'H': // Hour in day (0-23)
+ replacement = this._fillNumber(hours, wildcardSize); break;
+ case 'k': // Hour in day (1-24)
+ replacement = this._fillNumber((hours == 0) ? 24 : hours, wildcardSize); break;
+ case 'K': // Hour in am/pm (0-11)
+ replacement = this._fillNumber(hours % 12, wildcardSize); break;
+ case 'h': // Hour in am/pm (1-12)
+ replacement = this._fillNumber(((hours % 12) == 0) ? 12 : (hours % 12), wildcardSize); break;
+ case 'm': // Minute in hour
+ replacement = this._fillNumber(minutes, wildcardSize); break;
+ case 's': // Second in minute
+ replacement = this._fillNumber(seconds, wildcardSize); break;
+ case 'S': // Millisecond
+ replacement = this._fillNumber(ms, wildcardSize); break;
+ case 'z': // Time zone
+ if (wildcardSize == 1) {
+ replacement = "GMT" + ((timezone < 0) ? "-" : "+") + this._fillNumber(timezone) + ":00";
+ } else if (wildcardSize == 2) {
+ replacement = DateFormat.MEDIUM_TIMEZONE_NAMES[timezone];
+ } else if (wildcardSize == 3) {
+ replacement = DateFormat.FULL_TIMEZONE_NAMES[timezone];
+ }
+ break;
+ case 'Z': // RFC 822 time zone
+ replacement = ((timezone < 0) ? "-" : "+") + this._fillNumber(timezone, 2) + "00";
+ }
+ output += replacement;
+ }
+ }
+
+ return output;
+}
+
+
+/**
+ * Parses a date.
+ * <p>
+ * Uses the same syntax as
+ * <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html" target="_blank">
+ * the SimpleDateFormat class in Java</a>.
+ *
+ * @param dateStr {string} the date to parse.
+ * @return {Date} the parsed date.
+ * @throws If the format is not well formed or if the date string does not
+ * match to the format.
+ */
+qx.Proto.parse = function(dateStr) {
+ this._initParseFeed();
+
+ // Apply the regex
+ var hit = this._parseFeed.regex.exec(dateStr);
+ if (hit == null) {
+ throw new Error("Date string '" + dateStr + "' does not match the date format: " + this._format);
+ }
+
+ // Apply the rules
+ var dateValues = { year:1970, month:0, day:1, hour:0, ispm:false, min:0, sec:0, ms:0 }
+ var currGroup = 1;
+ for (var i = 0; i < this._parseFeed.usedRules.length; i++) {
+ var rule = this._parseFeed.usedRules[i];
+
+ var value = hit[currGroup];
+ if (rule.field != null) {
+ dateValues[rule.field] = parseInt(value, 10);
+ } else {
+ rule.manipulator(dateValues, value);
+ }
+
+ currGroup += (rule.groups == null) ? 1 : rule.groups;
+ }
+
+ var date = new Date(dateValues.year, dateValues.month, dateValues.day,
+ (dateValues.ispm) ? (dateValues.hour + 12) : dateValues.hour,
+ dateValues.min, dateValues.sec, dateValues.ms);
+ if (dateValues.month != date.getMonth() || dateValues.year != date.getFullYear()) {
+ // TODO: check if this is also necessary for the time components
+ throw new Error("Error parsing date '" + dateStr + "': the value for day or month is too large");
+ }
+
+ return date;
+}
+
+
+
+/**
+ * Helper method for {@link #format()} and {@link #parse()}.
+ * Parses the date format.
+ */
+qx.Proto._initFormatTree = function() {
+ if (this._formatTree != null) {
+ return;
+ }
+
+ this._formatTree = [];
+
+ var currWildcardChar;
+ var currWildcardSize;
+ var currLiteral = "";
+ var format = this._format;
+ for (var i = 0; i < format.length; i++) {
+ var currChar = format.charAt(i);
+
+ // Check whether we are currently in a wildcard
+ if (currWildcardChar != null) {
+ // Check whether the currChar belongs to that wildcard
+ if (currChar == currWildcardChar) {
+ // It does -> Raise the size
+ currWildcardSize++;
+ } else {
+ // It does not -> The current wildcard is done
+ this._formatTree.push({ type:"wildcard", character:currWildcardChar, size:currWildcardSize });
+ currWildcardChar = null;
+ }
+ }
+
+ if (currWildcardChar == null) {
+ // We are not (any more) in a wildcard -> Check what's starting here
+ if ((currChar >= 'a' && currChar <= 'z') || (currChar >= 'A' && currChar <= 'Z')) {
+ // This is a letter -> All letters are wildcards
+
+ // Add the literal
+ if (currLiteral.length > 0) {
+ this._formatTree.push({ type:"literal", text:currLiteral });
+ currLiteral = "";
+ }
+
+ // Start a new wildcard
+ currWildcardChar = currChar;
+ currWildcardSize = 1;
+ } else {
+ // This is a literal -> Add it to the current literal
+ currLiteral += currChar;
+ }
+ }
+ }
+
+ // Add the last wildcard or literal
+ if (currWildcardChar != null) {
+ this._formatTree.push({ type:"wildcard", character:currWildcardChar, size:currWildcardSize });
+ } else if (currLiteral.length > 0) {
+ this._formatTree.push({ type:"literal", text:currLiteral });
+ }
+}
+
+
+/**
+ * Initializes the parse feed.
+ * <p>
+ * The parse contains everything needed for parsing: The regular expression
+ * (in compiled and uncompiled form) and the used rules.
+ *
+ * @return {Map} the parse feed.
+ */
+qx.Proto._initParseFeed = function() {
+ if (this._parseFeed != null) {
+ // We already have the farse feed
+ return;
+ }
+
+ var DateFormat = qx.util.format.DateFormat;
+
+ // Initialize the rules
+ this._initParseRules();
+ this._initFormatTree();
+
+ // Get the used rules and construct the regex pattern
+ var usedRules = [];
+ var pattern = "^";
+ for (var atomIdx = 0; atomIdx < this._formatTree.length; atomIdx++) {
+ var currAtom = this._formatTree[atomIdx];
+
+ if (currAtom.type == "literal") {
+ pattern += qx.lang.String.escapeRegexpChars(currAtom.text);
+ } else {
+ // This is a wildcard
+ var wildcardChar = currAtom.character;
+ var wildcardSize = currAtom.size;
+
+ // Get the rule for this wildcard
+ var wildcardRule;
+ for (var ruleIdx = 0; ruleIdx < DateFormat._parseRules.length; ruleIdx++) {
+ var rule = DateFormat._parseRules[ruleIdx];
+ if (wildcardChar == rule.pattern.charAt(0) && wildcardSize == rule.pattern.length) {
+ // We found the right rule for the wildcard
+ wildcardRule = rule;
+ break;
+ }
+ }
+
+ // Check the rule
+ if (wildcardRule == null) {
+ // We have no rule for that wildcard -> Malformed date format
+ var wildcardStr = "";
+ for (var i = 0; i < wildcardSize; i++) {
+ wildcardStr += wildcardChar;
+ }
+ throw new Error("Malformed date format: " + format + ". Wildcard "
+ + wildcardStr + " is not supported");
+ } else {
+ // Add the rule to the pattern
+ usedRules.push(wildcardRule);
+ pattern += wildcardRule.regex;
+ }
+ }
+ }
+ pattern += "$";
+
+ // Create the regex
+ var regex;
+ try {
+ regex = new RegExp(pattern);
+ }
+ catch (exc) {
+ throw new Error("Malformed date format: " + format);
+ }
+
+ // Create the this._parseFeed
+ this._parseFeed = { regex:regex, "usedRules":usedRules, pattern:pattern }
+}
+
+
+/**
+ * Initializes the static parse rules.
+ */
+qx.Proto._initParseRules = function() {
+ var DateFormat = qx.util.format.DateFormat;
+
+ if (DateFormat._parseRules != null) {
+ // The parse rules are already initialized
+ return;
+ }
+
+ DateFormat._parseRules = [];
+
+ var yearManipulator = function(dateValues, value) {
+ value = parseInt(value, 10);
+ if (value < DateFormat.ASSUME_YEAR_2000_THRESHOLD) {
+ value += 2000;
+ } else if (value < 100) {
+ value += 1900;
+ }
+
+ dateValues.year = value;
+ }
+
+ var monthManipulator = function(dateValues, value) {
+ dateValues.month = parseInt(value, 10) - 1;
+ }
+
+ var ampmManipulator = function(dateValues, value) {
+ dateValues.ispm = (value == DateFormat.PM_MARKER);
+ }
+
+ var noZeroHourManipulator = function(dateValues, value) {
+ dateValues.hour = parseInt(value, 10) % 24;
+ }
+
+ var noZeroAmPmHourManipulator = function(dateValues, value) {
+ dateValues.hour = parseInt(value, 10) % 12;
+ }
+
+ // Unsupported: w (Week in year), W (Week in month), D (Day in year),
+ // F (Day of week in month), z (time zone) reason: no setter in Date class,
+ // Z (RFC 822 time zone) reason: no setter in Date class
+
+ DateFormat._parseRules.push({ pattern:"yyyy", regex:"(\\d\\d(\\d\\d)?)",
+ groups:2, manipulator:yearManipulator } );
+ DateFormat._parseRules.push({ pattern:"yy", regex:"(\\d\\d)", manipulator:yearManipulator } );
+ // TODO: "MMMM", "MMM" (Month names)
+ DateFormat._parseRules.push({ pattern:"MM", regex:"(\\d\\d?)", manipulator:monthManipulator });
+ DateFormat._parseRules.push({ pattern:"dd", regex:"(\\d\\d?)", field:"day" });
+ DateFormat._parseRules.push({ pattern:"d", regex:"(\\d\\d?)", field:"day" });
+ // TODO: "EEEE", "EEE", "EE" (Day in week names)
+ DateFormat._parseRules.push({ pattern:"a",
+ regex:"(" + DateFormat.AM_MARKER + "|" + DateFormat.PM_MARKER + ")",
+ manipulator:ampmManipulator });
+ DateFormat._parseRules.push({ pattern:"HH", regex:"(\\d\\d?)", field:"hour" });
+ DateFormat._parseRules.push({ pattern:"H", regex:"(\\d\\d?)", field:"hour" });
+ DateFormat._parseRules.push({ pattern:"kk", regex:"(\\d\\d?)", manipulator:noZeroHourManipulator });
+ DateFormat._parseRules.push({ pattern:"k", regex:"(\\d\\d?)", manipulator:noZeroHourManipulator });
+ DateFormat._parseRules.push({ pattern:"KK", regex:"(\\d\\d?)", field:"hour" });
+ DateFormat._parseRules.push({ pattern:"K", regex:"(\\d\\d?)", field:"hour" });
+ DateFormat._parseRules.push({ pattern:"hh", regex:"(\\d\\d?)", manipulator:noZeroAmPmHourManipulator });
+ DateFormat._parseRules.push({ pattern:"h", regex:"(\\d\\d?)", manipulator:noZeroAmPmHourManipulator });
+ DateFormat._parseRules.push({ pattern:"mm", regex:"(\\d\\d?)", field:"min" });
+ DateFormat._parseRules.push({ pattern:"m", regex:"(\\d\\d?)", field:"min" });
+ DateFormat._parseRules.push({ pattern:"ss", regex:"(\\d\\d?)", field:"sec" });
+ DateFormat._parseRules.push({ pattern:"s", regex:"(\\d\\d?)", field:"sec" });
+ DateFormat._parseRules.push({ pattern:"SSS", regex:"(\\d\\d?\\d?)", field:"ms" });
+ DateFormat._parseRules.push({ pattern:"SS", regex:"(\\d\\d?\\d?)", field:"ms" });
+ DateFormat._parseRules.push({ pattern:"S", regex:"(\\d\\d?\\d?)", field:"ms" });
+}
+
+
+/**
+ * Returns a <code>DateFomat</code> instance that uses the
+ * {@link #DEFAULT_DATE_TIME_FORMAT}.
+ *
+ * @return {string} the date/time instance.
+ */
+qx.Class.getDateTimeInstance = function() {
+ var DateFormat = qx.util.format.DateFormat;
+
+ if (DateFormat._dateTimeInstance == null) {
+ DateFormat._dateTimeInstance = new DateFormat();
+ }
+ return DateFormat._dateTimeInstance;
+}
+
+
+/**
+ * Returns a <code>DateFomat</code> instance that uses the
+ * {@link #DEFAULT_DATE_FORMAT}.
+ *
+ * @return {string} the date instance.
+ */
+qx.Class.getDateInstance = function() {
+ var DateFormat = qx.util.format.DateFormat;
+
+ if (DateFormat._dateInstance == null) {
+ DateFormat._dateInstance = new DateFormat(DateFormat.DEFAULT_DATE_FORMAT);
+ }
+ return DateFormat._dateInstance;
+}
+
+
+/**
+ * (int) The threshold until when a year should be assumed to belong to the
+ * 21st century (e.g. 12 -> 2012). Years over this threshold but below 100 will be
+ * assumed to belong to the 20th century (e.g. 88 -> 1988). Years over 100 will be
+ * used unchanged (e.g. 1792 -> 1792).
+ */
+qx.Class.ASSUME_YEAR_2000_THRESHOLD = 30;
+
+/** {string} The short date format. */
+qx.Class.SHORT_DATE_FORMAT = "MM/dd/yyyy";
+
+/** {string} The medium date format. */
+qx.Class.MEDIUM_DATE_FORMAT = "MMM dd, yyyy";
+
+/** {string} The long date format. */
+qx.Class.LONG_DATE_FORMAT = "MMMM dd, yyyy";
+
+/** {string} The full date format. */
+qx.Class.FULL_DATE_FORMAT = "EEEE, MMMM dd, yyyy";
+
+/** {string} The short time format. */
+qx.Class.SHORT_TIME_FORMAT = "HH:mm";
+
+/** {string} The medium time format. */
+qx.Class.MEDIUM_TIME_FORMAT = qx.util.format.DateFormat.SHORT_TIME_FORMAT;
+
+/** {string} The long time format. */
+qx.Class.LONG_TIME_FORMAT = "HH:mm:ss";
+
+/** {string} The full time format. */
+qx.Class.FULL_TIME_FORMAT = "HH:mm:ss zz";
+
+/** {string} The short date-time format. */
+qx.Class.SHORT_DATE_TIME_FORMAT
+ = qx.util.format.DateFormat.SHORT_DATE_FORMAT + " "
+ + qx.util.format.DateFormat.SHORT_TIME_FORMAT;
+
+/** {string} The medium date-time format. */
+qx.Class.MEDIUM_DATE_TIME_FORMAT
+ = qx.util.format.DateFormat.MEDIUM_DATE_FORMAT + " "
+ + qx.util.format.DateFormat.MEDIUM_TIME_FORMAT;
+
+/** {string} The long date-time format. */
+qx.Class.LONG_DATE_TIME_FORMAT
+ = qx.util.format.DateFormat.LONG_DATE_FORMAT + " "
+ + qx.util.format.DateFormat.LONG_TIME_FORMAT;
+
+/** {string} The full date-time format. */
+qx.Class.FULL_DATE_TIME_FORMAT
+ = qx.util.format.DateFormat.FULL_DATE_FORMAT + " "
+ + qx.util.format.DateFormat.FULL_TIME_FORMAT;
+
+
+/** {string} The date format used for logging. */
+qx.Class.LOGGING_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
+
+/** {string} The default date/time format. */
+qx.Class.DEFAULT_DATE_TIME_FORMAT = qx.util.format.DateFormat.LOGGING_DATE_TIME_FORMAT;
+
+/** {string} The default date format. */
+qx.Class.DEFAULT_DATE_FORMAT = qx.util.format.DateFormat.SHORT_DATE_FORMAT;
+
+/** {string} The am marker. */
+qx.Class.AM_MARKER = "am";
+
+/** {string} The pm marker. */
+qx.Class.PM_MARKER = "pm";
+
+/** {string[]} The full month names. */
+qx.Class.FULL_MONTH_NAMES = [
+ "January", "February", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November", "December"
+];
+
+/** {string[]} The short month names. */
+qx.Class.SHORT_MONTH_NAMES = [
+ "Jan", "Feb", "Mar", "Apr", "Mai", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+];
+
+/** {string[]} The short (two letter) day of week names. */
+qx.Class.SHORT_DAY_OF_WEEK_NAMES = [
+ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"
+];
+
+/** {string[]} The medium (three letter) day of week names. */
+qx.Class.MEDIUM_DAY_OF_WEEK_NAMES = [
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+];
+
+/** {string[]} The full day of week names. */
+qx.Class.FULL_DAY_OF_WEEK_NAMES = [
+ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
+];
+
+/** {string[]} The medium (three letter) timezone names. */
+qx.Class.MEDIUM_TIMEZONE_NAMES = [
+ "GMT" // TODO: fill up
+];
+
+/** {string[]} The full timezone names. */
+qx.Class.FULL_TIMEZONE_NAMES = [
+ "Greenwich Mean Time" // TODO: fill up
+];
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/Format.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/Format.js
new file mode 100644
index 0000000000..463d2b3595
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/Format.js
@@ -0,0 +1,51 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * Superclass for formatters and parsers.
+ */
+qx.OO.defineClass("qx.util.format.Format", qx.core.Object,
+function() {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Formats an object.
+ *
+ * @param obj {var} The object to format.
+ * @return {string} the formatted object.
+ */
+qx.Proto.format = function(obj) {
+ throw new Error("format is abstract");
+}
+
+
+/**
+ * Parses an object.
+ *
+ * @param str {string} the string to parse.
+ * @return {var} the parsed object.
+ */
+qx.Proto.parse = function(str) {
+ throw new Error("parse is abstract");
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/NumberFormat.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/NumberFormat.js
new file mode 100644
index 0000000000..2b3f2c954a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/format/NumberFormat.js
@@ -0,0 +1,216 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by STZ-IDA, Germany, http://www.stz-ida.de
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Til Schneider (til132)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+/**
+ * A formatter and parser for numbers.
+ */
+qx.OO.defineClass("qx.util.format.NumberFormat", qx.util.format.Format,
+function() {
+ qx.util.format.Format.call(this);
+});
+
+
+/**
+ * The minimum number of integer digits (digits before the decimal separator).
+ * Missing digits will be filled up with 0 ("19" -> "0019").
+ */
+qx.OO.addProperty({ name:"minimumIntegerDigits", type:"number", defaultValue:0, allowNull:false });
+
+/**
+ * The maximum number of integer digits (superfluos digits will be cut off
+ * ("1923" -> "23").
+ */
+qx.OO.addProperty({ name:"maximumIntegerDigits", type:"number", defaultValue:null });
+
+/**
+ * The minimum number of fraction digits (digits after the decimal separator).
+ * Missing digits will be filled up with 0 ("1.5" -> "1.500")
+ */
+qx.OO.addProperty({ name:"minimumFractionDigits", type:"number", defaultValue:0, allowNull:false });
+
+/**
+ * The maximum number of fraction digits (digits after the decimal separator).
+ * Superflous digits will cause rounding ("1.8277" -> "1.83")
+ */
+qx.OO.addProperty({ name:"maximumFractionDigits", type:"number", defaultValue:null });
+
+/** Whether thousand groupings should be used {e.g. "1,432,234.65"}. */
+qx.OO.addProperty({ name:"groupingUsed", type:"boolean", defaultValue:true, allowNull:false });
+
+/** The prefix to put before the number {"EUR " -> "EUR 12.31"}. */
+qx.OO.addProperty({ name:"prefix", type:"string", defaultValue:"", allowNull:false });
+
+/** Sets the postfix to put after the number {" %" -> "56.13 %"}. */
+qx.OO.addProperty({ name:"postfix", type:"string", defaultValue:"", allowNull:false });
+
+
+/**
+ * Formats a number.
+ *
+ * @param num {number} the number to format.
+ * @return {string} the formatted number as a string.
+ */
+qx.Proto.format = function(num) {
+ var NumberFormat = qx.util.format.NumberFormat;
+
+ var negative = (num < 0);
+ if (negative) {
+ num = -num;
+ }
+ if (this.getMaximumFractionDigits() != null) {
+ // Do the rounding
+ var mover = Math.pow(10, this.getMaximumFractionDigits());
+ num = Math.round(num * mover) / mover;
+ }
+
+ if (num != 0) { // Math.log(0) = -Infinity
+ var integerDigits = Math.max(parseInt(Math.log(num) / Math.LN10) + 1, 1);
+ } else {
+ integerDigits = 1;
+ }
+
+ var numStr = "" + num;
+
+ // Prepare the integer part
+ var integerStr = numStr.substring(0, integerDigits);
+ while (integerStr.length < this.getMinimumIntegerDigits()) {
+ integerStr = "0" + integerStr;
+ }
+ if (this.getMaximumIntegerDigits() != null && integerStr.length > this.getMaximumIntegerDigits()) {
+ // NOTE: We cut off even though we did rounding before, because there
+ // may be rounding errors ("12.24000000000001" -> "12.24")
+ integerStr = integerStr.substring(integerStr.length - this.getMaximumIntegerDigits());
+ }
+
+ // Prepare the fraction part
+ var fractionStr = numStr.substring(integerDigits + 1);
+ while (fractionStr.length < this.getMinimumFractionDigits()) {
+ fractionStr += "0";
+ }
+ if (this.getMaximumFractionDigits() != -1 && fractionStr.length > this.getMaximumFractionDigits()) {
+ // We have already rounded -> Just cut off the rest
+ fractionStr = fractionStr.substring(0, this.getMaximumFractionDigits());
+ }
+
+ // Add the thousand groupings
+ if (this.getGroupingUsed()) {
+ var origIntegerStr = integerStr;
+ integerStr = "";
+ var groupPos;
+ for (groupPos = origIntegerStr.length; groupPos > 3; groupPos -= 3) {
+ integerStr = NumberFormat.GROUPING_SEPARATOR
+ + origIntegerStr.substring(groupPos - 3, groupPos) + integerStr;
+ }
+ integerStr = origIntegerStr.substring(0, groupPos) + integerStr;
+ }
+
+ // Workaround: prefix and postfix are null even their defaultValue is "" and
+ // allowNull is set to false?!?
+ var prefix = this.getPrefix() ? this.getPrefix() : "";
+ var postfix = this.getPostfix() ? this.getPostfix() : "";
+
+ // Assemble the number
+ var str = prefix + (negative ? "-" : "") + integerStr;
+ if (fractionStr.length > 0) {
+ str += NumberFormat.DECIMAL_SEPARATOR + fractionStr;
+ }
+ str += postfix;
+
+ return str;
+}
+
+
+/**
+ * Parses a number.
+ *
+ * @param str {string} the string to parse.
+ *
+ * @return {double} the number.
+ */
+qx.Proto.parse = function(str) {
+ var NumberFormat = qx.util.format.NumberFormat;
+
+ // use the escaped separators for regexp
+ var groupSepEsc = qx.lang.String.escapeRegexpChars(NumberFormat.GROUPING_SEPARATOR);
+ var decimalSepEsc = qx.lang.String.escapeRegexpChars(NumberFormat.DECIMAL_SEPARATOR);
+
+ var regex = new RegExp(qx.lang.String.escapeRegexpChars(this.getPrefix())
+ + '(-)?([0-9' + groupSepEsc + ']+)'
+ + '(' + decimalSepEsc + '\\d+)?'
+ + qx.lang.String.escapeRegexpChars(this.getPostfix()));
+
+ var hit = regex.exec(str);
+ if (hit == null) {
+ throw new Error("Number string '" + str + "' does not match the number format");
+ }
+
+ var negative = (hit[1] == "-");
+ var integerStr = hit[2];
+ var fractionStr = hit[3];
+
+ // Remove the thousand groupings
+ integerStr = integerStr.replace(new RegExp(groupSepEsc), "");
+
+ var asStr = (negative ? "-" : "") + integerStr;
+ if (fractionStr != null && fractionStr.length != 0) {
+ // Remove the leading decimal separator from the fractions string
+ fractionStr = fractionStr.replace(new RegExp(decimalSepEsc),"");
+ asStr += "." + fractionStr;
+ }
+ return parseFloat(asStr);
+}
+
+
+/**
+ * Returns the default number format.
+ *
+ * @return {NumberFormat} the default number format.
+ */
+qx.Class.getInstance = function() {
+ var NumberFormat = qx.util.format.NumberFormat;
+ if (NumberFormat._instance == null) {
+ NumberFormat._instance = new NumberFormat();
+ }
+ return NumberFormat._instance;
+}
+
+
+/**
+ * Returns an integer number format.
+ *
+ * @return {NumberFormat} an integer number format.
+ */
+qx.Class.getIntegerInstance = function() {
+ var NumberFormat = qx.util.format.NumberFormat;
+ if (NumberFormat._integerInstance == null) {
+ NumberFormat._integerInstance = new NumberFormat();
+ NumberFormat._integerInstance.setMaximumFractionDigits(0);
+ }
+ return NumberFormat._integerInstance;
+}
+
+
+/** {string} The decimal separator. */
+qx.Class.DECIMAL_SEPARATOR = ".";
+
+/** {string} The thousand grouping separator. */
+qx.Class.GROUPING_SEPARATOR = ",";
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js
new file mode 100644
index 0000000000..e1a1605c83
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js
@@ -0,0 +1,1189 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(util_fsm)
+
+************************************************************************ */
+
+/**
+ * A finite state machine.
+ *
+ * See {@see qx.util.finitestatemacine.State} for details on creating States,
+ * and {@see qx.util.finitestatemacine.Transitions} for details on creating
+ * transitions between states.
+ *
+ * *EXPERIMENTAL*
+ * The interface to the finite state machine, states, and transitions is
+ * experimental. It may change in non-backward-compatible ways as more
+ * experience is gained in its use.
+ *
+ * @param machineName {string} The name of this finite state machine
+ *
+ */
+qx.OO.defineClass("qx.util.fsm.FiniteStateMachine", qx.core.Target,
+function(machineName)
+{
+ // Call our superclass' constructor
+ qx.core.Target.call(this);
+
+ // Save the machine name
+ this.setName(machineName);
+
+ // Initialize the states object
+ this._states = { };
+
+ // Initialize the saved-states stack
+ this._savedStates = [ ];
+
+ // Initialize the pending event queue
+ this._eventQueue = [ ];
+
+ // Initialize the blocked events queue
+ this._blockedEvents = [ ];
+
+ // Create the friendlyToObject" object. Each object has as its property
+ // name, the friendly name of the object; and as its property value, the
+ // object itself.
+ this._friendlyToObject = { };
+
+ // Create the "friendlyToHash" object. Each object has as its property
+ // name, the friendly name of the object; and as its property value, the
+ // hash code of the object.
+ this._friendlyToHash = { };
+
+ // Create the "hashToFriendly" object. Each object has as its property
+ // name, the hash code of the object; and as its property value, the
+ // friendly name of the object.
+ this._hashToFriendly = { };
+
+ // Friendly names can be added to groups, for easy manipulation of enabling
+ // and disabling groups of widgets. Track which friendly names are in which
+ // group.
+ this._groupToFriendly = { };
+
+ // We also need to be able to map back from friendly name to the groups it
+ // is in.
+ this._friendlyToGroups = { };
+});
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * The name of this finite state machine (for debug messages)
+ */
+qx.OO.addProperty(
+ {
+ name : "name",
+ type : "string"
+ });
+
+/**
+ * The current state of the finite state machine.
+ */
+qx.OO.addProperty(
+ {
+ name : "state",
+ type : "string"
+ });
+
+/**
+ * The previous state of the finite state machine, i.e. the state from which
+ * we most recently transitioned. Note that this could be the same as the
+ * current state if a successful transition brought us back to the same
+ * state.
+ */
+qx.OO.addProperty(
+ {
+ name : "previousState",
+ type : "string"
+ });
+
+/**
+ * The state to which we will be transitioning. This property is valid only
+ * during a Transition's ontransition function and a State's onexit function.
+ * At all other times, it is null.
+ */
+qx.OO.addProperty(
+ {
+ name : "nextState",
+ type : "string"
+ });
+
+
+/**
+ * The maximum number of states which may pushed onto the state-stack. It is
+ * generally a poor idea to have very many states saved on a stack. Following
+ * program logic becomes very difficult, and the code can be highly
+ * unmaintainable. The default should be more than adequate. You've been
+ * warned.
+ */
+qx.OO.addProperty(
+ {
+ name : "maxSavedStates",
+ type : "number",
+ defaultValue : 5
+ });
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+
+/**
+ * Add a state to the finite state machine.
+ *
+ * @param state {qx.util.fsm.State}
+ * An object of class qx.util.fsm.State representing a state
+ * which is to be a part of this finite state machine.
+ */
+qx.Proto.addState = function(state)
+{
+ // Ensure that we got valid state info
+ if (! state instanceof qx.util.fsm.State)
+ {
+ throw new Error("Invalid state: not an instance of " +
+ "qx.util.fsm.State");
+ }
+
+ // Retrieve the name of this state
+ var stateName = state.getName();
+
+ // Ensure that the state name doesn't already exist
+ if (stateName in this._states)
+ {
+ throw new Error("State " + state + " already exists");
+ }
+
+ // Add the new state object to the finite state machine
+ this._states[stateName] = state;
+};
+
+
+/**
+ * Add an object (typically a widget) that is to be accessed during state
+ * transitions, to the finite state machine.
+ *
+ * @param friendlyName {string}
+ * The friendly name to used for access to the object being added.
+ *
+ * @param obj {Object}
+ * The object to associate with the specified friendly name
+ *
+ * @param groupNames {Array}
+ * An optional list of group names of which this object is a member.
+ */
+qx.Proto.addObject = function(friendlyName, obj, groupNames)
+{
+ var hash = obj.toHashCode();
+ this._friendlyToHash[friendlyName] = hash;
+ this._hashToFriendly[hash] = friendlyName;
+ this._friendlyToObject[friendlyName] = obj;
+
+ // If no groupNames are specified, we're done.
+ if (! groupNames)
+ {
+ return;
+ }
+
+ // Allow either a single group name or an array of group names. If the
+ // former, we convert it to the latter to make the subsequent code simpler.
+ if (typeof(groupNames) == "string")
+ {
+ groupNames = [ groupNames ];
+ }
+
+ // For each group that this friendly name is to be a member of...
+ for (var i = 0; i < groupNames.length; i++)
+ {
+ var groupName = groupNames[i];
+
+ // If the group name doesn't yet exist...
+ if (! this._groupToFriendly[groupName])
+ {
+ // ... then create it.
+ this._groupToFriendly[groupName] = { };
+ }
+
+ // Add the friendly name to the list of names in this group
+ this._groupToFriendly[groupName][friendlyName] = true;
+
+ // If the friendly name group mapping doesn't yet exist...
+ if (! this._friendlyToGroups[friendlyName])
+ {
+ // ... then create it.
+ this._friendlyToGroups[friendlyName] = [ ];
+ }
+
+ // Append this group name to the list of groups this friendly name is in
+ this._friendlyToGroups[friendlyName] =
+ this._friendlyToGroups[friendlyName].concat(groupNames);
+ }
+};
+
+
+/**
+ * Remove an object which had previously been added by {@see #addObject}.
+ *
+ * @param friendlyName {string}
+ * The friendly name associated with an object, specifying which object is
+ * to be removed.
+ */
+qx.Proto.removeObject = function(friendlyName)
+{
+ var hash = this._friendlyToHash[friendlyName];
+
+ // Delete references to any groupos this friendly name was in
+ if (this._friendlyToGroups[friendlyName])
+ {
+ for (groupName in this._friendlyToGroups[friendlyName])
+ {
+ delete this._groupToFriendly[groupName];
+ }
+
+ delete this._friendlyToGroups[friendlyName];
+ }
+
+ // Delete the friendly name
+ delete this._hashToFriendly[hash];
+ delete this._friendlyToHash[friendlyName];
+ delete this._friendlyToObject[friendlyName];
+};
+
+
+/**
+ * Retrieve an object previously saved via {@see #addObject}, using its
+ * Friendly Name.
+ *
+ * @param friendlyName {string}
+ * The friendly name of the object to be retrieved.
+ *
+ * @return {Object}
+ * The object which has the specified friendly name, or undefined if no
+ * object has been associated with that name.
+ */
+qx.Proto.getObject = function(friendlyName)
+{
+ return this._friendlyToObject[friendlyName];
+};
+
+
+/**
+ * Get the friendly name of an object.
+ *
+ * @param obj {Object} The object for which the friendly name is desired
+ *
+ * @return {string}
+ * If the object has been previously registered via {@see #addObject}, then
+ * a reference to the object is returned; otherwise, null.
+ */
+qx.Proto.getFriendlyName = function(obj)
+{
+ var hash = obj.toHashCode();
+ return hash ? this.getObject(this._hashToFriendly[hash]) : null;
+};
+
+
+/**
+ * Retrieve the list of objects which have registered, via {@see addObject} as
+ * being members of the specified group.
+ *
+ * @param groupName {string}
+ * The name of the group for which the member list is desired.
+ *
+ * @return {Array}
+ * An array containing the friendly names of any objects which are members
+ * of the specified group. The resultant array may be empty.
+ */
+qx.Proto.getGroupObjects = function(groupName)
+{
+ var a = [ ];
+
+ for (var name in this._groupToFriendly[groupName])
+ {
+ a.push(name);
+ }
+
+ return a;
+};
+
+/**
+ * Start (or restart, after it has terminated) the finite state machine from
+ * the starting state. The starting state is defined as the first state added
+ * to the finite state machine.
+ */
+qx.Proto.start = function()
+{
+ var stateName;
+
+ // Set the start state to be the first state which was added to the machine
+ for (stateName in this._states)
+ {
+ this.setState(stateName);
+ this.setPreviousState(null);
+ this.setNextState(null);
+ break;
+ }
+
+ if (! stateName)
+ {
+ throw new Error("Machine started with no available states");
+ }
+
+ var debugFunctions =
+ (qx.Settings.getValueOfClass("qx.util.fsm.FiniteStateMachine",
+ "debugFlags") &
+ qx.util.fsm.FiniteStateMachine.DebugFlags.FUNCTION_DETAIL);
+
+ // Run the actionsBeforeOnentry actions for the initial state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + stateName + "#actionsBeforeOnentry");
+ }
+ this._states[stateName].getAutoActionsBeforeOnentry()(this);
+
+ // Run the entry function for the new state, if one is specified
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + stateName + "#entry");
+ }
+ this._states[stateName].getOnentry()(this, null);
+
+ // Run the actionsAfterOnentry actions for the initial state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + stateName + "#actionsAfterOnentry");
+ }
+ this._states[stateName].getAutoActionsAfterOnentry()(this);
+
+};
+
+
+/**
+ * Save the current state on the saved-state stack. A future transition can
+ * then provide, as its nextState value, the class constant:
+ *
+ * qx.util.fsm.FiniteStateMachine.StateChange.POP_STATE_STACK
+ *
+ * which will cause the next state to be whatever is at the top of the
+ * saved-state stack, and remove that top element from the saved-state stack.
+ */
+qx.Proto.pushState = function()
+{
+ // See if there's room on the state stack for a new state
+ if (this.getMaxSavedStates() >= this._savedStates.length)
+ {
+ // Nope. Programmer error.
+ throw new Error("Saved-state stack is full");
+ }
+
+ // Push the current state onto the saved-state stack
+ this._savedStates.push(this.getState());
+};
+
+
+/**
+ * Add the specified event to a list of events to be passed to the next state
+ * following state transition.
+ *
+ * @param event {qx.event.type.Event}
+ * The event to add to the event queue for processing after state change.
+ */
+qx.Proto.postponeEvent = function(event)
+{
+ // Add this event to the blocked event queue, so it will be passed to the
+ // next state upon transition.
+ this._blockedEvents.unshift(event);
+};
+
+
+/**
+ * Event listener for all event types in the finite state machine
+ *
+ * @param event {qx.event.type.Event}
+ * The event that was dispatched.
+ */
+qx.Proto.eventListener = function(event)
+{
+ // Events are enqueued upon receipt. Some events are then processed
+ // immediately; other events get processed later. We need to allow the
+ // event dispatcher to free the source event upon our return, so we'll clone
+ // it and enqueue our clone. The source event can then be disposed upon our
+ // return.
+ var e = { };
+ for (var prop in event)
+ {
+ e[prop] = event[prop];
+ }
+
+ // Add the event to the event queue
+ this._eventQueue.unshift(e);
+
+ if (qx.Settings.getValueOfClass("qx.util.fsm.FiniteStateMachine",
+ "debugFlags") &
+ qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS)
+ {
+ this.debug(this.getName() + ": Queued event: " + e.getType());
+ }
+
+ // Process events
+ this._processEvents();
+};
+
+
+/**
+ * Process all of the events on the event queue.
+ */
+qx.Proto._processEvents = function()
+{
+ // eventListener() can potentially be called while we're processing events
+ if (this._eventProcessingInProgress)
+ {
+ // We were processing already, so don't process concurrently.
+ return;
+ }
+
+ // Track that we're processing events
+ this._eventProcessingInProgress = true;
+
+ // Process each of the events on the event queue
+ while (this._eventQueue.length > 0)
+ {
+ // Pull the next event from the pending event queue
+ var event = this._eventQueue.pop();
+
+ // Run the finite state machine with this event
+ this._run(event);
+
+ // We can now dispose the event
+ event.dispose();
+ }
+
+ // We're no longer processing events
+ this._eventProcessingInProgress = false;
+};
+
+/**
+ * Run the finite state machine to process a single event.
+ *
+ * @param event {qx.event.type.Event}
+ * An event that has been dispatched. The event may be handled (if the
+ * current state handles this event type), queued (if the current state
+ * blocks this event type), or discarded (if the current state neither
+ * handles nor blocks this event type).
+ */
+qx.Proto._run = function(event)
+{
+ // For use in generated functions...
+ var fsm = this;
+
+ // State name variables
+ var thisState;
+ var nextState;
+ var prevState;
+
+ // The current State object
+ var currentState;
+
+ // The transitions available in the current State
+ var transitions;
+
+ // Events handled by the current State
+ var e;
+
+ // The action to take place upon receipt of a particular event
+ var action;
+
+ // Get the debug flags
+ var debugFlags =
+ (qx.Settings.getValueOfClass("qx.util.fsm.FiniteStateMachine",
+ "debugFlags"));
+
+ // Allow slightly faster access to determine if debug is enableda
+ var debugEvents =
+ debugFlags & qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS;
+ var debugTransitions =
+ debugFlags & qx.util.fsm.FiniteStateMachine.DebugFlags.TRANSITIONS;
+ var debugFunctions =
+ debugFlags & qx.util.fsm.FiniteStateMachine.DebugFlags.FUNCTION_DETAIL;
+ var debugObjectNotFound =
+ debugFlags & qx.util.fsm.FiniteStateMachine.DebugFlags.OBJECT_NOT_FOUND;
+
+ if (debugEvents)
+ {
+ this.debug(this.getName() + ": Process event: " + event.getType());
+ }
+
+ // Get the current state name
+ thisState = this.getState();
+
+ // Get the current State object
+ currentState = this._states[thisState];
+
+ // Get a list of the transitions available from this state
+ transitions = currentState.transitions;
+
+ // Determine how to handle this event
+ e = currentState.getEvents()[event.getType()];
+
+ // See if we actually found this event type
+ if (! e)
+ {
+ if (this.debugEvents)
+ {
+ this.debug(this.getName() + ": Event '" + event.getType() + "'" +
+ " not handled. Ignoring.");
+ }
+ return;
+ }
+
+
+ // We might have found a constant (PREDICATE or BLOCKED) or an object with
+ // each property name being the friendly name of a saved object, and the
+ // property value being one of the constants (PREDICATE or BLOCKED).
+ if (typeof(e) == "object")
+ {
+ // Individual objects are listed. Ensure target is a saved object
+ var friendly = this.getFriendlyName(event.getTarget());
+ if (! friendly)
+ {
+ // Nope, it doesn't seem so. Just discard it.
+ if (debugObjectNotFound)
+ {
+ this.debug(this.getName() + ": Could not find friendly name for '" +
+ event.getType() + "' on '" + event.getTarget() + "'");
+ }
+ return;
+ }
+
+ action = e[friendly];
+ }
+ else
+ {
+ action = e;
+ }
+
+ switch(action)
+ {
+ case qx.util.fsm.FiniteStateMachine.EventHandling.PREDICATE:
+ // Process this event. One of the transitions should handle it.
+ break;
+
+ case qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED:
+ // This event is blocked. Enqueue it for later, and get outta here.
+ this._blockedEvents.unshift(event);
+ return;
+
+ default:
+ // See if we've been given an explicit transition name
+ if (typeof(action) == "string")
+ {
+ // Yup! Ensure that it exists
+ if (transitions[action])
+ {
+ // Yup. Create a transitions object containing only this transition.
+ var trans = transitions[action];
+ transitions = { };
+ transitions[action] = trans;
+ }
+ else
+ {
+ throw new Error("Explicit transition " + action + " does not exist");
+ }
+
+ break;
+ }
+ }
+
+ // We handle the event. Try each transition in turn until we find one that
+ // is acceptable.
+ for (var t in transitions)
+ {
+ var trans = transitions[t];
+
+ // Does the predicate allow use of this transition?
+ switch(trans.getPredicate()(this, event))
+ {
+ case true:
+ // Transition is allowed. Proceed.
+ break;
+
+ case false:
+ // Transition is not allowed. Try next transition.
+ continue;
+
+ case null:
+ // Transition indicates not to try further transitions
+ return;
+
+ default:
+ throw new Error("Transition " + thisState + ":" + t +
+ " returned a value other than true, false, or null.");
+ return;
+ }
+
+ // We think we can transition to the next state. Set next state.
+ nextState = trans.getNextState();
+ if (typeof(nextState) == "string")
+ {
+ // We found a literal state name. Ensure it exists.
+ if (! nextState in this._states)
+ {
+ throw new Error("Attempt to transition to nonexistent state " +
+ nextState);
+ }
+
+ // It exists. Track it being the next state.
+ this.setNextState(nextState);
+ }
+ else
+ {
+ // If it's not a string, nextState must be a StateChange constant
+ switch(nextState)
+ {
+ case qx.util.fsm.FiniteStateMachine.StateChange.CURRENT_STATE:
+ // They want to remain in the same state.
+ nextState = thisState;
+ this.setNextState(nextState)
+ break;
+
+ case qx.util.fsm.FiniteStateMachine.StateChange.POP_STATE_STACK:
+ // Switch to the state at the top of the state stack.
+ if (this._stateStack.length == 0)
+ {
+ throw new Error("Attempt to transition to POP_STATE_STACK " +
+ "while state stack is empty.");
+ }
+
+ // Pop the state stack to retrieve the state to transition to
+ nextState = this._stateStack.pop();
+ this.setNextState(nextState);
+ break;
+
+ default:
+ throw new Error("Internal error: invalid nextState");
+ break;
+ }
+ }
+
+ // Run the actionsBeforeOntransition actions for this transition
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState + "#" + t +
+ "#autoActionsBeforeOntransition");
+ }
+ trans.getAutoActionsBeforeOntransition()(this);
+
+ // Run the 'ontransition' function
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState + "#" + t + "#ontransition");
+ }
+ trans.getOntransition()(this, event);
+
+ // Run the autoActionsAfterOntransition actions for this transition
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState + "#" + t +
+ "#autoActionsAfterOntransition");
+ }
+ trans.getAutoActionsAfterOntransition()(this);
+
+ // Run the autoActionsBeforeOnexit actions for the old state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState +
+ "#autoActionsBeforeOnexit");
+ }
+ currentState.getAutoActionsBeforeOnexit()(this);
+
+ // Run the exit function for the old state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState + "#exit");
+ }
+ currentState.getOnexit()(this, event);
+
+ // Run the autoActionsAfterOnexit actions for the old state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState + "#autoActionsAfterOnexit");
+ }
+ currentState.getAutoActionsAfterOnentry()(this);
+
+ // Reset currentState to the new state object
+ currentState = this._states[this.getNextState()];
+
+ // set previousState and state, and clear nextState, for transition
+ this.setPreviousState(thisState);
+ this.setState(this.getNextState());
+ this.setNextState(null);
+ prevState = thisState;
+ thisState = nextState;
+ nextState = undefined;
+
+ // Run the autoActionsBeforeOnentry actions for the new state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState +
+ "#autoActionsBeforeOnentry");
+ }
+ currentState.getAutoActionsBeforeOnentry()(this);
+
+ // Run the entry function for the new state, if one is specified
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState + "#entry");
+ }
+ currentState.getOnentry()(this, event);
+
+ // Run the autoActionsAfterOnentry actions for the new state
+ if (debugFunctions)
+ {
+ this.debug(this.getName() + "#" + thisState +
+ "#autoActionsAfterOnentry");
+ }
+ currentState.getAutoActionsAfterOnentry()(this);
+
+ // Add the blocked events to the pending event queue
+ if (this._blockedEvents.length > 0)
+ {
+ this._eventQueue.unshift(this._blockedEvents);
+ }
+
+ // The blocked event list is now empty
+ this._blockedEvents = [ ];
+
+ // Ensure that all actions have been flushed
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ if (debugTransitions)
+ {
+ this.debug(this.getName() + "#" + prevState + " => " +
+ this.getName() + "#" + thisState);
+ }
+
+ // See ya!
+ return;
+ }
+
+ if (debugTransitions)
+ {
+ this.debug(this.getName() + "#" + thisState +
+ ": event '" + event.getType() + "'" +
+ ": no transition found. No state change.");
+ }
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS CONSTANTS
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Constants which may be values of the nextState member in the transitionInfo
+ * parameter of the Transition constructor.
+ */
+qx.Class.StateChange =
+{
+ /** When used as a nextState value, means remain in current state */
+ CURRENT_STATE : 1,
+
+ /** When used as a nextState value, means go to most-recently pushed state */
+ POP_STATE_STACK : 2,
+
+ /** When used as a nextState value, means terminate this state machine */
+ TERMINATE : 3
+};
+
+
+/**
+ * Constants for use in the events member of the transitionInfo parameter of
+ * the Transition constructor.
+ */
+qx.Class.EventHandling =
+{
+ /**
+ * This event is handled by this state, but the predicate of a transition
+ * will determine whether to use that transition.
+ */
+ PREDICATE : 1,
+
+ /** Enqueue this event for possible use by the next state */
+ BLOCKED : 2
+};
+
+/**
+ * Debug bitmask values. Set the debug flags from the application by or-ing
+ * together bits, akin to this:
+ *
+ * qx.Settings.setCustomOfClass(
+ * "qx.util.fsm.FiniteStateMachine",
+ * "debugFlags",
+ * (qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS |
+ * qx.util.fsm.FiniteStateMachine.DebugFlags.TRANSITIONS |
+ * qx.util.fsm.FiniteStateMachine.DebugFlags.FUNCTION_DETAIL |
+ * qx.util.fsm.FiniteStateMachine.DebugFlags.OBJECT_NOT_FOUND));
+ */
+qx.Class.DebugFlags =
+{
+ /** Show events */
+ EVENTS : 1,
+
+ /** Show transitions */
+ TRANSITIONS : 2,
+
+ /** Show individual function invocations during transitions */
+ FUNCTION_DETAIL : 4,
+
+ /** When object friendly names are referenced but not found, show message */
+ OBJECT_NOT_FOUND : 8
+};
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS DEFAULT SETTINGS
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Debug flags: bitmap of DebugFlags (see Class Constants).
+ */
+qx.Settings.setDefault(
+ "debugFlags",
+ (qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.TRANSITIONS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.OBJECT_NOT_FOUND));
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS FUNCTIONS
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Common function used by {qx.util.fsm.State} and
+ * {qx.util.fsm.Transition} for checking the value provided for
+ * auto actions.
+ *
+ * Auto-action property values passed to us look akin to:
+ *
+ * <pre>
+ * {
+ * // The name of a function.
+ * "setEnabled" :
+ * [
+ * {
+ * // The parameter value(s), thus "setEnabled(true);"
+ * "parameters" : [ true ],
+ *
+ * // The function would be called on each object:
+ * // this.getObject("obj1").setEnabled(true);
+ * // this.getObject("obj2").setEnabled(true);
+ * "objects" : [ "obj1", "obj2" ]
+ *
+ * // And similarly for each object in each specified group.
+ * "groups" : [ "group1", "group2" ],
+ * }
+ * ];
+ *
+ * "setColor" :
+ * [
+ * {
+ * "parameters" : [ "blue" ]
+ * "groups" : [ "group3", "group4" ],
+ * "objects" : [ "obj3", "obj4" ]
+ * }
+ * ];
+ * };
+ * </pre>
+ *
+ * @param actionType {string}
+ * The name of the action being validated (for debug messages)
+ *
+ * @param propValue {Object}
+ * The property value which is being validated
+ *
+ * @param propData
+ * Not used
+ */
+qx.Class._commonCheckAutoActions = function(actionType, propValue, propData)
+{
+ // Validate that we received an object property value
+ if (typeof(propValue) != "object")
+ {
+ throw new Error("Invalid " + actionType + " value: " + typeof(propValue));
+ }
+
+ // We'll create a function to do the requested actions. Initialize the
+ // string into which we'll generate the common fragment added to the
+ // function for each object.
+ var funcFragment;
+
+ // Here, we'll keep the function body. Initialize a try block.
+ var func =
+ "try" +
+ "{";
+
+ var param;
+ var objectAndGroupList;
+
+ // Retrieve the function request, e.g.
+ // "enabled" :
+ for (var f in propValue)
+ {
+ // Get the function request value object, e.g.
+ // "setEnabled" :
+ // [
+ // {
+ // "parameters" : [ true ],
+ // "objects" : [ "obj1", "obj2" ]
+ // "groups" : [ "group1", "group2" ],
+ // }
+ // ];
+ var functionRequest = propValue[f];
+
+ // The function request value should be an object
+ if (! functionRequest instanceof Array)
+ {
+ throw new Error("Invalid function request type: " +
+ "expected array, found " + typeof(functionRequest));
+ }
+
+ // For each function request...
+ for (var i = 0; i < functionRequest.length; i++)
+ {
+ // Retreive the object and group list object
+ objectAndGroupList = functionRequest[i];
+
+ // The object and group list should be an object, e.g.
+ // {
+ // "parameters" : [ true ],
+ // "objects" : [ "obj1", "obj2" ]
+ // "groups" : [ "group1", "group2" ],
+ // }
+ if (typeof(objectAndGroupList) != "object")
+ {
+ throw new Error("Invalid function request parameter type: " +
+ "expected object, found " +
+ typeof(functionRequest[param]));
+ }
+
+ // Retrieve the parameter list
+ params = objectAndGroupList["parameters"];
+
+ // If it didn't exist, ...
+ if (! params)
+ {
+ // ... use an empty array.
+ params = [ ];
+ }
+ else
+ {
+ // otherwise, ensure we got an array
+ if (! params instanceof Array)
+ {
+ throw new Error("Invalid function parameters: " +
+ "expected array, found " + typeof(params));
+ }
+ }
+
+ // Create the function to call on each object. The object on which the
+ // function is called will be prepended later.
+ funcFragment = f + "(";
+
+ // For each parameter...
+ for (var j = 0; j < params.length; j++)
+ {
+ // If this isn't the first parameter, add a separator
+ if (j != 0)
+ {
+ funcFragment += ",";
+ }
+
+ if (typeof(params[j]) == "function")
+ {
+ // If the parameter is a function, arrange for it to be called
+ // at run time.
+ funcFragment += "(" + params[j] + ")(fsm)";
+ }
+ else if (typeof(params[j]) == "string")
+ {
+ // If the parameter is a string, quote it.
+ funcFragment += '"' + params[j] + '"';
+ }
+ else
+ {
+ // Otherwise, just add the parameter's literal value
+ funcFragment += params[j];
+ }
+ }
+
+ // Complete the function call
+ funcFragment += ")";
+
+ // Get the "objects" list, e.g.
+ // "objects" : [ "obj1", "obj2" ]
+ var a = objectAndGroupList["objects"];
+
+ // Was there an "objects" list?
+ if (! a)
+ {
+ // Nope. Simplify code by creating an empty array.
+ a = [ ];
+ }
+ else if (! a instanceof Array)
+ {
+ throw new Error("Invalid 'objects' list: expected array, got " +
+ typeof(a));
+ }
+
+ for (var j = 0; j < a.length; j++)
+ {
+ // Ensure we got a string
+ if (typeof(a[j]) != "string")
+ {
+ throw new Error("Invalid friendly name in 'objects' list: " + a[j]);
+ }
+
+ func += " fsm.getObject('" + a[j] + "')." + funcFragment + ";";
+ }
+
+ // Get the "groups" list, e.g.
+ // "groups" : [ "group1, "group2" ]
+ var g = objectAndGroupList["groups"];
+
+ // Was a "groups" list found?
+ if (g)
+ {
+ // Yup. Ensure it's an array.
+ if (! g instanceof Array)
+ {
+ throw new Error("Invalid 'groups' list: expected array, got " +
+ typeof(g));
+ }
+
+ for (var groupName in g)
+ {
+ // Arrange to call the function on each object in each group
+ func +=
+ " var groupObjects = " +
+ " fsm.getGroupObjects('" + g[groupName] + "');" +
+ " for (var i = 0; i < groupObjects.length; i++)" +
+ " {" +
+ " var objName = groupObjects[i];" +
+ " fsm.getObject(objName)." + funcFragment + ";" +
+ " }";
+ }
+ }
+ }
+ }
+
+ // Terminate the try block for function invocations
+ func +=
+ "}" +
+ "catch(e)" +
+ "{" +
+ " fsm.debug(e);" +
+ "}";
+
+// o = new qx.core.Object();
+// o.debug("Dynamically created " + actionType + "(fsm) { " + func + " }");
+
+ // We've now built the entire body of a function that implements calls to
+ // each of the requested automatic actions. Create and return the function,
+ // which will become the property value.
+ return new Function("fsm", func);
+};
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ var e;
+ var s;
+
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ while (this._savedStates.length > 0)
+ {
+ s = this._savedStates.pop();
+ s = null;
+ }
+ this._savedStates = null;
+
+ while (this._eventQueue.length > 0)
+ {
+ e = this._eventQueue.pop();
+ e.dispose();
+ e = null;
+ }
+ this._eventQueue = null;
+
+ while (this._blockedEvents.length > 0)
+ {
+ e = this._blockedEvents.pop();
+ e.dispose();
+ e = null;
+ }
+
+ for (var s in this._states)
+ {
+ this._states[s].dispose();
+ this._states[s] = null;
+ delete this._states[s];
+ }
+ this._states = null;
+
+ return qx.core.Target.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/State.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/State.js
new file mode 100644
index 0000000000..a61d27ff24
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/State.js
@@ -0,0 +1,613 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(util_fsm)
+#require(qx.util.fsm.FiniteStateMachine)
+
+************************************************************************ */
+
+/**
+ * Create a new state which may be added to a finite state machine.
+ *
+ * *EXPERIMENTAL*
+ * The interface to the finite state machine, states, and transitions is
+ * experimental. It may change in non-backward-compatible ways as more
+ * experience is gained in its use.
+ *
+ * @param
+ * stateName -
+ * The name of this state. This is the name which may be referenced in
+ * objects of class qx.util.fsm.Transition, when passing of
+ * the the transition's predicate means transition to this state.
+ *
+ * @param
+ * stateInfo -
+ * An object containing any of the following properties:
+ *
+ * onentry -
+ * A function which is called upon entry to the state. Its signature is
+ * function(fsm, event) and it is saved in the onentry property of the
+ * state object. (This function is called after the Transition's action
+ * function and after the previous state's onexit function.)
+ *
+ * In the onentry function:
+ *
+ * fsm -
+ * The finite state machine object to which this state is attached.
+ *
+ * event -
+ * The event that caused the finite state machine to run
+ *
+ * onexit -
+ * A function which is called upon exit from the state. Its signature
+ * is function(fsm, event) and it is saved in the onexit property of the
+ * state object. (This function is called after the Transition's action
+ * function and before the next state's onentry function.)
+ *
+ * In the onexit function:
+ *
+ * fsm -
+ * The finite state machine object to which this state is attached.
+ *
+ * event -
+ * The event that caused the finite state machine to run
+ *
+ * autoActionsBeforeOnentry -
+ * autoActionsAfterOnentry -
+ * auutoActionsBeforeOnexit -
+ * autoActionsAfterOnexit -
+ * Automatic actions which take place at the time specified by the
+ * property name. In all cases, the action takes place immediately
+ * before or after the specified function.
+ *
+ * The property value for each of these properties is an object which
+ * describes some number of functions to invoke on a set of specified
+ * objects (typically widgets).
+ *
+ * An example, using autoActionsBeforeOnentry, might look like this:
+ *
+ * "autoActionsBeforeOnentry" :
+ * {
+ * // The name of a function.
+ * "enabled" :
+ * [
+ * {
+ * // The parameter value, thus "setEnabled(true);"
+ * "parameters" : [ true ],
+ *
+ * // The function would be called on each object:
+ * // this.getObject("obj1").setEnabled(true);
+ * // this.getObject("obj2").setEnabled(true);
+ * "objects" : [ "obj1", "obj2" ],
+ *
+ * // And similarly for each object in each specified group.
+ * "groups" : [ "group1", "group2" ]
+ * }
+ * ],
+ *
+ * // The name of another function.
+ * "visible" :
+ * [
+ * {
+ * // The parameter value, thus "setEnabled(true);"
+ * "parameters" : [ false ],
+ *
+ * // The function would be called on each object and group, as
+ * // described above.
+ * "objects" : [ "obj3", "obj4" ],
+ * "groups" : [ "group3", "group4" ]
+ * }
+ * ]
+ * };
+ *
+ *
+ * events (required) -
+ * A description to the finite state machine of how to handle a
+ * particular event, optionally associated with a specific target object
+ * on which the event was dispatched. This should be an object
+ * containing one property for each event which is either handled or
+ * blocked. The property name should be the event name. The property
+ * value should be one of:
+ *
+ * (a) qx.util.fsm.FiniteStateMachine.EventHandling.PREDICATE
+ *
+ * (b) qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED
+ *
+ * (c) a string containing the name of an explicit Transition to use
+ *
+ * (d) an object where each property name is the Friendly Name of an
+ * object (meaning that this rule applies if both the event and
+ * the event's target object's Friendly Name match), and its
+ * property value is one of (a), (b) or (c), above.
+ *
+ * This object is saved in the events property of the state object.
+ *
+ * Additional properties may be provided in stateInfo. They will not be
+ * used by the finite state machine, but will be available via
+ * this.getUserData("<propertyName>") during the state's onentry and
+ * onexit functions.
+ */
+qx.OO.defineClass("qx.util.fsm.State", qx.core.Object,
+function(stateName, stateInfo)
+{
+ // Call our superclass' constructor
+ qx.core.Object.call(this, true);
+
+ // Save the state name
+ this.setName(stateName);
+
+ // Ensure they passed in an object
+ if (typeof(stateInfo) != "object")
+ {
+ throw new Error("State info must be an object");
+ }
+
+ // Save data from the stateInfo object
+ for (var field in stateInfo)
+ {
+ // If we find one of our properties, call its setter.
+ switch(field)
+ {
+ case "onentry":
+ this.setOnentry(stateInfo[field]);
+ break;
+
+ case "onexit":
+ this.setOnexit(stateInfo[field]);
+ break;
+
+ case "autoActionsBeforeOnentry":
+ this.setAutoActionsBeforeOnentry(stateInfo[field]);
+ break;
+
+ case "autoActionsAfterOnentry":
+ this.setAutoActionsAfterOnentry(stateInfo[field]);
+ break;
+
+ case "autoActionsBeforeOnexit":
+ this.setAutoActionsBeforeOnentry(stateInfo[field]);
+ break;
+
+ case "autoActionsBeforeOnexit":
+ this.setAutoActionsBeforeOnentry(stateInfo[field]);
+ break;
+
+ case "events":
+ this.setEvents(stateInfo[field]);
+ break;
+
+ default:
+ // Anything else is user-provided data for their own use. Save it.
+ this.setUserData(field, stateInfo[field]);
+
+ // Log it in case it was a typo and they intended a built-in field
+ this.debug("State " + stateName + ": " +
+ "Adding user-provided field to state: " + field);
+
+ break;
+ }
+ }
+
+
+ // Check for required but missing properties
+ if (! this.getEvents())
+ {
+ throw new Error("The events object must be provided in new state info");
+ }
+
+
+ // Initialize the transition list
+ this.transitions = { };
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * The name of this state. This name may be used as a Transition's nextState
+ * value, or an explicit next state in the 'events' handling list in a State.
+ */
+qx.OO.addProperty(
+ {
+ name : "name",
+ type : "string"
+ });
+
+/**
+ * The onentry function for this state. This is documented in the
+ * constructor, and is typically provided through the constructor's stateInfo
+ * object, but it is also possible (but highly NOT recommended) to change this
+ * dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "onentry",
+ defaultValue : function(fsm, event) { }
+ });
+
+/**
+ * The onexit function for this state. This is documented in the constructor,
+ * and is typically provided through the constructor's stateInfo object, but
+ * it is also possible (but highly NOT recommended) to change this
+ * dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "onexit",
+ defaultValue : function(fsm, event) { }
+ });
+
+/**
+ * Automatic actions to take prior to calling the state's onentry function.
+ *
+ * The value passed to setAutoActionsBeforeOnentry() should like something
+ * akin to:
+ *
+ * "autoActionsBeforeOnentry" :
+ * {
+ * // The name of a function. This would become "setEnabled("
+ * "enabled" :
+ * [
+ * {
+ * // The parameter value, thus "setEnabled(true);"
+ * "parameters" : [ true ],
+ *
+ * // The function would be called on each object:
+ * // this.getObject("obj1").setEnabled(true);
+ * // this.getObject("obj2").setEnabled(true);
+ * "objects" : [ "obj1", "obj2" ]
+ *
+ * // And similarly for each object in each specified group.
+ * "groups" : [ "group1", "group2" ],
+ * }
+ * ];
+ * };
+ */
+qx.OO.addProperty(
+ {
+ name : "autoActionsBeforeOnentry",
+ defaultValue : function(fsm, event) { }
+ });
+
+/**
+ * Automatic actions to take after return from the state's onentry function.
+ *
+ * The value passed to setAutoActionsAfterOnentry() should like something akin
+ * to:
+ *
+ * "autoActionsAfterOnentry" :
+ * {
+ * // The name of a function. This would become "setEnabled("
+ * "enabled" :
+ * [
+ * {
+ * // The parameter value, thus "setEnabled(true);"
+ * "parameters" : [ true ],
+ *
+ * // The function would be called on each object:
+ * // this.getObject("obj1").setEnabled(true);
+ * // this.getObject("obj2").setEnabled(true);
+ * "objects" : [ "obj1", "obj2" ]
+ *
+ * // And similarly for each object in each specified group.
+ * "groups" : [ "group1", "group2" ],
+ * }
+ * ];
+ * };
+ */
+qx.OO.addProperty(
+ {
+ name : "autoActionsAfterOnentry",
+ defaultValue : function(fsm, event) { }
+ });
+
+/**
+ * Automatic actions to take prior to calling the state's onexit function.
+ *
+ * The value passed to setAutoActionsBeforeOnexit() should like something akin
+ * to:
+ *
+ * "autoActionsBeforeOnexit" :
+ * {
+ * // The name of a function. This would become "setEnabled("
+ * "enabled" :
+ * [
+ * {
+ * // The parameter value, thus "setEnabled(true);"
+ * "parameters" : [ true ],
+ *
+ * // The function would be called on each object:
+ * // this.getObject("obj1").setEnabled(true);
+ * // this.getObject("obj2").setEnabled(true);
+ * "objects" : [ "obj1", "obj2" ]
+ *
+ * // And similarly for each object in each specified group.
+ * "groups" : [ "group1", "group2" ],
+ * }
+ * ];
+ * };
+ */
+qx.OO.addProperty(
+ {
+ name : "autoActionsBeforeOnexit",
+ defaultValue : function(fsm, event) { }
+ });
+
+
+/**
+ * Automatic actions to take after returning from the state's onexit function.
+ *
+ * The value passed to setAutoActionsAfterOnexit() should like something akin
+ * to:
+ *
+ * "autoActionsBeforeOnexit" :
+ * {
+ * // The name of a function. This would become "setEnabled("
+ * "enabled" :
+ * [
+ * {
+ * // The parameter value, thus "setEnabled(true);"
+ * "parameters" : [ true ],
+ *
+ * // The function would be called on each object:
+ * // this.getObject("obj1").setEnabled(true);
+ * // this.getObject("obj2").setEnabled(true);
+ * "objects" : [ "obj1", "obj2" ]
+ *
+ * // And similarly for each object in each specified group.
+ * "groups" : [ "group1", "group2" ],
+ * }
+ * ];
+ * };
+ */
+qx.OO.addProperty(
+ {
+ name : "autoActionsAfterOnexit",
+ defaultValue : function(fsm, event) { }
+ });
+
+
+/**
+ * The object representing handled and blocked events for this state. This is
+ * documented in the constructor, and is typically provided through the
+ * constructor's stateInfo object, but it is also possible (but highly NOT
+ * recommended) to change this dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "events"
+ });
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._checkName = function(propValue, propData)
+{
+ // Ensure that we got a valid state name
+ if (typeof(propValue) != "string" || propValue.length < 1)
+ {
+ throw new Error("Invalid state name");
+ }
+
+ return propValue;
+};
+
+qx.Proto._checkOnentry = function(propValue, propData)
+{
+ // Validate the onentry function
+ switch(typeof(propValue))
+ {
+ case "undefined":
+ // None provided. Convert it to a null function
+ return function(fsm, event) {};
+
+ case "function":
+ // We're cool. No changes required
+ return propValue;
+
+ default:
+ throw new Error("Invalid onentry type: " + typeof(propValue));
+ return null;
+ }
+};
+
+qx.Proto._checkOnexit = function(propValue, propData)
+{
+ // Validate the onexit function
+ switch(typeof(propValue))
+ {
+ case "undefined":
+ // None provided. Convert it to a null function
+ return function(fsm, event) {};
+
+ case "function":
+ // We're cool. No changes required
+ return propValue;
+
+ default:
+ throw new Error("Invalid onexit type: " + typeof(propValue));
+ return null;
+ }
+};
+
+qx.Proto._checkEvents = function(propValue, propData)
+{
+ // Validate that events is an object
+ if (typeof(propValue) != "object")
+ {
+ throw new Error("events must be an object");
+ }
+
+ // Confirm that each property is a valid value
+ // The property value should be one of:
+ //
+ // (a) qx.util.fsm.FiniteStateMachine.EventHandling.PREDICATE
+ //
+ // (b) qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED
+ //
+ // (c) a string containing the name of an explicit Transition to use
+ //
+ // (d) an object where each property name is the Friendly Name of an
+ // object (meaning that this rule applies if both the event and
+ // the event's target object's Friendly Name match), and its
+ // property value is one of (a), (b) or (c), above.
+ for (var e in propValue)
+ {
+ var action = propValue[e];
+ if (typeof(action) == "number" &&
+ action != qx.util.fsm.FiniteStateMachine.EventHandling.PREDICATE &&
+ action != qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED)
+ {
+ throw new Error("Invalid numeric value in events object: " +
+ e + ": " + action);
+ }
+ else if (typeof(action) == "object")
+ {
+ for (action_e in action)
+ {
+ if (typeof(action[action_e]) == "number" &&
+ action != qx.util.fsm.FiniteStateMachine.EventHandling.PREDICATE &&
+ action != qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED)
+ {
+ throw new Error("Invalid numeric value in events object " +
+ "(" + e + "): " +
+ action_e + ": " + action[action_e]);
+ }
+ else if (typeof(action[action_e]) != "string")
+ {
+ throw new Error("Invalid value in events object " +
+ "(" + e + "): " +
+ action_e + ": " + action[action_e]);
+ }
+ }
+ }
+ else if (typeof(action) != "string")
+ {
+ throw new Error("Invalid value in events object: " +
+ e + ": " + propValue[e]);
+ }
+ }
+
+ // We're cool. No changes required.
+ return propValue;
+};
+
+qx.Proto._checkAutoActionsBeforeOnentry = function(propValue, propData)
+{
+ return qx.util.fsm.FiniteStateMachine._commonCheckAutoActions(
+ "autoActionsBeforeOnentry",
+ propValue,
+ propData);
+};
+
+qx.Proto._checkAutoActionsAfterOnentry = function(propValue, propData)
+{
+ return qx.util.fsm.FiniteStateMachine._commonCheckAutoActions(
+ "autoActionsAfterOnentry",
+ propValue,
+ propData);
+};
+
+qx.Proto._checkAutoActionsBeforeOnexit = function(propValue, propData)
+{
+ return qx.util.fsm.FiniteStateMachine._commonCheckAutoActions(
+ "autoActionsBeforeOnexit",
+ propValue,
+ propData);
+};
+
+qx.Proto._checkAutoActionsAfterOnexit = function(propValue, propData)
+{
+ return qx.util.fsm.FiniteStateMachine._commonCheckAutoActions(
+ "autoActionsAfterOnexit",
+ propValue,
+ propData);
+};
+
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Add a transition to a state
+ *
+ * @param trans {qx.util.fsm.Transition}
+ * An object of class qx.util.fsm.Transition representing a
+ * transition which is to be a part of this state.
+ */
+qx.Proto.addTransition = function(trans)
+{
+ // Ensure that we got valid transition info
+ if (! trans instanceof qx.util.fsm.Transition)
+ {
+ throw new Error("Invalid transition: not an instance of " +
+ "qx.util.fsm.Transition");
+ }
+
+ // Add the new transition object to the state
+ this.transitions[trans.getName()] = trans;
+};
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS CONSTANTS
+---------------------------------------------------------------------------
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/Transition.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/Transition.js
new file mode 100644
index 0000000000..3d13324999
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/Transition.js
@@ -0,0 +1,383 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2006 by Derrell Lipman
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Derrell Lipman (derrell)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(util_fsm)
+#require(qx.util.fsm.FiniteStateMachine)
+
+************************************************************************ */
+
+/**
+ * Create a new possible transition from one state to another.
+ *
+ * *EXPERIMENTAL*
+ * The interface to the finite state machine, states, and transitions is
+ * experimental. It may change in non-backward-compatible ways as more
+ * experience is gained in its use.
+ *
+ * @param transitionName {string}
+ * The name of this transition, used in debug messages.
+ *
+ * @param transitionInfo {Object}
+ * An object optionally containing any of the following properties:
+ *
+ * predicate -
+ * A function which is called to determine whether this transition is
+ * acceptable. An acceptable transition will cause the transition's
+ * "ontransition" function to be run, the current state's "onexit"
+ * function to be run, and the new state's "onentry" function to be run.
+ *
+ * The predicate function's signature is function(fsm, event) and it is
+ * saved in the predicate property of the transition object. In the
+ * predicate function:
+ *
+ * fsm -
+ * The finite state machine object to which this state is attached.
+ *
+ * event -
+ * The event that caused a run of the finite state machine
+ *
+ * The predicate function should return one of the following three
+ * values:
+ *
+ * - true means the transition is acceptable
+ *
+ * - false means the transition is not acceptable, and the next
+ * transition (if one exists) should be tried to determine if it is
+ * acceptable
+ *
+ * - null means that the transition determined that no further
+ * transitions should be tried. This might be used when the
+ * transition ascertained that the event is for a target that is not
+ * available in the current state, and the event has called
+ * fsm.queueEvent() to have the event delivered upon state
+ * transition.
+ *
+ * It is possible to create a default predicate -- one that will cause a
+ * transition to be acceptable always -- by either not providing a
+ * predicate property, or by explicitely either setting the predicate
+ * property to 'true' or setting it to a function that unconditionally
+ * returns 'true'. This default transition should, of course, always be
+ * the last transition added to a state, since no transition added after
+ * it will ever be tried.
+ *
+ * nextState -
+ * The state to which we transition, if the predicate returns true
+ * (meaning the transition is acceptable). The value of nextState may
+ * be:
+ *
+ * - a string, the state name of the state to transition to
+ *
+ * - One of the constants:
+ * - qx.util.fsm.FiniteStateMachine.StateChange.CURRENT_STATE:
+ * Remain in whatever is the current state
+ * - qx.util.fsm.FiniteStateMachine.StateChange.PREVIOUS_STATE:
+ * Transition to the state at the top of the saved-state stack,
+ * and remove the top element from the saved-state stack.
+ * Elements are added to the saved-state stack using
+ * fsm.pushState(). It is an error if no state exists on the
+ * saved-state stack.
+ * - qx.util.fsm.FiniteStateMachine.StateChange.TERMINATE:
+ * TBD
+ *
+ * autoActionsBeforeOntransition -
+ * autoActionsAfterOntransition -
+ * Automatic actions which take place at the time specified by the
+ * property name. In all cases, the action takes place immediately
+ * before or after the specified function.
+ *
+ * The property value for each of these properties is an object which
+ * describes some number of functions to invoke on a set of specified
+ * objects (typically widgets).
+ *
+ * See {@see qx.util.fsm.State} for an example of autoActions.
+ *
+ * ontransition -
+ * A function which is called if the predicate function for this
+ * transition returns true. Its signature is function(fsm, event) and
+ * it is saved in the ontransition property of the transition object.
+ * In the ontransition function:
+ *
+ * fsm -
+ * The finite state machine object to which this state is attached.
+ *
+ * event -
+ * The event that caused a run of the finite state machine
+ *
+ * Additional properties may be provided in transInfo. They will not be
+ * used by the finite state machine, but will be available via
+ * this.getUserData("<propertyName>") during the transition's predicate
+ * and ontransition functions.
+ */
+qx.OO.defineClass("qx.util.fsm.Transition", qx.core.Object,
+function(transitionName, transitionInfo)
+{
+ // Call our superclass' constructor
+ qx.core.Object.call(this, true);
+
+ // Save the state name
+ this.setName(transitionName);
+
+ // Save data from the transitionInfo object
+ for (var field in transitionInfo)
+ {
+ // If we find one of our properties, call its setter.
+ switch(field)
+ {
+ case "predicate":
+ this.setPredicate(transitionInfo[field]);
+ break;
+
+ case "nextState":
+ this.setNextState(transitionInfo[field]);
+ break;
+
+ case "autoActionsBeforeOntransition":
+ this.setAutoActionsBeforeOntransition(transitionInfo[field]);
+ break;
+
+ case "autoActionsAfterOntransition":
+ this.setAutoActionsAfterOntransition(transitionInfo[field]);
+ break;
+
+ case "ontransition":
+ this.setOntransition(transitionInfo[field]);
+ break;
+
+ default:
+ // Anything else is user-provided data for their own use. Save it.
+ this.setUserData(field, transitionInfo[field]);
+
+ // Log it in case it was a typo and they intended a built-in field
+ this.debug("Transition " + transitionName + ": " +
+ "Adding user-provided field to transition: " + field);
+
+ break;
+ }
+ }
+});
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ PROPERTIES
+---------------------------------------------------------------------------
+*/
+
+/**
+ * The name of this transition
+ */
+qx.OO.addProperty(
+ {
+ name : "name",
+ type : "string"
+ });
+
+/**
+ * The predicate function for this transition. This is documented in the
+ * constructor, and is typically provided through the constructor's
+ * transitionInfo object, but it is also possible (but highly NOT recommended)
+ * to change this dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "predicate",
+ defaultValue : function(fsm, event) { return true; }
+ });
+
+/**
+ * The state to transition to, if the predicate determines that this
+ * transition is acceptable. This is documented in the constructor, and is
+ * typically provided through the constructor's transitionInfo object, but it
+ * is also possible (but highly NOT recommended) to change this dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "nextState",
+ defaultValue : qx.util.fsm.FiniteStateMachine.StateChange.CURRENT_STATE
+ });
+
+/**
+ * Automatic actions to take prior to calling the transition's ontransition
+ * function. This is documented in the constructor, and is typically provided
+ * through the constructor's transitionInfo object, but it is also possible
+ * (but highly NOT recommended) to change this dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "autoActionsBeforeOntransition",
+ defaultValue : function(fsm, event) { }
+ });
+
+/**
+ * Automatic actions to take immediately after calling the transition's
+ * ontransition function. This is documented in the constructor, and is
+ * typically provided through the constructor's transitionInfo object, but it
+ * is also possible (but highly NOT recommended) to change this dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "autoActionsAfterOntransition",
+ defaultValue : function(fsm, event) { }
+ });
+
+
+/**
+ * The function run when the transition is accepted. This is documented in
+ * the constructor, and is typically provided through the constructor's
+ * transitionInfo object, but it is also possible (but highly NOT recommended)
+ * to change this dynamically.
+ */
+qx.OO.addProperty(
+ {
+ name : "ontransition",
+ defaultValue : function(fsm, event) { }
+ });
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ MODIFIER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto._checkName = function(propValue, propData)
+{
+ // Ensure that we got a valid state name
+ if (typeof(propValue) != "string" || propValue.length < 1)
+ {
+ throw new Error("Invalid transition name");
+ }
+
+ return propValue;
+};
+
+qx.Proto._checkPredicate = function(propValue, propData)
+{
+ // Validate the predicate. Convert all valid types to function.
+ switch(typeof(propValue))
+ {
+ case "undefined":
+ // No predicate means predicate passes
+ return function(fsm, event) { return true; };
+
+ case "boolean":
+ // Convert boolean predicate to a function which returns that value
+ return function(fsm, event) { return propValue; };
+
+ case "function":
+ // Use user-provided function.
+ return propValue;
+
+ default:
+ throw new Error("Invalid transition predicate type: " +
+ typeof(propValue));
+ break;
+ }
+};
+
+qx.Proto._checkNextState = function(propValue, propData)
+{
+ // Validate nextState. It must be a string or a number.
+ switch(typeof(propValue))
+ {
+ case "string":
+ return propValue;
+
+ case "number":
+ // Ensure that it's one of the possible state-change constants
+ switch(propValue)
+ {
+ case qx.util.fsm.FiniteStateMachine.StateChange.CURRENT_STATE:
+ case qx.util.fsm.FiniteStateMachine.StateChange.PREVIOUS_STATE:
+ return propValue;
+
+ default:
+ throw new Error("Invalid transition nextState value: " +
+ propValue +
+ ": nextState must be an explicit state name, " +
+ "or one of the Fsm.StateChange constants");
+ }
+ break;
+
+ default:
+ throw new Error("Invalid transition nextState type: " + typeof(propValue));
+ break;
+ }
+};
+
+qx.Proto._checkOntransition = function(propValue, propData)
+{
+ // Validate the ontransition function. Convert undefined to function.
+ switch(typeof(propValue) )
+ {
+ case "undefined":
+ // No provided function just means do nothing. Use a null function.
+ return function(fsm, event) { };
+
+ case "function":
+ // Use user-provided function.
+ return propValue;
+
+ default:
+ throw new Error("Invalid ontransition type: " + typeof(propValue));
+ break;
+ }
+};
+
+/*
+---------------------------------------------------------------------------
+ UTILITIES
+---------------------------------------------------------------------------
+*/
+
+
+/*
+---------------------------------------------------------------------------
+ EVENT LISTENERS
+---------------------------------------------------------------------------
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ CLASS CONSTANTS
+---------------------------------------------------------------------------
+*/
+
+
+
+/*
+---------------------------------------------------------------------------
+ DISPOSER
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return true;
+ }
+
+ return qx.core.Object.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/example.txt b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/example.txt
new file mode 100644
index 0000000000..bb92f70083
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/util/fsm/example.txt
@@ -0,0 +1,210 @@
+var fsm;
+var state;
+var trans;
+
+// Create a new finite state machine called "Test Machine"
+fsm = new qx.util.finitestatemachine.Fsm("Test machine");
+
+// State S1
+state = new qx.util.finitestatemachine.State(
+ // State name
+ "S1",
+
+ // Object with state information
+ {
+ // Function called on entry to this state
+ "onentry" :
+ function(fsm, event)
+ {
+ alert("Previous state: " + fsm.getPreviousState());
+ };
+
+ // Function called on exit from this state
+ "onexit" :
+ function(fsm, event)
+ {
+ alert("Next state: " + fsm.getNextState());
+ };
+
+ // Automatic actions to take place before a (possibly) new state's onentry
+ // function is called.
+ "autoActionsBeforeOnentry" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // The parameter value(s), thus "setEnabled(true);"
+ "parameters" : [ true ],
+
+ // The function would be called on each object:
+ // this.getObject("obj1").setEnabled(true);
+ // this.getObject("obj2").setEnabled(true);
+ "objects" : [ "obj1", "obj2" ]
+
+ // And similarly for each object in each specified group.
+ "groups" : [ "group1", "group2" ],
+ }
+ ];
+
+ "setColor" :
+ [
+ {
+ "parameters" : [ "blue" ]
+ "groups" : [ "group3", "group4" ],
+ "objects" : [ "obj3", "obj4" ]
+ }
+ ];
+ };
+
+ // also available, in same format as actionsBeforeOnentry:
+ // "actionsAfterOnentry",
+ // "actionsBeforeOnexit"
+ // "actionsAfterOnexit"
+
+ // Events handled by this state, or queued for processing by a future state
+ "events" :
+ {
+ // The event type "compete" is handled by one of the transitions in this
+ // state. The transitions will be searched in order of their addition
+ // to the state, until the predicate for a transition returns true (or
+ // no predicate is specified for the transition, which is an implicit
+ // "true") That transition will be used.
+ "complete" : qx.util.finitestatemachine.Fsm.EventHandling.PREDICATE,
+
+ // The event type "interval" has two objects specified by their
+ // "friendly name". The action when an event of type "interval" occurs
+ // depends on which object was the target of the event.
+ "interval" :
+ {
+ // If the target of the event was the object to which we have given
+ // the friendly name "flash" then use a transition specified by name
+ "flash" : "S1_S3_interval_flash",
+
+ // If the target of the event was the object to which we have given
+ // the friendly name "timeout", then enqueue this event for possible
+ // processing by a future state.
+ "timeout" : qx.util.finitestatemachine.Fsm.EventHandling.BLOCKED
+ },
+
+ // The event type "execute", too, has two objects specified by their
+ // "friendly name".
+ "execute" :
+ {
+ // If the target of the event was the object to which we have given
+ // the friend name "ok", search the transitions in order looking for
+ // one where the predicate is true
+ "ok" : qx.util.finitestatemachine.Fsm.EventHandling.PREDICATE
+
+ // If the target of the event was the object to which we have given
+ // the friendly name "restart", then enqueue this event for possible
+ // processing by a future state.
+ "restart" : qx.util.finitestatemachine.Fsm.EventHandling.BLOCKED
+ }
+
+ // all events other than those which are handled or blocked are ignored.
+ };
+ });
+
+// Add State S1 to the finite state machine.
+fsm.addState(state);
+
+// Transition from S1 to S2 due to event 1
+trans = new qx.util.finitestatemachine.Transition(
+ // Transition name
+ "S1_S2_ev1",
+
+ // Object with transition information
+ {
+ // return TRUE to pass
+ "predicate" :
+ function(fsm, event)
+ {
+ var type = event.getType();
+ if (type == "somethingWeCareAbout")
+ {
+ return true;
+ }
+ else if (type == "somethingToHandleInAnotherState")
+ {
+ // reattempt event delivery following state transition
+ fsm.postponeEvent(event);
+
+ // do no further transition attempts for this event for now
+ return null;
+ }
+ else
+ {
+ return false;
+ }
+ },
+
+ // if event matches and predicate passes, pop the state stack and go to
+ // the state which was found at the top of the stack. States are added to
+ // the state stack by calling fsm.pushState() during a state's onexit
+ // function or by a transition's action function.
+ "nextState" : qx.util.finintestatemachine.Fsm.StateChange.POP_STATE_STACK,
+
+ // action taken during transisition
+ "action" :
+ function(fsm, event)
+ {
+ // save current state so a future transition can get back to
+ // this saved state
+ fsm.pushState();
+ }
+ });
+state.addTransition(trans);
+
+// Default transition (any event): remain in current state
+trans = new qx.util.finitestatemachine.Transition(
+ "S1_S1_default",
+ {
+ // true or undefined : always pass
+ "predicate" :
+ function(fsm, event)
+ {
+ // This predicate does not pass, and we return null to tell the finite
+ // state machine that no additional transitions in the transition list
+ // should be tested. (Note that the next transition is the one
+ // explicitly called for by the "interval" event on the object with
+ // friendly name "flash". We do not want a predicate search to find
+ // it.
+ return null;
+ },
+
+ // return to current state
+ "nextState" : qx.util.finitestatemacine.CURRENT_STATE,
+ });
+state.addTransition(trans);
+
+// Transition from S1 to S2 due to event 2. Since the previous transition
+// returned null in its predicate function, the only way to get to this
+// transition is when it is called out explicitly in the state's event list.
+// This one was specified for the "interval" event on the object with friendly
+// name "flash".
+trans = new qx.util.finitestatememachine.Transition(
+ "S1_S3_interval_flash",
+ {
+ // No predicate or a value of 'true' means that the predicate passes as if
+ // a predicate function returned true.
+ "predicate" : true,
+
+ // if event matches, go to this state
+ "nextState" : "S2",
+
+ // action taken during transisition
+ "action" :
+ function(fsm, event)
+ {
+ alert(this.getName() + "action function");
+ }
+ });
+state.addTransition(trans);
+
+// We would, of course, need to add state S2 since it is specified in a
+// nextState property. That is left as an exercise for the reader.
+
+
+// Initialize and start the machine running
+fsm.start();
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Core.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Core.js
new file mode 100644
index 0000000000..baf3bc1c1d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Core.js
@@ -0,0 +1,77 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.xml.Core");
+
+// Create a XML dom node
+qx.xml.Core.createXmlDom = function()
+{
+ // The Mozilla style
+ if (document.implementation && document.implementation.createDocument) {
+ return document.implementation.createDocument("", "", null);
+ }
+
+ // The Microsoft style
+ if (window.ActiveXObject) {
+ /*
+ According to information on the Microsoft XML Team's WebLog
+ it is recommended to check for availability of MSXML versions 6.0 and 3.0.
+ Other versions are included for completeness, 5.0 is excluded as it is
+ "off-by-default" in IE7 (which could trigger a goldbar).
+
+ http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/aabe29a2-bad2-4cea-8387-314174252a74.asp
+
+ See similar code in qx.lang.XmlEmu, qx.io.remote.XmlHttpTransport
+ */
+ var vServers =
+ [
+ "MSXML2.DOMDocument.6.0",
+ "MSXML2.DOMDocument.3.0",
+ "MSXML2.DOMDocument.4.0",
+ "MSXML2.DOMDocument", // v3.0
+ "MSXML.DOMDocument", // v2.x
+ "Microsoft.XMLDOM" // v2.x
+ ];
+
+ var vObject;
+
+ for (var i=0, l=vServers.length; i<l; i++)
+ {
+
+ try
+ {
+ vObject = new ActiveXObject(vServers[i]);
+ break;
+ }
+ catch(ex)
+ {
+ vObject = null;
+ }
+ }
+
+ return vObject;
+ }
+
+ throw new Error("This browser does not support xml dom creation.");
+};
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Namespace.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Namespace.js
new file mode 100644
index 0000000000..e974fddc48
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/xml/Namespace.js
@@ -0,0 +1,51 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+
+************************************************************************ */
+
+qx.OO.defineClass("qx.xml.Namespace",
+{
+ SVG : "http://www.w3.org/2000/svg",
+ SMIL : "http://www.w3.org/2001/SMIL20/",
+ MML : "http://www.w3.org/1998/Math/MathML",
+ CML : "http://www.xml-cml.org",
+ XLINK : "http://www.w3.org/1999/xlink",
+ XHTML : "http://www.w3.org/1999/xhtml",
+ XUL : "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ XBL : "http://www.mozilla.org/xbl",
+ FO : "http://www.w3.org/1999/XSL/Format",
+ XSL : "http://www.w3.org/1999/XSL/Transform",
+ XSLT : "http://www.w3.org/1999/XSL/Transform",
+ XI : "http://www.w3.org/2001/XInclude",
+ XFORMS : "http://www.w3.org/2002/01/xforms",
+ SAXON : "http://icl.com/saxon",
+ XALAN : "http://xml.apache.org/xslt",
+ XSD : "http://www.w3.org/2001/XMLSchema",
+ DT: "http://www.w3.org/2001/XMLSchema-datatypes",
+ XSI : "http://www.w3.org/2001/XMLSchema-instance",
+ RDF : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+ RDFS : "http://www.w3.org/2000/01/rdf-schema#",
+ DC : "http://purl.org/dc/elements/1.1/",
+ DCQ: "http://purl.org/dc/qualifiers/1.0",
+ SOAPENV : "http://schemas.xmlsoap.org/soap/envelope/",
+ WSDL : "http://schemas.xmlsoap.org/wsdl/",
+ ADOBESVGEXTENSIONS : "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+}); \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/README b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/README
new file mode 100644
index 0000000000..1150455d65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/README
@@ -0,0 +1,20 @@
+These iconsets are licensed under different open-source
+licenses and was published for KDE (http://www.kde.org).
+The iconsets found here are not the complete ones which
+comes with KDE. Also the file and directory structure
+and naming is different. If you want to download the
+complete iconsets follow the URL listed below.
+
+* Crystal SVG
+ Copyright Everaldo (everaldo (at) everaldo.com)
+ http://everaldo.com
+ License: LGPL
+ http://www.fsf.org/licensing/licenses/lgpl.html
+
+* Nuvola
+ Copyright David Vignoni (dave (at) icon-king.com)
+ http://www.icon-king.com
+ License: LGPL
+ http://www.fsf.org/licensing/licenses/lgpl.html
+
+Please respect the licence. All rights reserved!
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/3d.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/3d.png
new file mode 100644
index 0000000000..820aa28313
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/3d.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/adobe-reader.png
new file mode 100755
index 0000000000..418da6e8a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/antivirus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/antivirus.png
new file mode 100644
index 0000000000..381fc55d3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/antivirus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/babelfish.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/babelfish.png
new file mode 100644
index 0000000000..afe11a9c32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/babelfish.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/back.png
new file mode 100644
index 0000000000..4e2e380e1f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/background.png
new file mode 100755
index 0000000000..dc35d81ebe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bell.png
new file mode 100644
index 0000000000..530fbf64a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bitmapgraphics.png
new file mode 100644
index 0000000000..f539ab60aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/block-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/block-device.png
new file mode 100644
index 0000000000..e3068923aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/block-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bug.png
new file mode 100644
index 0000000000..50649d7ce1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cache.png
new file mode 100644
index 0000000000..f9261381de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/camera.png
new file mode 100644
index 0000000000..8e18069153
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cdrom.png
new file mode 100644
index 0000000000..977ec6bee3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/char-device.png
new file mode 100644
index 0000000000..7e03f7983c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/chart.png
new file mode 100644
index 0000000000..8d6fd8ab65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/clock.png
new file mode 100644
index 0000000000..692b0502e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/colors.png
new file mode 100644
index 0000000000..932e6fbf0b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/control-center.png
new file mode 100644
index 0000000000..99a89e323c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/core.png
new file mode 100644
index 0000000000..013e93d1fe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/date.png
new file mode 100644
index 0000000000..f3bb99e393
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/desktop.png
new file mode 100644
index 0000000000..02f2f26d8a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/dictionary.png
new file mode 100644
index 0000000000..fd57f9ab8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/display.png
new file mode 100644
index 0000000000..8573935855
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/down.png
new file mode 100644
index 0000000000..9106506b30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/email.png
new file mode 100644
index 0000000000..a01dfa0cef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/encrypted.png
new file mode 100644
index 0000000000..be9140e2da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/energy.png
new file mode 100644
index 0000000000..4ad8e61911
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/error.png
new file mode 100644
index 0000000000..44de2575e9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/exec.png
new file mode 100644
index 0000000000..f20b42433e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/favourite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/favourite.png
new file mode 100644
index 0000000000..8a91592d2e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/favourite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/file-print.png
new file mode 100644
index 0000000000..2625880cf6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/floppy.png
new file mode 100644
index 0000000000..726a2ba38c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/flowchart.png
new file mode 100644
index 0000000000..4b72faadbc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-favorite.png
new file mode 100644
index 0000000000..a607e490da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-important.png
new file mode 100644
index 0000000000..cb0f6392da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-locked.png
new file mode 100644
index 0000000000..201ee4977d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-open.png
new file mode 100644
index 0000000000..62faf24ddf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder.png
new file mode 100644
index 0000000000..5823926fe2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/fonts.png
new file mode 100644
index 0000000000..f859e33e7f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/forward.png
new file mode 100644
index 0000000000..23035d24a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/graphics.png
new file mode 100644
index 0000000000..29cab51546
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/harddrive.png
new file mode 100644
index 0000000000..80a84effde
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/hardware-info.png
new file mode 100644
index 0000000000..e2aced9dba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/help-center.png
new file mode 100644
index 0000000000..aff331899e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/home.png
new file mode 100644
index 0000000000..1523d6e17a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/info.png
new file mode 100644
index 0000000000..0685f86af8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/joystick.png
new file mode 100644
index 0000000000..8f36c91c48
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/keyboard-layout.png
new file mode 100644
index 0000000000..e55efb5f6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/locale.png
new file mode 100644
index 0000000000..25403acc9d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/look-and-feel.png
new file mode 100644
index 0000000000..cd1a36b9af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mac.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mac.png
new file mode 100644
index 0000000000..258588b7c7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mac.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-archive.png
new file mode 100755
index 0000000000..91f24d19fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-binary.png
new file mode 100755
index 0000000000..e968365c60
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-calendar.png
new file mode 100755
index 0000000000..6ac9ef170f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-card.png
new file mode 100755
index 0000000000..bf84213474
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-document.png
new file mode 100755
index 0000000000..970fe33d50
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-html.png
new file mode 100755
index 0000000000..ab8334bf86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-image.png
new file mode 100755
index 0000000000..3d2fc5d932
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-manual.png
new file mode 100755
index 0000000000..fdf37cc102
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-multimedia.png
new file mode 100755
index 0000000000..dc4c177e8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-pdf.png
new file mode 100755
index 0000000000..351e026234
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-quicktime.png
new file mode 100755
index 0000000000..59da2c05ca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-rpm.png
new file mode 100755
index 0000000000..22d8ab19c8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-script.png
new file mode 100755
index 0000000000..759c0a1ac6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-shellscript.png
new file mode 100755
index 0000000000..f0bde8f037
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-sourcecode.png
new file mode 100755
index 0000000000..203b5cbb21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-spreadsheet.png
new file mode 100755
index 0000000000..7c1f455f0b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-text.png
new file mode 100755
index 0000000000..59a764257d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-video.png
new file mode 100755
index 0000000000..eea34177f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/modem.png
new file mode 100755
index 0000000000..245db42749
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mouse.png
new file mode 100644
index 0000000000..ec1f54bb7c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/movieplayer.png
new file mode 100644
index 0000000000..a6f640710c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/multimedia.png
new file mode 100644
index 0000000000..e04f1e1815
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mycomputer.png
new file mode 100755
index 0000000000..ed7ac28a75
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/netscape.png
new file mode 100755
index 0000000000..2e5cf2c0fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/network.png
new file mode 100644
index 0000000000..6be3abf9da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/notes.png
new file mode 100644
index 0000000000..c02b59b675
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/organizer.png
new file mode 100644
index 0000000000..777bb03e62
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/paint.png
new file mode 100644
index 0000000000..2c1bb499c0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/partitions.png
new file mode 100644
index 0000000000..627c52fe71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/password.png
new file mode 100644
index 0000000000..f12dfdae6d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/pda.png
new file mode 100644
index 0000000000..fababaf140
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/penguin.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/penguin.png
new file mode 100644
index 0000000000..ebfc696c71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/penguin.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/presentation.png
new file mode 100644
index 0000000000..ce7957ae99
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/printer.png
new file mode 100755
index 0000000000..f6cb14da27
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/reload.png
new file mode 100644
index 0000000000..62fc0261f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/scanner.png
new file mode 100644
index 0000000000..87fa22c1f2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/services.png
new file mode 100644
index 0000000000..6dbd827d6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/settings.png
new file mode 100644
index 0000000000..7f537fd6a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tablet.png
new file mode 100644
index 0000000000..441a88effd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/terminal.png
new file mode 100644
index 0000000000..4ef0cc384f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/toys.png
new file mode 100644
index 0000000000..51737f6410
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-empty.png
new file mode 100644
index 0000000000..52ae131549
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-full.png
new file mode 100644
index 0000000000..a04c817eef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tux.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tux.png
new file mode 100644
index 0000000000..8e4e34b53a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tux.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tv.png
new file mode 100644
index 0000000000..436555f19f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/up.png
new file mode 100644
index 0000000000..1c64cd8b1a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/user.png
new file mode 100644
index 0000000000..f28f704f75
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/utilities.png
new file mode 100644
index 0000000000..3437b2174c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/vectorgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/vectorgraphics.png
new file mode 100644
index 0000000000..82de771117
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/vectorgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/wordprocessor.png
new file mode 100644
index 0000000000..0495caef90
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/128/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/3d.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/3d.png
new file mode 100644
index 0000000000..305780c3d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/3d.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/accessibility.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/accessibility.png
new file mode 100644
index 0000000000..d519c57c7a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/accessibility.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/adobe-reader.png
new file mode 100755
index 0000000000..a0e057f013
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/alarm.png
new file mode 100644
index 0000000000..72b7ece31d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/antivirus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/antivirus.png
new file mode 100644
index 0000000000..a5fe838bd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/antivirus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appearance.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appearance.png
new file mode 100644
index 0000000000..9612cd5233
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appearance.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/applications.png
new file mode 100644
index 0000000000..69f6d0fce3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/apply.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/apply.png
new file mode 100644
index 0000000000..543710fb7b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/apply.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appointment.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appointment.png
new file mode 100644
index 0000000000..b37845ff61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/appointment.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/attach.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/attach.png
new file mode 100644
index 0000000000..3bfa627d75
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/attach.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/babelfish.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/babelfish.png
new file mode 100644
index 0000000000..63ce64dad8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/babelfish.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/back.png
new file mode 100644
index 0000000000..b6d9bd134b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/background.png
new file mode 100755
index 0000000000..f4ef81c608
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bell.png
new file mode 100644
index 0000000000..7a3fcae59a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bitmapgraphics.png
new file mode 100644
index 0000000000..6edbe41f8b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/block-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/block-device.png
new file mode 100644
index 0000000000..a4acb09cbd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/block-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-add.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-add.png
new file mode 100644
index 0000000000..b2f4090cc1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-add.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-folder.png
new file mode 100644
index 0000000000..7da3bbe8bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-toolbar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-toolbar.png
new file mode 100644
index 0000000000..fdf17ca545
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark-toolbar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark.png
new file mode 100644
index 0000000000..5e76158719
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bookmark.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bug.png
new file mode 100644
index 0000000000..719983cb29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-cancel.png
new file mode 100644
index 0000000000..2415dfc78b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-ok.png
new file mode 100644
index 0000000000..543710fb7b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/button-ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cache.png
new file mode 100644
index 0000000000..9d3f243aba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/calculator.png
new file mode 100644
index 0000000000..deb6fcd4c8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cam.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cam.png
new file mode 100644
index 0000000000..9daf8f63cb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cam.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/camera.png
new file mode 100644
index 0000000000..0d35dd4e9f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cancel.png
new file mode 100644
index 0000000000..1cabc6e95d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cdrom.png
new file mode 100644
index 0000000000..60adeb6f0b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/char-device.png
new file mode 100644
index 0000000000..3b82c19b68
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/chart.png
new file mode 100644
index 0000000000..d9e0ea1718
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clipboard.png
new file mode 100755
index 0000000000..1a396fe77a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clock.png
new file mode 100644
index 0000000000..dca2c7ef85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-fill.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-fill.png
new file mode 100644
index 0000000000..6362976104
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-fill.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-line.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-line.png
new file mode 100644
index 0000000000..1067d6e635
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/color-line.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/colors.png
new file mode 100644
index 0000000000..c0a67bb903
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/comment.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/comment.png
new file mode 100644
index 0000000000..631d4e3118
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/comment.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/configure.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/configure.png
new file mode 100644
index 0000000000..95bd319ce1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/configure.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-creating.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-creating.png
new file mode 100644
index 0000000000..258b65b5d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-creating.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-established.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-established.png
new file mode 100644
index 0000000000..9465e0e046
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-established.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-no.png
new file mode 100644
index 0000000000..0b752fc7e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/connect-no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/contents.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/contents.png
new file mode 100644
index 0000000000..e2a44ecae8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/contents.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/context-help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/context-help.png
new file mode 100644
index 0000000000..7b88a0cc08
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/context-help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/control-center.png
new file mode 100644
index 0000000000..64bf8b71db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cookie.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cookie.png
new file mode 100644
index 0000000000..5ebe2e3564
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/cookie.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/core.png
new file mode 100644
index 0000000000..1bbc1d39bc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/database.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/database.png
new file mode 100644
index 0000000000..ea93206774
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/database.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/date.png
new file mode 100644
index 0000000000..7be5f97927
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/decrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/decrypted.png
new file mode 100644
index 0000000000..3a1a0d34ef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/decrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-cell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-cell.png
new file mode 100644
index 0000000000..9f14a21591
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-cell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-col.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-col.png
new file mode 100644
index 0000000000..9993b37405
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-col.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-row.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-row.png
new file mode 100644
index 0000000000..974cd5470d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table-row.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table.png
new file mode 100644
index 0000000000..7f715fda11
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/delete-table.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/desktop.png
new file mode 100644
index 0000000000..883d92df16
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/devices.png
new file mode 100644
index 0000000000..c7c34a1a76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/dictionary.png
new file mode 100644
index 0000000000..643500fc19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/display.png
new file mode 100644
index 0000000000..2e228bd7a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/documentinfo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/documentinfo.png
new file mode 100644
index 0000000000..1e499654a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/documentinfo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/down.png
new file mode 100644
index 0000000000..c7fa4524c0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-copy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-copy.png
new file mode 100644
index 0000000000..c3ff243b85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-copy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-cut.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-cut.png
new file mode 100644
index 0000000000..2232854368
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-cut.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-delete.png
new file mode 100644
index 0000000000..6d0d29d760
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-paste.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-paste.png
new file mode 100644
index 0000000000..6f210612a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit-paste.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit.png
new file mode 100644
index 0000000000..a8b69f73fe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/edit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/editor.png
new file mode 100644
index 0000000000..3c939e6379
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/email.png
new file mode 100644
index 0000000000..387ed18e68
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/emoticon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/emoticon.png
new file mode 100644
index 0000000000..3567cd098e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/emoticon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/encrypted.png
new file mode 100644
index 0000000000..5db70d0269
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/energy.png
new file mode 100644
index 0000000000..df22fd8d97
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/error.png
new file mode 100644
index 0000000000..9152973b92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exec.png
new file mode 100644
index 0000000000..bc00f51a16
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exit.png
new file mode 100644
index 0000000000..3ce53009b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/exit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favorites.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favorites.png
new file mode 100644
index 0000000000..6a3fc5efe7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favorites.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favourite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favourite.png
new file mode 100644
index 0000000000..9444001098
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/favourite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-find.png
new file mode 100644
index 0000000000..3978d1e7be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-manager.png
new file mode 100644
index 0000000000..4969259fcf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-new.png
new file mode 100644
index 0000000000..83f375218c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-open.png
new file mode 100644
index 0000000000..037c2da98d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-print.png
new file mode 100644
index 0000000000..1cff519c61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save-as.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save-as.png
new file mode 100644
index 0000000000..3e28d5d359
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save-as.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save.png
new file mode 100644
index 0000000000..41b3f43679
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/file-save.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fileshare.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fileshare.png
new file mode 100644
index 0000000000..5acd128b88
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fileshare.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/find.png
new file mode 100644
index 0000000000..416d064595
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flag.png
new file mode 100644
index 0000000000..3240b29d5c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/floppy.png
new file mode 100644
index 0000000000..044647aba3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flowchart.png
new file mode 100644
index 0000000000..00f1e6fd69
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-favorite.png
new file mode 100644
index 0000000000..9ee26a38f7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-important.png
new file mode 100644
index 0000000000..d89fd1d2f0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-locked.png
new file mode 100644
index 0000000000..a679e79766
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-open.png
new file mode 100644
index 0000000000..29a0871104
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder.png
new file mode 100644
index 0000000000..7b6f0a7383
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-down.png
new file mode 100644
index 0000000000..3c9b0b00b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-up.png
new file mode 100644
index 0000000000..ceaff462d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/font-size-up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fonts.png
new file mode 100644
index 0000000000..146dcb8d46
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-decrease-indent.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-decrease-indent.png
new file mode 100644
index 0000000000..f90d809525
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-decrease-indent.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-increase-indent.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-increase-indent.png
new file mode 100644
index 0000000000..64b7f0e0b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/format-increase-indent.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/forward.png
new file mode 100644
index 0000000000..4bc5aa93af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/funct.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/funct.png
new file mode 100644
index 0000000000..e6dc31c002
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/funct.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/games.png
new file mode 100644
index 0000000000..4a4486286c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/goto.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/goto.png
new file mode 100644
index 0000000000..b762fc4f45
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/goto.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/graphics.png
new file mode 100644
index 0000000000..79b1d8877c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/group-event.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/group-event.png
new file mode 100644
index 0000000000..31b6f33991
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/group-event.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/harddrive.png
new file mode 100644
index 0000000000..b8069a7f4b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware-info.png
new file mode 100644
index 0000000000..b8e4f32006
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware.png
new file mode 100644
index 0000000000..b4c146ee27
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/hardware.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help-center.png
new file mode 100644
index 0000000000..d155536c56
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help.png
new file mode 100644
index 0000000000..b580f51ed4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history-clear.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history-clear.png
new file mode 100644
index 0000000000..2d98639169
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history-clear.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history.png
new file mode 100644
index 0000000000..1de43d56b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/history.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/home.png
new file mode 100644
index 0000000000..3d26af5529
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/icons.png
new file mode 100644
index 0000000000..10d2a2d636
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/iconthemes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/iconthemes.png
new file mode 100644
index 0000000000..4a90815645
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/iconthemes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/idea.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/idea.png
new file mode 100644
index 0000000000..8d72794dd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/idea.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/important.png
new file mode 100644
index 0000000000..64d07f3912
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/inbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/inbox.png
new file mode 100644
index 0000000000..cafac6193b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/inbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/info.png
new file mode 100644
index 0000000000..2ba3998d1a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-col.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-col.png
new file mode 100644
index 0000000000..02a70edf74
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-col.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-row.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-row.png
new file mode 100644
index 0000000000..8174ea172c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table-row.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table.png
new file mode 100644
index 0000000000..98cac27613
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/insert-table.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-available.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-available.png
new file mode 100644
index 0000000000..5377f424aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-available.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-away.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-away.png
new file mode 100644
index 0000000000..cdaa5b2945
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/instant-away.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/joystick.png
new file mode 100644
index 0000000000..b1c1691cc5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/keyboard-layout.png
new file mode 100644
index 0000000000..efbbcda82f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/launch.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/launch.png
new file mode 100644
index 0000000000..838c38bf13
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/launch.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/locale.png
new file mode 100644
index 0000000000..0dfece4d3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/look-and-feel.png
new file mode 100644
index 0000000000..fb4181004d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mac.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mac.png
new file mode 100644
index 0000000000..23e7e7221b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mac.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/magnifier.png
new file mode 100644
index 0000000000..0773220bd7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-delete.png
new file mode 100644
index 0000000000..65c7422aaa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-find.png
new file mode 100644
index 0000000000..81417be487
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-forward.png
new file mode 100644
index 0000000000..150b624019
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-get.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-get.png
new file mode 100644
index 0000000000..c5ea2018c0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-get.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-new.png
new file mode 100644
index 0000000000..c388644721
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply-all.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply-all.png
new file mode 100644
index 0000000000..8a3ae557ad
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply-all.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply.png
new file mode 100644
index 0000000000..cfb9379934
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-reply.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-send.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-send.png
new file mode 100644
index 0000000000..d96b1ec06f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail-send.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail.png
new file mode 100644
index 0000000000..cf7160ab42
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mail.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/memory.png
new file mode 100644
index 0000000000..6ddeddb689
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-archive.png
new file mode 100755
index 0000000000..8bdfa8a0fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-binary.png
new file mode 100755
index 0000000000..e23beb1fd2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-calendar.png
new file mode 100755
index 0000000000..7fb7ca883f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-card.png
new file mode 100755
index 0000000000..8210b43eb1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-color.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-color.png
new file mode 100755
index 0000000000..1c2b54f546
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-color.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-document.png
new file mode 100755
index 0000000000..1930fb233f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-html.png
new file mode 100755
index 0000000000..9e5bc52cf2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-image.png
new file mode 100755
index 0000000000..fdf537038f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-manual.png
new file mode 100755
index 0000000000..708e7b43be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-multimedia.png
new file mode 100755
index 0000000000..bfe6022c8c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-pdf.png
new file mode 100755
index 0000000000..27faad6fc0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-quicktime.png
new file mode 100755
index 0000000000..90418af51e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-rpm.png
new file mode 100755
index 0000000000..7a7cb19fcd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-script.png
new file mode 100755
index 0000000000..734689e2db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-shellscript.png
new file mode 100755
index 0000000000..b560ad5b51
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-sourcecode.png
new file mode 100755
index 0000000000..4ebc8e1844
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-spreadsheet.png
new file mode 100755
index 0000000000..126f1c878a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-text.png
new file mode 100755
index 0000000000..d662de4f29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-video.png
new file mode 100755
index 0000000000..6c5f692d79
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/misc.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/misc.png
new file mode 100644
index 0000000000..215fc6aa92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/misc.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mixer.png
new file mode 100755
index 0000000000..dbf51d2039
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/modem.png
new file mode 100644
index 0000000000..9b13f12297
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mouse.png
new file mode 100644
index 0000000000..3c0d31df22
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mousecursor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mousecursor.png
new file mode 100644
index 0000000000..c0aa32285f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mousecursor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/movieplayer.png
new file mode 100644
index 0000000000..6959db14e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/multimedia.png
new file mode 100644
index 0000000000..b27588d747
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mycomputer.png
new file mode 100755
index 0000000000..c399a2f00f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/netscape.png
new file mode 100755
index 0000000000..c55057f6c7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/network.png
new file mode 100644
index 0000000000..5acff48dd4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/no.png
new file mode 100644
index 0000000000..1cabc6e95d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notes.png
new file mode 100644
index 0000000000..e5eba9b30a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notify.png
new file mode 100755
index 0000000000..a893d62293
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/ok.png
new file mode 100644
index 0000000000..543710fb7b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/opera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/opera.png
new file mode 100755
index 0000000000..4694c2bcad
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/opera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/organizer.png
new file mode 100644
index 0000000000..fb840c5310
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/outbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/outbox.png
new file mode 100644
index 0000000000..91e3b244d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/outbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/paint.png
new file mode 100644
index 0000000000..92039e4f17
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/partitions.png
new file mode 100644
index 0000000000..5b6eb87645
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/password.png
new file mode 100644
index 0000000000..ca93f0d149
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pda.png
new file mode 100644
index 0000000000..b1e37a6c91
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/penguin.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/penguin.png
new file mode 100644
index 0000000000..a0a9743f53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/penguin.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pipe.png
new file mode 100644
index 0000000000..5f4d840c39
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/presentation.png
new file mode 100644
index 0000000000..1bfd18a75a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/printer.png
new file mode 100644
index 0000000000..2fa62c335c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/queue.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/queue.png
new file mode 100644
index 0000000000..5dc9f93ebe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/queue.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/redo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/redo.png
new file mode 100644
index 0000000000..5d6121b821
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/redo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/reload.png
new file mode 100644
index 0000000000..eb0388df4c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/remove-comment.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/remove-comment.png
new file mode 100644
index 0000000000..5513835a10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/remove-comment.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/rotate.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/rotate.png
new file mode 100644
index 0000000000..24349480a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/rotate.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/run.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/run.png
new file mode 100644
index 0000000000..215fc6aa92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/run.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/scanner.png
new file mode 100644
index 0000000000..627540c708
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/search.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/search.png
new file mode 100644
index 0000000000..593a56634b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/search.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/server.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/server.png
new file mode 100644
index 0000000000..ef289f6fc3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/server.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/services.png
new file mode 100644
index 0000000000..b140c3cf2e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/settings.png
new file mode 100644
index 0000000000..fa8d03bb87
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/signature.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/signature.png
new file mode 100644
index 0000000000..62babc3381
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/signature.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/sound.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/sound.png
new file mode 100644
index 0000000000..dbf51d2039
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/sound.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/spellcheck.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/spellcheck.png
new file mode 100644
index 0000000000..dbb8aa6b85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/spellcheck.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/stop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/stop.png
new file mode 100644
index 0000000000..45c03d5d4d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/stop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/style.png
new file mode 100644
index 0000000000..b727f8f609
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/system.png
new file mode 100644
index 0000000000..b97bfb434c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-duplicate.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-duplicate.png
new file mode 100755
index 0000000000..68a6bab379
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-duplicate.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new-raised.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new-raised.png
new file mode 100755
index 0000000000..6c4423e017
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new-raised.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new.png
new file mode 100755
index 0000000000..0d0d670b86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-remove.png
new file mode 100755
index 0000000000..c33ffff935
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tab-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tablet.png
new file mode 100644
index 0000000000..cfb9bf0675
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/terminal.png
new file mode 100644
index 0000000000..75fa314a73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-bottom.png
new file mode 100644
index 0000000000..cd9bcf72a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-color.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-color.png
new file mode 100644
index 0000000000..25c654d978
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-color.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-strike.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-strike.png
new file mode 100644
index 0000000000..6d708f61fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-strike.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-sub.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-sub.png
new file mode 100644
index 0000000000..eb9ee34531
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-sub.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-super.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-super.png
new file mode 100644
index 0000000000..dc91b70a23
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-super.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-top.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-top.png
new file mode 100644
index 0000000000..0da698d7c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/text-top.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/themes.png
new file mode 100644
index 0000000000..a91d85c248
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/toys.png
new file mode 100644
index 0000000000..a2ad6b83d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trash.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trash.png
new file mode 100644
index 0000000000..5a8da1a061
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trash.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-empty.png
new file mode 100644
index 0000000000..f5cb2b8b91
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-full.png
new file mode 100644
index 0000000000..5cbb14691f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tux.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tux.png
new file mode 100644
index 0000000000..db2e8b7bbc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tux.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tv.png
new file mode 100644
index 0000000000..bfc206a82f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/undo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/undo.png
new file mode 100644
index 0000000000..ee410a9048
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/undo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/up.png
new file mode 100644
index 0000000000..0777b0b356
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/user.png
new file mode 100644
index 0000000000..8f69e2b998
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/utilities.png
new file mode 100644
index 0000000000..dabbd12b25
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/vectorgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/vectorgraphics.png
new file mode 100644
index 0000000000..cb53b37e59
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/vectorgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-bottom.png
new file mode 100644
index 0000000000..b49b7175f0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-choose.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-choose.png
new file mode 100644
index 0000000000..da6c77b18c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-choose.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-detailed.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-detailed.png
new file mode 100644
index 0000000000..de55b061f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-detailed.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-icon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-icon.png
new file mode 100644
index 0000000000..8ca7c13385
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-icon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-left-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-left-right.png
new file mode 100755
index 0000000000..e1ce5e0074
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-left-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-multicolumn.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-multicolumn.png
new file mode 100644
index 0000000000..d6c4b0fbe6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-multicolumn.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-remove.png
new file mode 100755
index 0000000000..7d292eab41
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-right.png
new file mode 100755
index 0000000000..2e81c99c4f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-sidetree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-sidetree.png
new file mode 100644
index 0000000000..1c401d1c61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-sidetree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-text.png
new file mode 100644
index 0000000000..0ac606c957
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-top-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-top-bottom.png
new file mode 100755
index 0000000000..2f1f06aecb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-top-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-tree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-tree.png
new file mode 100755
index 0000000000..477387c611
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/view-tree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-fit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-fit.png
new file mode 100644
index 0000000000..1a6e26337c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-fit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-minus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-minus.png
new file mode 100644
index 0000000000..6a430e8657
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-minus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-original.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-original.png
new file mode 100644
index 0000000000..dadd3ed198
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-original.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-plus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-plus.png
new file mode 100644
index 0000000000..902b292a0a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag-plus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag.png
new file mode 100644
index 0000000000..593a56634b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/viewmag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wizard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wizard.png
new file mode 100644
index 0000000000..3107990dde
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wizard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wordprocessor.png
new file mode 100644
index 0000000000..71ee960499
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/16/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/adobe-reader.png
new file mode 100755
index 0000000000..7950b65ff0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/alarm.png
new file mode 100644
index 0000000000..212eb182eb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/antivirus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/antivirus.png
new file mode 100644
index 0000000000..4ac0c809d9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/antivirus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appearance.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appearance.png
new file mode 100644
index 0000000000..985147ddf1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appearance.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appointment.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appointment.png
new file mode 100644
index 0000000000..22aa13e8f1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/appointment.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/attach.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/attach.png
new file mode 100644
index 0000000000..2760b334e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/attach.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/babelfish.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/babelfish.png
new file mode 100644
index 0000000000..a93b2afc33
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/babelfish.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/back.png
new file mode 100644
index 0000000000..4148ab8811
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/background.png
new file mode 100755
index 0000000000..5ab7323ce9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bell.png
new file mode 100644
index 0000000000..3482bacce2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bitmapgraphics.png
new file mode 100644
index 0000000000..253cc09d4d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/block-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/block-device.png
new file mode 100644
index 0000000000..c1330e8fc3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/block-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark-add.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark-add.png
new file mode 100644
index 0000000000..ce4fea6004
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark-add.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark.png
new file mode 100644
index 0000000000..ced954c97f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/bookmark.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-cancel.png
new file mode 100644
index 0000000000..96919575af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-ok.png
new file mode 100644
index 0000000000..31c064ba92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/button-ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cache.png
new file mode 100644
index 0000000000..a9d0dd2813
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/camera.png
new file mode 100644
index 0000000000..c15f626612
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cancel.png
new file mode 100644
index 0000000000..96919575af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cdrom.png
new file mode 100644
index 0000000000..2a9bb9f16d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/char-device.png
new file mode 100644
index 0000000000..3d26f0c150
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/clock.png
new file mode 100644
index 0000000000..d1099336ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-fill.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-fill.png
new file mode 100644
index 0000000000..71d4e2e55a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-fill.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-line.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-line.png
new file mode 100644
index 0000000000..86f35a7cfd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/color-line.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/colors.png
new file mode 100644
index 0000000000..a2fb946e86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/configure.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/configure.png
new file mode 100644
index 0000000000..96ba4338f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/configure.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-creating.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-creating.png
new file mode 100644
index 0000000000..437b9b6dea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-creating.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-established.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-established.png
new file mode 100644
index 0000000000..73b3cba05b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-established.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-no.png
new file mode 100644
index 0000000000..66c4e7f5d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/connect-no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/contents.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/contents.png
new file mode 100644
index 0000000000..7596e67a64
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/contents.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/control-center.png
new file mode 100644
index 0000000000..28a7199dea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/core.png
new file mode 100644
index 0000000000..73197f572e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/date.png
new file mode 100644
index 0000000000..706eacbb19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/decrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/decrypted.png
new file mode 100644
index 0000000000..2228639459
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/decrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-col.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-col.png
new file mode 100644
index 0000000000..86800e40d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-col.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-row.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-row.png
new file mode 100644
index 0000000000..e3a4a56a4b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/delete-table-row.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/desktop.png
new file mode 100644
index 0000000000..7a90fa1fa4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/dictionary.png
new file mode 100644
index 0000000000..ba7df514e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/display.png
new file mode 100644
index 0000000000..4c8a28820d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/down.png
new file mode 100644
index 0000000000..43b7acacf3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-copy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-copy.png
new file mode 100644
index 0000000000..eac4d8c93b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-copy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-cut.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-cut.png
new file mode 100644
index 0000000000..192b5757a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-cut.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-delete.png
new file mode 100644
index 0000000000..6fb193f061
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-paste.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-paste.png
new file mode 100644
index 0000000000..b8454f91da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit-paste.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit.png
new file mode 100644
index 0000000000..ce8b226710
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/edit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/effect.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/effect.png
new file mode 100644
index 0000000000..1ba53125d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/effect.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/email.png
new file mode 100644
index 0000000000..a21f68f259
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/encrypted.png
new file mode 100644
index 0000000000..39a52b6de2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/energy.png
new file mode 100644
index 0000000000..f70a153fa6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/error.png
new file mode 100644
index 0000000000..ddce82a94b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exec.png
new file mode 100644
index 0000000000..8e3b5a9043
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exit.png
new file mode 100644
index 0000000000..119e5ef7fe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/exit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/favourite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/favourite.png
new file mode 100644
index 0000000000..00880af3e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/favourite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-find.png
new file mode 100644
index 0000000000..40762a0250
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-new.png
new file mode 100644
index 0000000000..7be37e89a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-open.png
new file mode 100644
index 0000000000..a79982ea1f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-print.png
new file mode 100644
index 0000000000..3a96c4a2c5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save-as.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save-as.png
new file mode 100644
index 0000000000..517fc2eac2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save-as.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save.png
new file mode 100644
index 0000000000..f85b99afe1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/file-save.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/find.png
new file mode 100644
index 0000000000..da3da6d625
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/floppy.png
new file mode 100644
index 0000000000..0ff7434393
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/flowchart.png
new file mode 100644
index 0000000000..d07de88621
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-favorite.png
new file mode 100644
index 0000000000..c2633f6e32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-important.png
new file mode 100644
index 0000000000..8ed96f8af4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-locked.png
new file mode 100644
index 0000000000..38bfb79223
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-open.png
new file mode 100644
index 0000000000..bfb8e8dd5c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder.png
new file mode 100644
index 0000000000..d44563c330
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-down.png
new file mode 100644
index 0000000000..dc21e600ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-up.png
new file mode 100644
index 0000000000..d06fc819e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/font-size-up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/fonts.png
new file mode 100644
index 0000000000..1741a2e04b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-decrease-indent.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-decrease-indent.png
new file mode 100644
index 0000000000..6a58ff5487
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-decrease-indent.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-increase-indent.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-increase-indent.png
new file mode 100644
index 0000000000..581605d2b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/format-increase-indent.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/forward.png
new file mode 100644
index 0000000000..b6e026a630
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/funct.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/funct.png
new file mode 100644
index 0000000000..a7a50a525d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/funct.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/graphics.png
new file mode 100644
index 0000000000..5cf9859630
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/harddrive.png
new file mode 100644
index 0000000000..e8f85048ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/hardware-info.png
new file mode 100644
index 0000000000..8d0c3cf670
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help-center.png
new file mode 100644
index 0000000000..44588c9178
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help.png
new file mode 100644
index 0000000000..9fe7652669
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/history.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/history.png
new file mode 100644
index 0000000000..ea64540042
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/history.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/home.png
new file mode 100644
index 0000000000..14ee4846f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/idea.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/idea.png
new file mode 100644
index 0000000000..d9e7d12e3b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/idea.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/inbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/inbox.png
new file mode 100644
index 0000000000..0a921b62dc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/inbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/info.png
new file mode 100644
index 0000000000..5b97b2f848
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-col.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-col.png
new file mode 100644
index 0000000000..cf2283d6e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-col.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-row.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-row.png
new file mode 100644
index 0000000000..5af5fbe9be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/insert-table-row.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-available.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-available.png
new file mode 100644
index 0000000000..1449318ff5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-available.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-away.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-away.png
new file mode 100644
index 0000000000..370144e0c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/instant-away.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/joystick.png
new file mode 100644
index 0000000000..8821428e4e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/keyboard-layout.png
new file mode 100644
index 0000000000..8e417a7088
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/launch.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/launch.png
new file mode 100644
index 0000000000..da97aef509
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/launch.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/locale.png
new file mode 100644
index 0000000000..553e683278
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/look-and-feel.png
new file mode 100644
index 0000000000..0792b3a872
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mac.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mac.png
new file mode 100644
index 0000000000..1e8db45990
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mac.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-delete.png
new file mode 100644
index 0000000000..7b1430ae61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-find.png
new file mode 100644
index 0000000000..202275ab61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-forward.png
new file mode 100644
index 0000000000..919b41ea82
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-get.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-get.png
new file mode 100644
index 0000000000..d8d2deb0a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-get.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-new.png
new file mode 100644
index 0000000000..384cbf34e9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply-all.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply-all.png
new file mode 100644
index 0000000000..742a40b76e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply-all.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply.png
new file mode 100644
index 0000000000..e0f50a7037
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-reply.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-send.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-send.png
new file mode 100644
index 0000000000..a802f04aee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail-send.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail.png
new file mode 100644
index 0000000000..732b5b60b6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mail.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-archive.png
new file mode 100755
index 0000000000..fdc7a52552
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-binary.png
new file mode 100755
index 0000000000..28d3beae0f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-calendar.png
new file mode 100755
index 0000000000..d754cb4057
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-card.png
new file mode 100755
index 0000000000..a8b9429025
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-document.png
new file mode 100755
index 0000000000..8901c3aa35
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-html.png
new file mode 100755
index 0000000000..d0df8e9586
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-image.png
new file mode 100755
index 0000000000..a6f715e687
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-manual.png
new file mode 100755
index 0000000000..d35a197144
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-multimedia.png
new file mode 100755
index 0000000000..2fab2dfab1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-pdf.png
new file mode 100755
index 0000000000..41bbe5616f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-quicktime.png
new file mode 100755
index 0000000000..9149170553
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-rpm.png
new file mode 100755
index 0000000000..ebef4c7ff1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-script.png
new file mode 100755
index 0000000000..bdd0471523
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-shellscript.png
new file mode 100755
index 0000000000..59de8cfef2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-sourcecode.png
new file mode 100755
index 0000000000..20cdf4cfa8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-spreadsheet.png
new file mode 100755
index 0000000000..4e478c0f41
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-text.png
new file mode 100755
index 0000000000..2ae8d9cfc4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-video.png
new file mode 100755
index 0000000000..643fc459c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/misc.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/misc.png
new file mode 100644
index 0000000000..b5c894955b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/misc.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/modem.png
new file mode 100755
index 0000000000..3d1b26a8fe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mouse.png
new file mode 100644
index 0000000000..db3ddfaf91
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/movieplayer.png
new file mode 100644
index 0000000000..53ffcdec6d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/multimedia.png
new file mode 100644
index 0000000000..305915c86d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mycomputer.png
new file mode 100755
index 0000000000..c707081eba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/netscape.png
new file mode 100755
index 0000000000..25cb9da55b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/network.png
new file mode 100644
index 0000000000..c8ae2d8018
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/ok.png
new file mode 100644
index 0000000000..13ba71d564
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/outbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/outbox.png
new file mode 100644
index 0000000000..1e8dc243de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/outbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/paint.png
new file mode 100644
index 0000000000..faa687b165
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/partitions.png
new file mode 100644
index 0000000000..286ed29cd3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/password.png
new file mode 100644
index 0000000000..2c84ee4f7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/pda.png
new file mode 100644
index 0000000000..e471f2cc76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/penguin.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/penguin.png
new file mode 100644
index 0000000000..83819e5202
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/penguin.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/printer.png
new file mode 100755
index 0000000000..a12744468e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/queue.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/queue.png
new file mode 100644
index 0000000000..a379214c9a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/queue.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/redo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/redo.png
new file mode 100644
index 0000000000..8a4c817d01
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/redo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/reload.png
new file mode 100644
index 0000000000..9b80d879c7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/run.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/run.png
new file mode 100644
index 0000000000..b5c894955b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/run.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/scanner.png
new file mode 100644
index 0000000000..5c338444e9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/search.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/search.png
new file mode 100644
index 0000000000..4f880ab65f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/search.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/server.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/server.png
new file mode 100644
index 0000000000..3d090401fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/server.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/services.png
new file mode 100644
index 0000000000..7592ac306c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/settings.png
new file mode 100644
index 0000000000..c611e63a7e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/signature.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/signature.png
new file mode 100644
index 0000000000..d6e767c5a0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/signature.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/spellcheck.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/spellcheck.png
new file mode 100644
index 0000000000..444dce6368
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/spellcheck.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/stop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/stop.png
new file mode 100644
index 0000000000..830e2e62b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/stop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tablet.png
new file mode 100644
index 0000000000..ed68ce89f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/terminal.png
new file mode 100644
index 0000000000..bd7fd7764b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/text-strike.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/text-strike.png
new file mode 100644
index 0000000000..c060b4ab8a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/text-strike.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/toys.png
new file mode 100644
index 0000000000..2202ff676b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-empty.png
new file mode 100644
index 0000000000..e9bc350e7a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-full.png
new file mode 100644
index 0000000000..7b7b610e2e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tux.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tux.png
new file mode 100644
index 0000000000..32c851493f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tux.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tv.png
new file mode 100644
index 0000000000..321d666f82
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/undo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/undo.png
new file mode 100644
index 0000000000..a63c3ef998
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/undo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/up.png
new file mode 100644
index 0000000000..dfd2fd086e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/user.png
new file mode 100644
index 0000000000..ee321d4ef8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/utilities.png
new file mode 100644
index 0000000000..23193e4775
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/vectorgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/vectorgraphics.png
new file mode 100644
index 0000000000..503d9b3fe3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/vectorgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-bottom.png
new file mode 100644
index 0000000000..2607a504b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-choose.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-choose.png
new file mode 100644
index 0000000000..21ec5a388e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-choose.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-detailed.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-detailed.png
new file mode 100644
index 0000000000..19ab36e9ab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-detailed.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-icon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-icon.png
new file mode 100644
index 0000000000..f6ced880b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-icon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-left-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-left-right.png
new file mode 100755
index 0000000000..7de6ba0d58
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-left-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-multicolumn.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-multicolumn.png
new file mode 100644
index 0000000000..aa834c3f30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-multicolumn.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-remove.png
new file mode 100755
index 0000000000..abfcae8021
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-right.png
new file mode 100755
index 0000000000..542f97700a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-sidetree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-sidetree.png
new file mode 100644
index 0000000000..ddf73f5f6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-sidetree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-text.png
new file mode 100644
index 0000000000..f789dda159
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-top-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-top-bottom.png
new file mode 100755
index 0000000000..6384728edb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-top-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-tree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-tree.png
new file mode 100755
index 0000000000..7eb7909962
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/view-tree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-fit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-fit.png
new file mode 100644
index 0000000000..4d8b0610fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-fit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-minus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-minus.png
new file mode 100644
index 0000000000..7ecf08f5da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-minus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-original.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-original.png
new file mode 100644
index 0000000000..e09aa1e9fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-original.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-plus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-plus.png
new file mode 100644
index 0000000000..df1f1a9ad1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag-plus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag.png
new file mode 100644
index 0000000000..4f880ab65f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/viewmag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/wizard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/wizard.png
new file mode 100644
index 0000000000..21d5e2f828
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/22/wizard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/3d.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/3d.png
new file mode 100644
index 0000000000..226d45a27a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/3d.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/accessibility.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/accessibility.png
new file mode 100644
index 0000000000..58429cabfb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/accessibility.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/adobe-reader.png
new file mode 100755
index 0000000000..75f1fc223e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/alarm.png
new file mode 100644
index 0000000000..3c5b9f065c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/antivirus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/antivirus.png
new file mode 100644
index 0000000000..eaca74ae86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/antivirus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appearance.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appearance.png
new file mode 100644
index 0000000000..3b39c56162
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appearance.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/applications.png
new file mode 100644
index 0000000000..4d531001c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appointment.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appointment.png
new file mode 100644
index 0000000000..21fb6dd424
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/appointment.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/attach.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/attach.png
new file mode 100644
index 0000000000..10b7dfcab6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/attach.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/babelfish.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/babelfish.png
new file mode 100644
index 0000000000..96b4201ac9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/babelfish.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/back.png
new file mode 100644
index 0000000000..895755ea21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/background.png
new file mode 100755
index 0000000000..45d81edefb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bell.png
new file mode 100644
index 0000000000..6f8293fae7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bitmapgraphics.png
new file mode 100644
index 0000000000..ea7af0f563
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/block-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/block-device.png
new file mode 100644
index 0000000000..6553907ba2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/block-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark-add.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark-add.png
new file mode 100644
index 0000000000..9b95bd31dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark-add.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark.png
new file mode 100644
index 0000000000..028869cbe3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bookmark.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bug.png
new file mode 100644
index 0000000000..41d2051999
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-cancel.png
new file mode 100644
index 0000000000..c6464d90a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-ok.png
new file mode 100644
index 0000000000..230de53029
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/button-ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cache.png
new file mode 100644
index 0000000000..7700fd9ad7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/calculator.png
new file mode 100644
index 0000000000..34063167c6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cam.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cam.png
new file mode 100644
index 0000000000..6bd468b787
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cam.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/camera.png
new file mode 100644
index 0000000000..f32b85afca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cdrom.png
new file mode 100644
index 0000000000..ad3239a410
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/char-device.png
new file mode 100644
index 0000000000..6ebcc0484f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/chart.png
new file mode 100644
index 0000000000..943b8bd106
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clipboard.png
new file mode 100755
index 0000000000..e84fa76808
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clock.png
new file mode 100644
index 0000000000..0f93b36ccb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/colors.png
new file mode 100644
index 0000000000..e5aa87cbdc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/configure.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/configure.png
new file mode 100644
index 0000000000..11415643fb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/configure.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-creating.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-creating.png
new file mode 100644
index 0000000000..0c217aa67b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-creating.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-established.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-established.png
new file mode 100644
index 0000000000..efe48f7f4b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-established.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-no.png
new file mode 100644
index 0000000000..da9ed96cbc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/connect-no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/contents.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/contents.png
new file mode 100644
index 0000000000..2e86079c02
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/contents.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/control-center.png
new file mode 100644
index 0000000000..6537ba75ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cookie.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cookie.png
new file mode 100644
index 0000000000..c062d072bc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/cookie.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/core.png
new file mode 100644
index 0000000000..9f4b6cc3da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/date.png
new file mode 100644
index 0000000000..2e20985529
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/decrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/decrypted.png
new file mode 100644
index 0000000000..0becd65abd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/decrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-col.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-col.png
new file mode 100644
index 0000000000..e1d58acae4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-col.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-row.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-row.png
new file mode 100644
index 0000000000..8a9df47039
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/delete-table-row.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/desktop.png
new file mode 100644
index 0000000000..85b495e999
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/devices.png
new file mode 100644
index 0000000000..d6354ad284
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/dictionary.png
new file mode 100644
index 0000000000..fa3a0537ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/display.png
new file mode 100644
index 0000000000..1d9b132443
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/down.png
new file mode 100644
index 0000000000..adb188bc10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-copy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-copy.png
new file mode 100644
index 0000000000..cfa9cb4317
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-copy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-cut.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-cut.png
new file mode 100644
index 0000000000..79d2dcae39
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-cut.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-delete.png
new file mode 100644
index 0000000000..945d221eea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-paste.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-paste.png
new file mode 100644
index 0000000000..a192060bdd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit-paste.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit.png
new file mode 100644
index 0000000000..1d69145151
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/edit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/editor.png
new file mode 100644
index 0000000000..e4185bfe65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/email.png
new file mode 100644
index 0000000000..edaba054ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/encrypted.png
new file mode 100644
index 0000000000..61bf0ded1d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/energy.png
new file mode 100644
index 0000000000..97681a4df1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/error.png
new file mode 100644
index 0000000000..1327c241d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exec.png
new file mode 100644
index 0000000000..6d21477035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exit.png
new file mode 100644
index 0000000000..4877f19fc4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/exit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favorites.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favorites.png
new file mode 100644
index 0000000000..b7e10c47fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favorites.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favourite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favourite.png
new file mode 100644
index 0000000000..e75523b068
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/favourite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-find.png
new file mode 100644
index 0000000000..418a8ad2c3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-manager.png
new file mode 100644
index 0000000000..699c0ddd46
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-new.png
new file mode 100644
index 0000000000..8a303b7db2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-open.png
new file mode 100644
index 0000000000..503a004591
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-print.png
new file mode 100644
index 0000000000..4325b61869
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save-as.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save-as.png
new file mode 100644
index 0000000000..61a080ecd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save-as.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save.png
new file mode 100644
index 0000000000..dd00abd166
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/file-save.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fileshare.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fileshare.png
new file mode 100644
index 0000000000..e4642e8dd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fileshare.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/find.png
new file mode 100644
index 0000000000..91f6eb6568
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/floppy.png
new file mode 100644
index 0000000000..b593aea588
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/flowchart.png
new file mode 100644
index 0000000000..b1443c78f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-favorite.png
new file mode 100644
index 0000000000..f810eb7334
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-important.png
new file mode 100644
index 0000000000..fd35b914eb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-locked.png
new file mode 100644
index 0000000000..1b4b616d34
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-open.png
new file mode 100644
index 0000000000..18cfb602d9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder.png
new file mode 100644
index 0000000000..5194d1bc87
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fonts.png
new file mode 100644
index 0000000000..cc01e0e7e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/forward.png
new file mode 100644
index 0000000000..6e8a04bf98
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/funct.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/funct.png
new file mode 100644
index 0000000000..987cdb0619
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/funct.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/games.png
new file mode 100644
index 0000000000..2bb69e733f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/goto.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/goto.png
new file mode 100644
index 0000000000..101162f1bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/goto.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/graphics.png
new file mode 100644
index 0000000000..62dae0dcc8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/harddrive.png
new file mode 100644
index 0000000000..bec63d5d5f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware-info.png
new file mode 100644
index 0000000000..c9ad3a0f2b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware.png
new file mode 100644
index 0000000000..84d40588d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/hardware.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help-center.png
new file mode 100644
index 0000000000..a626c9d761
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help.png
new file mode 100644
index 0000000000..5858f03f7e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/home.png
new file mode 100644
index 0000000000..5205539fbe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/icons.png
new file mode 100644
index 0000000000..a12f847d9d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/iconthemes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/iconthemes.png
new file mode 100644
index 0000000000..c5326752ac
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/iconthemes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/important.png
new file mode 100644
index 0000000000..d83f3491e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/inbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/inbox.png
new file mode 100644
index 0000000000..62aefcc0d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/inbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/info.png
new file mode 100644
index 0000000000..8f5f806d55
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-col.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-col.png
new file mode 100644
index 0000000000..f0dab49a5a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-col.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-row.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-row.png
new file mode 100644
index 0000000000..504b9b0fb9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/insert-table-row.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-available.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-available.png
new file mode 100644
index 0000000000..24d280b904
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-available.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-away.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-away.png
new file mode 100644
index 0000000000..c13f5224dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/instant-away.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/joystick.png
new file mode 100644
index 0000000000..35ed3172fb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/keyboard-layout.png
new file mode 100644
index 0000000000..672c593107
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/launch.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/launch.png
new file mode 100644
index 0000000000..5f61bea717
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/launch.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/locale.png
new file mode 100644
index 0000000000..96b4201ac9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/look-and-feel.png
new file mode 100644
index 0000000000..75e29219b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mac.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mac.png
new file mode 100644
index 0000000000..68b8b66649
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mac.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/magnifier.png
new file mode 100644
index 0000000000..af1e0651ad
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-delete.png
new file mode 100644
index 0000000000..f66cc05954
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-find.png
new file mode 100644
index 0000000000..7992c47abe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-get.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-get.png
new file mode 100644
index 0000000000..e0362d7091
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-get.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-new.png
new file mode 100644
index 0000000000..e8dfc7cb55
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-send.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-send.png
new file mode 100644
index 0000000000..01bd046552
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail-send.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail.png
new file mode 100644
index 0000000000..4d9cf72955
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mail.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/memory.png
new file mode 100644
index 0000000000..8b50f37c90
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-archive.png
new file mode 100755
index 0000000000..2d092f3a5f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-binary.png
new file mode 100755
index 0000000000..cb2ff548ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-calendar.png
new file mode 100755
index 0000000000..4e0b082a5e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-card.png
new file mode 100755
index 0000000000..326feb1064
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-document.png
new file mode 100755
index 0000000000..1ddec27941
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-html.png
new file mode 100755
index 0000000000..9490e6e630
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-image.png
new file mode 100755
index 0000000000..d6a9bc31b6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-manual.png
new file mode 100755
index 0000000000..99b740ad42
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-multimedia.png
new file mode 100755
index 0000000000..9fefadaaf6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-pdf.png
new file mode 100755
index 0000000000..fca2c672e2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-quicktime.png
new file mode 100755
index 0000000000..637d392929
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-rpm.png
new file mode 100755
index 0000000000..8c0ea5e1ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-script.png
new file mode 100755
index 0000000000..99d8d82a51
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-shellscript.png
new file mode 100755
index 0000000000..a0f6727d73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-sourcecode.png
new file mode 100755
index 0000000000..e9d7305f18
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-spreadsheet.png
new file mode 100755
index 0000000000..b9b8d564b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-text.png
new file mode 100755
index 0000000000..cdd115f4fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-video.png
new file mode 100755
index 0000000000..de00f0ed10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/misc.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/misc.png
new file mode 100644
index 0000000000..6d21477035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/misc.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mixer.png
new file mode 100755
index 0000000000..c122c880bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/modem.png
new file mode 100644
index 0000000000..bedd810de3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mouse.png
new file mode 100644
index 0000000000..c4a2d46033
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/movieplayer.png
new file mode 100644
index 0000000000..b70083616a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/multimedia.png
new file mode 100644
index 0000000000..ffcb28ea1d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mycomputer.png
new file mode 100755
index 0000000000..ac0954880f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/netscape.png
new file mode 100755
index 0000000000..9167a85051
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/network.png
new file mode 100644
index 0000000000..e6f894d9fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notes.png
new file mode 100644
index 0000000000..73b1da53ab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notify.png
new file mode 100755
index 0000000000..ede0d8ed1d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/opera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/opera.png
new file mode 100755
index 0000000000..616f3ab6df
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/opera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/organizer.png
new file mode 100644
index 0000000000..3add587e5a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/outbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/outbox.png
new file mode 100644
index 0000000000..c056e7f649
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/outbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/paint.png
new file mode 100644
index 0000000000..6abbe8cffb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/partitions.png
new file mode 100644
index 0000000000..e5a746f31d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/password.png
new file mode 100644
index 0000000000..f59040a8e4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pda.png
new file mode 100644
index 0000000000..7229831322
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/penguin.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/penguin.png
new file mode 100644
index 0000000000..28f86e3a57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/penguin.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pipe.png
new file mode 100644
index 0000000000..b23fad2f25
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/presentation.png
new file mode 100644
index 0000000000..4323bb6283
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/printer.png
new file mode 100755
index 0000000000..2636edc338
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/queue.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/queue.png
new file mode 100644
index 0000000000..f53c0a45e2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/queue.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/redo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/redo.png
new file mode 100644
index 0000000000..8a065ddae6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/redo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/reload.png
new file mode 100644
index 0000000000..b6b5cc1ffa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/run.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/run.png
new file mode 100644
index 0000000000..6d21477035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/run.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/scanner.png
new file mode 100644
index 0000000000..c972caff32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/search.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/search.png
new file mode 100644
index 0000000000..f507381463
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/search.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/server.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/server.png
new file mode 100644
index 0000000000..6e75e89778
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/server.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/services.png
new file mode 100644
index 0000000000..92291fa3a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/settings.png
new file mode 100644
index 0000000000..9c2e38401d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/sound.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/sound.png
new file mode 100644
index 0000000000..c122c880bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/sound.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/stop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/stop.png
new file mode 100644
index 0000000000..62823a1cb5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/stop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/style.png
new file mode 100644
index 0000000000..2e29a93a06
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/system.png
new file mode 100644
index 0000000000..726784a4d0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tablet.png
new file mode 100644
index 0000000000..121029a603
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/terminal.png
new file mode 100644
index 0000000000..7819e47797
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/themes.png
new file mode 100644
index 0000000000..2bf6a7782b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/toys.png
new file mode 100644
index 0000000000..88df4ab8a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-empty.png
new file mode 100644
index 0000000000..422151cd4d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-full.png
new file mode 100644
index 0000000000..245eeb6962
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tux.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tux.png
new file mode 100644
index 0000000000..c0c562ed80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tux.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tv.png
new file mode 100644
index 0000000000..9ae5c964cb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/undo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/undo.png
new file mode 100644
index 0000000000..0cbd408ba5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/undo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/up.png
new file mode 100644
index 0000000000..4c06a24b26
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/user.png
new file mode 100644
index 0000000000..a5cbf22d3e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/utilities.png
new file mode 100644
index 0000000000..bee68c9224
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/vectorgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/vectorgraphics.png
new file mode 100644
index 0000000000..ea40eabfa7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/vectorgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-bottom.png
new file mode 100644
index 0000000000..2508244ed1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-choose.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-choose.png
new file mode 100644
index 0000000000..d23705ef37
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-choose.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-detailed.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-detailed.png
new file mode 100644
index 0000000000..f3f6fc2c08
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-detailed.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-icon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-icon.png
new file mode 100644
index 0000000000..589cecdc61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-icon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-left-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-left-right.png
new file mode 100755
index 0000000000..c244998eba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-left-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-multicolumn.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-multicolumn.png
new file mode 100644
index 0000000000..cf33991c19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-multicolumn.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-remove.png
new file mode 100755
index 0000000000..a3baa5835e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-right.png
new file mode 100755
index 0000000000..fcd428b98a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-sidetree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-sidetree.png
new file mode 100644
index 0000000000..2970a1c417
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-sidetree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-text.png
new file mode 100644
index 0000000000..ea06f93b16
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-top-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-top-bottom.png
new file mode 100755
index 0000000000..c63f75e08b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-top-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-tree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-tree.png
new file mode 100755
index 0000000000..5280317e8a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/view-tree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-fit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-fit.png
new file mode 100644
index 0000000000..2ef0fd525e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-fit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-minus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-minus.png
new file mode 100644
index 0000000000..18002f9de3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-minus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-original.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-original.png
new file mode 100644
index 0000000000..7f0781022c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-original.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-plus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-plus.png
new file mode 100644
index 0000000000..15b2fa13d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag-plus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag.png
new file mode 100644
index 0000000000..f507381463
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/viewmag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/wordprocessor.png
new file mode 100644
index 0000000000..20bc58563f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/32/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/3d.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/3d.png
new file mode 100644
index 0000000000..546e045994
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/3d.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/accessibility.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/accessibility.png
new file mode 100644
index 0000000000..2b5f2e6542
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/accessibility.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/adobe-reader.png
new file mode 100755
index 0000000000..93f864bbd7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/alarm.png
new file mode 100644
index 0000000000..8351a1ebbb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/antivirus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/antivirus.png
new file mode 100644
index 0000000000..2218bf15b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/antivirus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/applications.png
new file mode 100644
index 0000000000..671fc7db7c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/babelfish.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/babelfish.png
new file mode 100644
index 0000000000..da9f0a9ccf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/babelfish.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/back.png
new file mode 100644
index 0000000000..fb16850c25
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/background.png
new file mode 100755
index 0000000000..7b7bf37dd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bell.png
new file mode 100644
index 0000000000..0c4b6c5e30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bitmapgraphics.png
new file mode 100644
index 0000000000..b290713fb9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/block-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/block-device.png
new file mode 100644
index 0000000000..894d1485ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/block-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bug.png
new file mode 100644
index 0000000000..e57255dafb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cache.png
new file mode 100644
index 0000000000..df779f4b38
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/calculator.png
new file mode 100644
index 0000000000..53e673a14f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/camera.png
new file mode 100644
index 0000000000..fbb290f859
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cdrom.png
new file mode 100644
index 0000000000..b20c507251
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/char-device.png
new file mode 100644
index 0000000000..c3308ee2e8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/chart.png
new file mode 100644
index 0000000000..109c6dd33c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clipboard.png
new file mode 100755
index 0000000000..e808a3c2df
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clock.png
new file mode 100644
index 0000000000..b974797592
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/colors.png
new file mode 100644
index 0000000000..4be4e3501f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/control-center.png
new file mode 100644
index 0000000000..bde85be5fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/core.png
new file mode 100644
index 0000000000..b37fa6faa5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/date.png
new file mode 100644
index 0000000000..b4cdd355b6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/desktop.png
new file mode 100644
index 0000000000..7abb750d40
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/devices.png
new file mode 100644
index 0000000000..59f5d185ac
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/dictionary.png
new file mode 100644
index 0000000000..40efecd0f6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/display.png
new file mode 100644
index 0000000000..de7227329e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/down.png
new file mode 100644
index 0000000000..119a099109
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/editor.png
new file mode 100644
index 0000000000..08c72efabc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/email.png
new file mode 100644
index 0000000000..431e6925fe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/encrypted.png
new file mode 100644
index 0000000000..b4ada7ad5a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/energy.png
new file mode 100644
index 0000000000..1e033aba75
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/error.png
new file mode 100644
index 0000000000..99579f1320
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/exec.png
new file mode 100644
index 0000000000..bb18406bd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favorites.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favorites.png
new file mode 100644
index 0000000000..d1f5e91ccd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favorites.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favourite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favourite.png
new file mode 100644
index 0000000000..a22f281e5e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/favourite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-manager.png
new file mode 100644
index 0000000000..bb0b2a7f81
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-print.png
new file mode 100644
index 0000000000..2be5baa693
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fileshare.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fileshare.png
new file mode 100644
index 0000000000..6a1ef703c8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fileshare.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/floppy.png
new file mode 100644
index 0000000000..31704234a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/flowchart.png
new file mode 100644
index 0000000000..3df005c4ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-favorite.png
new file mode 100644
index 0000000000..2e8fc5faf9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-important.png
new file mode 100644
index 0000000000..8f252a4264
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-locked.png
new file mode 100644
index 0000000000..9ef4067ed0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-open.png
new file mode 100644
index 0000000000..3996a2cdba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder.png
new file mode 100644
index 0000000000..dcae5b4cd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fonts.png
new file mode 100644
index 0000000000..c52d6205f0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/forward.png
new file mode 100644
index 0000000000..69d0e53940
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/games.png
new file mode 100644
index 0000000000..9565ce1ffc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/graphics.png
new file mode 100644
index 0000000000..ae0ef02740
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/harddrive.png
new file mode 100644
index 0000000000..117ea388e8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware-info.png
new file mode 100644
index 0000000000..67ba0e965b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware.png
new file mode 100644
index 0000000000..b685596b71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/hardware.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/help-center.png
new file mode 100644
index 0000000000..970075d939
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/home.png
new file mode 100644
index 0000000000..d08e6ab000
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/icons.png
new file mode 100644
index 0000000000..a9100e732d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/iconthemes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/iconthemes.png
new file mode 100644
index 0000000000..05c6c4b46c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/iconthemes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/important.png
new file mode 100644
index 0000000000..fc64e63241
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/inbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/inbox.png
new file mode 100644
index 0000000000..4ecf5c2e65
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/inbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/info.png
new file mode 100644
index 0000000000..f21142b518
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-available.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-available.png
new file mode 100644
index 0000000000..51678b32d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-available.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-away.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-away.png
new file mode 100644
index 0000000000..f31bf9b781
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/instant-away.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/joystick.png
new file mode 100644
index 0000000000..e7e3a15669
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/keyboard-layout.png
new file mode 100644
index 0000000000..ba0359447a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/locale.png
new file mode 100644
index 0000000000..e7defacbc0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/look-and-feel.png
new file mode 100644
index 0000000000..342ebd7af5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mac.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mac.png
new file mode 100644
index 0000000000..40b1613efa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mac.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/magnifier.png
new file mode 100644
index 0000000000..190964357e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/memory.png
new file mode 100644
index 0000000000..3424cfa339
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-archive.png
new file mode 100755
index 0000000000..d3bf2ab414
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-binary.png
new file mode 100755
index 0000000000..bb46510291
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-calendar.png
new file mode 100755
index 0000000000..f31178350e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-card.png
new file mode 100755
index 0000000000..5031409ba2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-document.png
new file mode 100755
index 0000000000..21f079bf42
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-html.png
new file mode 100755
index 0000000000..bddde59c07
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-image.png
new file mode 100755
index 0000000000..e174c3a1b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-manual.png
new file mode 100755
index 0000000000..b221fd55f8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-multimedia.png
new file mode 100755
index 0000000000..b80dc415aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-pdf.png
new file mode 100755
index 0000000000..9dee728194
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-quicktime.png
new file mode 100755
index 0000000000..fa14e61c71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-rpm.png
new file mode 100755
index 0000000000..70b1ab6094
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-script.png
new file mode 100755
index 0000000000..f3631a87c1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-shellscript.png
new file mode 100755
index 0000000000..bc37e0d09b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-sourcecode.png
new file mode 100755
index 0000000000..ee13140749
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-spreadsheet.png
new file mode 100755
index 0000000000..f6a8d59968
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-text.png
new file mode 100755
index 0000000000..39af2b38e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-video.png
new file mode 100755
index 0000000000..20127110b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mixer.png
new file mode 100755
index 0000000000..e88e686623
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/modem.png
new file mode 100644
index 0000000000..b416b46268
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mouse.png
new file mode 100644
index 0000000000..a35c2405ee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/movieplayer.png
new file mode 100644
index 0000000000..fa6f116eb3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/multimedia.png
new file mode 100644
index 0000000000..97edf2f952
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mycomputer.png
new file mode 100755
index 0000000000..abe2119c6c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/netscape.png
new file mode 100755
index 0000000000..795ade4373
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/network.png
new file mode 100644
index 0000000000..47b78a93cd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notes.png
new file mode 100644
index 0000000000..a832988141
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notify.png
new file mode 100755
index 0000000000..b0aa6e8fa9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/opera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/opera.png
new file mode 100755
index 0000000000..f092f4ec27
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/opera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/organizer.png
new file mode 100644
index 0000000000..42eea3ece8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/outbox.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/outbox.png
new file mode 100644
index 0000000000..9b88a594d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/outbox.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/paint.png
new file mode 100644
index 0000000000..2de7bfc90c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/partitions.png
new file mode 100644
index 0000000000..bddfa43e81
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/password.png
new file mode 100644
index 0000000000..cfe82a9350
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pda.png
new file mode 100644
index 0000000000..5f6fb62247
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/penguin.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/penguin.png
new file mode 100644
index 0000000000..61c96a2b93
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/penguin.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pipe.png
new file mode 100644
index 0000000000..9b75ef8341
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/presentation.png
new file mode 100644
index 0000000000..a8aebef325
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/printer.png
new file mode 100755
index 0000000000..ff6ff9abd1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/reload.png
new file mode 100644
index 0000000000..18304065d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/scanner.png
new file mode 100644
index 0000000000..7b03612cb1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/server.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/server.png
new file mode 100644
index 0000000000..b21caca7e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/server.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/services.png
new file mode 100644
index 0000000000..de0678c1d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/settings.png
new file mode 100644
index 0000000000..d935079cf2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/style.png
new file mode 100644
index 0000000000..5d8af7e878
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/system.png
new file mode 100644
index 0000000000..3ed096d9d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tablet.png
new file mode 100644
index 0000000000..92cbe4a66e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/terminal.png
new file mode 100644
index 0000000000..de458c184f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/themes.png
new file mode 100644
index 0000000000..50430c726d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/toys.png
new file mode 100644
index 0000000000..b8e20c4ac1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-empty.png
new file mode 100644
index 0000000000..a54e6ec513
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-full.png
new file mode 100644
index 0000000000..a69a3b471b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tux.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tux.png
new file mode 100644
index 0000000000..d75f61b08e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tux.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tv.png
new file mode 100644
index 0000000000..17c96a1cf9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/up.png
new file mode 100644
index 0000000000..5231986509
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/user.png
new file mode 100644
index 0000000000..d8b241ca96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/utilities.png
new file mode 100644
index 0000000000..a4cef2f45f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/vectorgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/vectorgraphics.png
new file mode 100644
index 0000000000..6023daaa84
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/vectorgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/wordprocessor.png
new file mode 100644
index 0000000000..a4222666d4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/48/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/3d.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/3d.png
new file mode 100644
index 0000000000..1e1cd08b77
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/3d.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/adobe-reader.png
new file mode 100755
index 0000000000..479736712a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/antivirus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/antivirus.png
new file mode 100644
index 0000000000..c4aac8acaf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/antivirus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/applications.png
new file mode 100644
index 0000000000..d85a736c7e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/babelfish.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/babelfish.png
new file mode 100644
index 0000000000..22783ae997
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/babelfish.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/back.png
new file mode 100644
index 0000000000..1941c2fdee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/background.png
new file mode 100755
index 0000000000..617f37ba73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bell.png
new file mode 100644
index 0000000000..f83c4092e8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bitmapgraphics.png
new file mode 100644
index 0000000000..dd5a891889
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/block-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/block-device.png
new file mode 100644
index 0000000000..656b6e73ac
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/block-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bug.png
new file mode 100644
index 0000000000..af1bd42fd6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cache.png
new file mode 100644
index 0000000000..a49b55d1dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/calculator.png
new file mode 100644
index 0000000000..5ebe853b11
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/camera.png
new file mode 100644
index 0000000000..4e4c55cad9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cdrom.png
new file mode 100644
index 0000000000..8b3eeb6502
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/char-device.png
new file mode 100644
index 0000000000..337e2915d0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/chart.png
new file mode 100644
index 0000000000..c99c69d7a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clipboard.png
new file mode 100755
index 0000000000..8d966f25d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clock.png
new file mode 100644
index 0000000000..5698b5e051
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/colors.png
new file mode 100644
index 0000000000..6c76da0b02
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/control-center.png
new file mode 100644
index 0000000000..4d4db5d657
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/core.png
new file mode 100644
index 0000000000..8c60308a44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/date.png
new file mode 100644
index 0000000000..ef1e4f786c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/desktop.png
new file mode 100644
index 0000000000..e0dc3b02e9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/devices.png
new file mode 100644
index 0000000000..396b3d3ba4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/dictionary.png
new file mode 100644
index 0000000000..ba6ed634c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/display.png
new file mode 100644
index 0000000000..81beb9ad52
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/down.png
new file mode 100644
index 0000000000..75e6ffe946
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/editor.png
new file mode 100644
index 0000000000..c553a93c22
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/email.png
new file mode 100644
index 0000000000..8a2ac80b59
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/encrypted.png
new file mode 100644
index 0000000000..867039f9dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/energy.png
new file mode 100644
index 0000000000..ef4017f76c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/error.png
new file mode 100644
index 0000000000..c486063304
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/exec.png
new file mode 100644
index 0000000000..da16a98fd8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/favourite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/favourite.png
new file mode 100644
index 0000000000..6e56343828
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/favourite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-manager.png
new file mode 100644
index 0000000000..b4552f781c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-print.png
new file mode 100644
index 0000000000..758bb8edbf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fileshare.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fileshare.png
new file mode 100644
index 0000000000..7c9a4fa382
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fileshare.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/floppy.png
new file mode 100644
index 0000000000..b5b8e2c7e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/flowchart.png
new file mode 100644
index 0000000000..9872c4ab5a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-favorite.png
new file mode 100644
index 0000000000..2394145c1f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-important.png
new file mode 100644
index 0000000000..481aae7904
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-locked.png
new file mode 100644
index 0000000000..07ee77c8e8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-open.png
new file mode 100644
index 0000000000..d454d56836
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder.png
new file mode 100644
index 0000000000..8b35d24654
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fonts.png
new file mode 100644
index 0000000000..6fdab333d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/forward.png
new file mode 100644
index 0000000000..2776d66255
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/games.png
new file mode 100644
index 0000000000..e87b2dbae0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/graphics.png
new file mode 100644
index 0000000000..e001cb7935
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/harddrive.png
new file mode 100644
index 0000000000..f84b68e672
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware-info.png
new file mode 100644
index 0000000000..f08a5e58ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware.png
new file mode 100644
index 0000000000..372f725dc5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/hardware.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/help-center.png
new file mode 100644
index 0000000000..44ddf68f4e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/home.png
new file mode 100644
index 0000000000..acf3e4aa84
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/icons.png
new file mode 100644
index 0000000000..3891bc74db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/important.png
new file mode 100644
index 0000000000..2da725a771
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/info.png
new file mode 100644
index 0000000000..3a75f4a78f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/joystick.png
new file mode 100644
index 0000000000..c1fb9f525c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/keyboard-layout.png
new file mode 100644
index 0000000000..0aa7eafda9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/locale.png
new file mode 100644
index 0000000000..042c0d3458
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/look-and-feel.png
new file mode 100644
index 0000000000..b73346e44f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mac.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mac.png
new file mode 100644
index 0000000000..69451090e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mac.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/magnifier.png
new file mode 100644
index 0000000000..5049025b53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/memory.png
new file mode 100644
index 0000000000..61f7cc5171
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-archive.png
new file mode 100755
index 0000000000..352f7e81bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-binary.png
new file mode 100755
index 0000000000..11f7c8317f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-calendar.png
new file mode 100755
index 0000000000..1033eb9b57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-card.png
new file mode 100755
index 0000000000..f6cc43fe9d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-document.png
new file mode 100755
index 0000000000..ed0799b928
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-html.png
new file mode 100755
index 0000000000..da2e70958a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-image.png
new file mode 100755
index 0000000000..787eebc3b6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-manual.png
new file mode 100755
index 0000000000..c95bead13c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-multimedia.png
new file mode 100755
index 0000000000..20e124a675
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-pdf.png
new file mode 100755
index 0000000000..96756b5dfb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-quicktime.png
new file mode 100755
index 0000000000..18c524da40
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-rpm.png
new file mode 100755
index 0000000000..e14d5b3490
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-script.png
new file mode 100755
index 0000000000..340032664a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-shellscript.png
new file mode 100755
index 0000000000..5d31452728
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-sourcecode.png
new file mode 100755
index 0000000000..6ea5b6da3e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-spreadsheet.png
new file mode 100755
index 0000000000..62a0df0033
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-text.png
new file mode 100755
index 0000000000..f87f166f0e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-video.png
new file mode 100755
index 0000000000..9dfb9a58a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mixer.png
new file mode 100755
index 0000000000..fbe8e6d617
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/modem.png
new file mode 100644
index 0000000000..d904be0e08
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mouse.png
new file mode 100644
index 0000000000..b00e36187c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/movieplayer.png
new file mode 100644
index 0000000000..3da95eb22c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/multimedia.png
new file mode 100644
index 0000000000..93f13f7ede
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mycomputer.png
new file mode 100755
index 0000000000..935e5a1f4c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/netscape.png
new file mode 100755
index 0000000000..ca5c65d99a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/network.png
new file mode 100644
index 0000000000..3f7323c1b9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notes.png
new file mode 100644
index 0000000000..80cbca2134
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notify.png
new file mode 100755
index 0000000000..3a4d918ae6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/organizer.png
new file mode 100644
index 0000000000..84a3200cd1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/paint.png
new file mode 100644
index 0000000000..8d602ce676
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/partitions.png
new file mode 100644
index 0000000000..1bcce6d001
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/password.png
new file mode 100644
index 0000000000..2144538119
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pda.png
new file mode 100644
index 0000000000..d66da4a820
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/penguin.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/penguin.png
new file mode 100644
index 0000000000..6c37b8920d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/penguin.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pipe.png
new file mode 100644
index 0000000000..a8ab4256f2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/presentation.png
new file mode 100644
index 0000000000..651ea1b13f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/printer.png
new file mode 100755
index 0000000000..70bd23fdce
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/reload.png
new file mode 100644
index 0000000000..8f0e77ac4c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/scanner.png
new file mode 100644
index 0000000000..74fa14a65b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/services.png
new file mode 100644
index 0000000000..5672cffd13
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/settings.png
new file mode 100644
index 0000000000..fb818b3424
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/style.png
new file mode 100644
index 0000000000..d3f70b0cb5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/system.png
new file mode 100644
index 0000000000..86cd9c73e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tablet.png
new file mode 100644
index 0000000000..86e53f9d74
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/terminal.png
new file mode 100644
index 0000000000..efe6429e20
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/themes.png
new file mode 100644
index 0000000000..784b5aef39
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/toys.png
new file mode 100644
index 0000000000..368eb4cd73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-empty.png
new file mode 100644
index 0000000000..c9529cd551
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-full.png
new file mode 100644
index 0000000000..91d4caf38b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tux.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tux.png
new file mode 100644
index 0000000000..99f3465e53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tux.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tv.png
new file mode 100644
index 0000000000..3c53997a0c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/up.png
new file mode 100644
index 0000000000..89f77e6c9e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/user.png
new file mode 100644
index 0000000000..57c5726d0a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/utilities.png
new file mode 100644
index 0000000000..5e255109d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/vectorgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/vectorgraphics.png
new file mode 100644
index 0000000000..a9f08de465
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/vectorgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/wordprocessor.png
new file mode 100644
index 0000000000..d3e0939caa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/crystalsvg/64/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/adobe-reader.png
new file mode 100644
index 0000000000..f67c5d67fb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/background.png
new file mode 100644
index 0000000000..a4a92b0056
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bell.png
new file mode 100644
index 0000000000..5ad1cd49c6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bitmapgraphics.png
new file mode 100644
index 0000000000..fb1a088cc3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bug.png
new file mode 100644
index 0000000000..2a68ed4206
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cache.png
new file mode 100644
index 0000000000..2ffacacfb7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/camera.png
new file mode 100644
index 0000000000..b98eb0b83b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cdrom.png
new file mode 100644
index 0000000000..caa027bd32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/char-device.png
new file mode 100644
index 0000000000..b2e4a96e64
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/chart.png
new file mode 100644
index 0000000000..34d5696373
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/clock.png
new file mode 100644
index 0000000000..a4794d8a74
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/colors.png
new file mode 100644
index 0000000000..e728b66631
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/control-center.png
new file mode 100644
index 0000000000..e79094c4f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/core.png
new file mode 100644
index 0000000000..8fd16f5592
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/date.png
new file mode 100644
index 0000000000..532d4d3643
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/desktop.png
new file mode 100644
index 0000000000..91d7bd53a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/dictionary.png
new file mode 100644
index 0000000000..60a698d36c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/display.png
new file mode 100644
index 0000000000..fc0da13ab8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/email.png
new file mode 100644
index 0000000000..7bca49ae0e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/encrypted.png
new file mode 100644
index 0000000000..07d0603270
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/energy.png
new file mode 100644
index 0000000000..4b2dbc4f56
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/error.png
new file mode 100644
index 0000000000..d0152daaa8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/exec.png
new file mode 100644
index 0000000000..7354a545e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/floppy.png
new file mode 100644
index 0000000000..3918232445
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/flowchart.png
new file mode 100644
index 0000000000..8d1bb46476
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-favorite.png
new file mode 100644
index 0000000000..99b2572fef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-important.png
new file mode 100644
index 0000000000..7be7064a67
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-locked.png
new file mode 100644
index 0000000000..0cc9cfd971
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-open.png
new file mode 100644
index 0000000000..73a193a652
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder.png
new file mode 100644
index 0000000000..9b62a3be5d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/fonts.png
new file mode 100644
index 0000000000..36e54abfdc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/graphics.png
new file mode 100644
index 0000000000..516e3d51f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/harddrive.png
new file mode 100644
index 0000000000..1fb21b4f0e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/hardware-info.png
new file mode 100644
index 0000000000..cbfa846b56
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/help-center.png
new file mode 100644
index 0000000000..c767aaffaa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/info.png
new file mode 100644
index 0000000000..77ca807b66
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/joystick.png
new file mode 100644
index 0000000000..c0f3954d0f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/keyboard-layout.png
new file mode 100644
index 0000000000..2c4c9c3877
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/locale.png
new file mode 100644
index 0000000000..9b3e233d9e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/look-and-feel.png
new file mode 100644
index 0000000000..197021b62b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-archive.png
new file mode 100644
index 0000000000..a55d3b316f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-binary.png
new file mode 100644
index 0000000000..02cea51144
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-calendar.png
new file mode 100644
index 0000000000..fcfb27cee6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-card.png
new file mode 100644
index 0000000000..37ec9297a8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-document.png
new file mode 100644
index 0000000000..6283f854bd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-html.png
new file mode 100644
index 0000000000..bec74798d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-image.png
new file mode 100644
index 0000000000..120072d471
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-manual.png
new file mode 100644
index 0000000000..4169c7d769
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-multimedia.png
new file mode 100644
index 0000000000..2a567b1c0e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-pdf.png
new file mode 100644
index 0000000000..6fcc0cfe2a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-quicktime.png
new file mode 100755
index 0000000000..619ecc3433
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-rpm.png
new file mode 100644
index 0000000000..0786bfa542
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-script.png
new file mode 100644
index 0000000000..ef2262e8d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-shellscript.png
new file mode 100644
index 0000000000..e635af7fbf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-sourcecode.png
new file mode 100644
index 0000000000..b6d7621493
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-spreadsheet.png
new file mode 100644
index 0000000000..771744a561
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-text.png
new file mode 100644
index 0000000000..66e2f9ca53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-video.png
new file mode 100644
index 0000000000..208bea594f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/modem.png
new file mode 100644
index 0000000000..e6d369fe69
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mouse.png
new file mode 100644
index 0000000000..2708fbc556
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/movieplayer.png
new file mode 100644
index 0000000000..7db093afb7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/multimedia.png
new file mode 100644
index 0000000000..3d30da26a0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mycomputer.png
new file mode 100644
index 0000000000..a6736baeef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/netscape.png
new file mode 100644
index 0000000000..26bf224295
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/network.png
new file mode 100644
index 0000000000..99d1fed73a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/notes.png
new file mode 100644
index 0000000000..31e01eb9be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/organizer.png
new file mode 100644
index 0000000000..b4ab1feac6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/paint.png
new file mode 100644
index 0000000000..b1ceb3e40f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/partitions.png
new file mode 100644
index 0000000000..8bcaf64c92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/password.png
new file mode 100644
index 0000000000..ffe9b375b2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/pda.png
new file mode 100644
index 0000000000..4de6d95726
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/presentation.png
new file mode 100644
index 0000000000..4b269d9d10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/printer.png
new file mode 100644
index 0000000000..cbdfa8d043
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/scanner.png
new file mode 100644
index 0000000000..983299757e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/services.png
new file mode 100644
index 0000000000..b1fee2ea54
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/settings.png
new file mode 100644
index 0000000000..8924ca1eb6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tablet.png
new file mode 100644
index 0000000000..34dcbe0410
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/terminal.png
new file mode 100644
index 0000000000..a8ff70ea57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/toys.png
new file mode 100644
index 0000000000..c86b352eb3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-empty.png
new file mode 100644
index 0000000000..7c5085f15c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-full.png
new file mode 100644
index 0000000000..a0545dc470
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tv.png
new file mode 100644
index 0000000000..710a947999
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/user.png
new file mode 100644
index 0000000000..6ed54d43a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/utilities.png
new file mode 100644
index 0000000000..097983ebbc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/wordprocessor.png
new file mode 100644
index 0000000000..6e166b2b27
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/128/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/accessibility.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/accessibility.png
new file mode 100644
index 0000000000..c6a670be53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/accessibility.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/adobe-reader.png
new file mode 100644
index 0000000000..b50f4a7e15
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/alarm.png
new file mode 100644
index 0000000000..fa1751aef4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/applications.png
new file mode 100644
index 0000000000..ba4fb07212
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/apply.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/apply.png
new file mode 100644
index 0000000000..5b0f6a6174
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/apply.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/attach.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/attach.png
new file mode 100644
index 0000000000..faa19ed9f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/attach.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/back.png
new file mode 100644
index 0000000000..3fe8b178ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/background.png
new file mode 100644
index 0000000000..14ea3e47fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bell.png
new file mode 100644
index 0000000000..6a10c01e85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bitmapgraphics.png
new file mode 100644
index 0000000000..b13dbea1ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-add.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-add.png
new file mode 100644
index 0000000000..452da8d18a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-add.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-folder.png
new file mode 100644
index 0000000000..f0dc74a34d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-toolbar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-toolbar.png
new file mode 100644
index 0000000000..d044ca630c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark-toolbar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark.png
new file mode 100644
index 0000000000..2cd69471de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bookmark.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bug.png
new file mode 100644
index 0000000000..8cb2d5d620
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-cancel.png
new file mode 100644
index 0000000000..a432b492c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-ok.png
new file mode 100644
index 0000000000..5b0f6a6174
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/button-ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cache.png
new file mode 100644
index 0000000000..b789c54462
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/calculator.png
new file mode 100644
index 0000000000..905db5c840
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/camera.png
new file mode 100644
index 0000000000..45d1436aa2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cancel.png
new file mode 100644
index 0000000000..a432b492c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cdrom.png
new file mode 100644
index 0000000000..e2e3f679af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/char-device.png
new file mode 100644
index 0000000000..96c49df0c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/chart.png
new file mode 100644
index 0000000000..82e15c1790
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clipboard.png
new file mode 100644
index 0000000000..a2c0cfb105
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clock.png
new file mode 100644
index 0000000000..7c622a0999
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-fill.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-fill.png
new file mode 100644
index 0000000000..13631ec261
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-fill.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-line.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-line.png
new file mode 100644
index 0000000000..33de951cc6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/color-line.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/colors.png
new file mode 100644
index 0000000000..fc6a1953bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/configure.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/configure.png
new file mode 100644
index 0000000000..a4a3834abc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/configure.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-creating.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-creating.png
new file mode 100644
index 0000000000..f37d33a0fb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-creating.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-established.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-established.png
new file mode 100644
index 0000000000..0f6b9f9f87
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-established.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-no.png
new file mode 100644
index 0000000000..ccac9f60e4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/connect-no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/control-center.png
new file mode 100644
index 0000000000..f9c503e817
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cookie.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cookie.png
new file mode 100644
index 0000000000..5c1ca3c0f0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/cookie.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/core.png
new file mode 100644
index 0000000000..e8b59fc430
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/date.png
new file mode 100644
index 0000000000..bd4b4c6c16
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/decrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/decrypted.png
new file mode 100644
index 0000000000..42dd93e266
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/decrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/desktop.png
new file mode 100644
index 0000000000..291f8a4ac9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/devices.png
new file mode 100644
index 0000000000..dbba948f61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/dictionary.png
new file mode 100644
index 0000000000..2bfe4d8ec4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/display.png
new file mode 100644
index 0000000000..ededc0bd34
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/down.png
new file mode 100644
index 0000000000..f3bc4cd093
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-copy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-copy.png
new file mode 100644
index 0000000000..b7c938a999
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-copy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-cut.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-cut.png
new file mode 100644
index 0000000000..49f359147a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-cut.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-delete.png
new file mode 100644
index 0000000000..d33c344545
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-paste.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-paste.png
new file mode 100644
index 0000000000..4c43ddfd76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit-paste.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit.png
new file mode 100644
index 0000000000..423187c2c3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/edit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/editor.png
new file mode 100644
index 0000000000..4a52bb1c5a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/email.png
new file mode 100644
index 0000000000..694a8e068b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/encrypted.png
new file mode 100644
index 0000000000..80357125c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/energy.png
new file mode 100644
index 0000000000..733dfcf8b9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/error.png
new file mode 100644
index 0000000000..2997461b21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exec.png
new file mode 100644
index 0000000000..4e7fc432db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exit.png
new file mode 100644
index 0000000000..63232417a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/exit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-manager.png
new file mode 100644
index 0000000000..df01df2ba7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-new.png
new file mode 100644
index 0000000000..f38d02ee59
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-open.png
new file mode 100644
index 0000000000..2d8e3ba2ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-print.png
new file mode 100644
index 0000000000..3a87543224
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save-as.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save-as.png
new file mode 100644
index 0000000000..71602bc361
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save-as.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save.png
new file mode 100644
index 0000000000..fd0048ded9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/file-save.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/find.png
new file mode 100644
index 0000000000..e912de2885
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/floppy.png
new file mode 100644
index 0000000000..68a4eabba7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/flowchart.png
new file mode 100644
index 0000000000..3bae38de26
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-favorite.png
new file mode 100644
index 0000000000..1e217e7080
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-important.png
new file mode 100644
index 0000000000..5cadf9d963
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-locked.png
new file mode 100644
index 0000000000..e9c5bfd081
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-open.png
new file mode 100644
index 0000000000..2c55c5636e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder.png
new file mode 100644
index 0000000000..9232553fcd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/fonts.png
new file mode 100644
index 0000000000..3aab3bd2dc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/forward.png
new file mode 100644
index 0000000000..3e9562c4a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/games.png
new file mode 100644
index 0000000000..4b78616eaa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/graphics.png
new file mode 100644
index 0000000000..2382100270
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/harddrive.png
new file mode 100644
index 0000000000..f570c51779
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/hardware-info.png
new file mode 100644
index 0000000000..1f49a9ff2a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help-center.png
new file mode 100644
index 0000000000..096b00c4e8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help.png
new file mode 100644
index 0000000000..28a0f9e5e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history-clear.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history-clear.png
new file mode 100644
index 0000000000..12bf37b5fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history-clear.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history.png
new file mode 100644
index 0000000000..8d658e0de0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/history.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/home.png
new file mode 100644
index 0000000000..a93612f174
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/icons.png
new file mode 100644
index 0000000000..df51f18f96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/iconthemes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/iconthemes.png
new file mode 100644
index 0000000000..a5dcbe0898
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/iconthemes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/important.png
new file mode 100644
index 0000000000..2b3d4f05ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/info.png
new file mode 100644
index 0000000000..cfc3089867
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/joystick.png
new file mode 100644
index 0000000000..4b78616eaa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/keyboard-layout.png
new file mode 100644
index 0000000000..40ad9e4047
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/locale.png
new file mode 100644
index 0000000000..a79df4eb5b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/look-and-feel.png
new file mode 100644
index 0000000000..7d7da74d28
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/magnifier.png
new file mode 100644
index 0000000000..02b3a5dc7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-delete.png
new file mode 100644
index 0000000000..dc9c020f7e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-find.png
new file mode 100644
index 0000000000..1e230e2e40
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-forward.png
new file mode 100644
index 0000000000..0bb1ee287e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-get.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-get.png
new file mode 100644
index 0000000000..f87d1ee487
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-get.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-new.png
new file mode 100644
index 0000000000..7656cbc114
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply-all.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply-all.png
new file mode 100644
index 0000000000..6e825cc500
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply-all.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply.png
new file mode 100644
index 0000000000..c89864952d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-reply.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-send.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-send.png
new file mode 100644
index 0000000000..2113017921
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail-send.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail.png
new file mode 100644
index 0000000000..2de442b800
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mail.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/memory.png
new file mode 100644
index 0000000000..c74903467b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-archive.png
new file mode 100755
index 0000000000..184f959df0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-binary.png
new file mode 100644
index 0000000000..3f4def6c62
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-calendar.png
new file mode 100644
index 0000000000..97691466a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-card.png
new file mode 100644
index 0000000000..f6905dd504
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-color.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-color.png
new file mode 100644
index 0000000000..9c12b3c76a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-color.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-document.png
new file mode 100644
index 0000000000..24c9c5757e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-html.png
new file mode 100644
index 0000000000..f56567f112
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-image.png
new file mode 100644
index 0000000000..246a66cad8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-manual.png
new file mode 100644
index 0000000000..b15c3c3fbb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-multimedia.png
new file mode 100644
index 0000000000..7f4d9733be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-pdf.png
new file mode 100644
index 0000000000..f4863cb6c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-quicktime.png
new file mode 100755
index 0000000000..f0bc57a03e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-rpm.png
new file mode 100644
index 0000000000..a584ce1048
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-script.png
new file mode 100644
index 0000000000..336dd1ef3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-shellscript.png
new file mode 100755
index 0000000000..a2b8d2ed71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-sourcecode.png
new file mode 100644
index 0000000000..5a218fe92f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-spreadsheet.png
new file mode 100644
index 0000000000..f7fa7b9706
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-text.png
new file mode 100644
index 0000000000..8e771b7fda
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-video.png
new file mode 100644
index 0000000000..dd51e90a46
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/misc.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/misc.png
new file mode 100644
index 0000000000..98d4b9969e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/misc.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mixer.png
new file mode 100644
index 0000000000..5e84e63be7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/modem.png
new file mode 100644
index 0000000000..91d89d0626
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mouse.png
new file mode 100644
index 0000000000..e8d2b45d05
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/movieplayer.png
new file mode 100644
index 0000000000..e616061dc9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/multimedia.png
new file mode 100644
index 0000000000..0bea4d8cfb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mycomputer.png
new file mode 100644
index 0000000000..0a929f0383
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/netscape.png
new file mode 100644
index 0000000000..4734d0ccdc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/network.png
new file mode 100644
index 0000000000..03ef9a5700
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/no.png
new file mode 100644
index 0000000000..37a7c74977
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notes.png
new file mode 100644
index 0000000000..1e27e9cae7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notify.png
new file mode 100644
index 0000000000..e9897eff92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/ok.png
new file mode 100644
index 0000000000..5b0f6a6174
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/opera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/opera.png
new file mode 100644
index 0000000000..963449bb90
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/opera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/organizer.png
new file mode 100644
index 0000000000..6c86544de8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/paint.png
new file mode 100644
index 0000000000..dd0b147ff6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/partitions.png
new file mode 100644
index 0000000000..7e219d61dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/password.png
new file mode 100644
index 0000000000..5656824986
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pda.png
new file mode 100644
index 0000000000..655fc0283d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pipe.png
new file mode 100644
index 0000000000..5fe640131e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/presentation.png
new file mode 100644
index 0000000000..5bbcd04a4e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/printer.png
new file mode 100644
index 0000000000..fdf67a1e27
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/queue.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/queue.png
new file mode 100644
index 0000000000..fc3d105e66
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/queue.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/redo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/redo.png
new file mode 100644
index 0000000000..f1e45cff93
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/redo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/reload.png
new file mode 100644
index 0000000000..1c026d32c3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/rotate.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/rotate.png
new file mode 100644
index 0000000000..26d6ed9a16
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/rotate.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/run.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/run.png
new file mode 100644
index 0000000000..751424557e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/run.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/scanner.png
new file mode 100644
index 0000000000..fa0f83dd7b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/services.png
new file mode 100644
index 0000000000..11b917791f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/settings.png
new file mode 100644
index 0000000000..8d8bd6fed0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/signature.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/signature.png
new file mode 100644
index 0000000000..8834f3f592
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/signature.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/spellcheck.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/spellcheck.png
new file mode 100644
index 0000000000..b044b8cfb0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/spellcheck.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/stop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/stop.png
new file mode 100644
index 0000000000..dfb80b2e58
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/stop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/style.png
new file mode 100644
index 0000000000..d5210b4981
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/system.png
new file mode 100644
index 0000000000..7a750b9e46
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-duplicate.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-duplicate.png
new file mode 100644
index 0000000000..fd3ac89087
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-duplicate.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new-raised.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new-raised.png
new file mode 100644
index 0000000000..9ee2e23bed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new-raised.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new.png
new file mode 100644
index 0000000000..e00a8aaf29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-remove.png
new file mode 100644
index 0000000000..3ce06bbba4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tab-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tablet.png
new file mode 100644
index 0000000000..321876c513
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/terminal.png
new file mode 100644
index 0000000000..75ce701a4f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/themes.png
new file mode 100644
index 0000000000..ced431a407
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/toys.png
new file mode 100644
index 0000000000..9e24ab9853
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-empty.png
new file mode 100644
index 0000000000..1e9b81069c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-full.png
new file mode 100644
index 0000000000..aa9d7321f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tv.png
new file mode 100644
index 0000000000..ffcc8353f1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/undo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/undo.png
new file mode 100644
index 0000000000..6129fa0c77
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/undo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/up.png
new file mode 100644
index 0000000000..184c118b63
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/user.png
new file mode 100644
index 0000000000..8e649a80b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/utilities.png
new file mode 100644
index 0000000000..0ec53c9ff4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-bottom.png
new file mode 100644
index 0000000000..e883ed1206
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-choose.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-choose.png
new file mode 100644
index 0000000000..5bd63364cd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-choose.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-detailed.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-detailed.png
new file mode 100644
index 0000000000..89feaeba45
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-detailed.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-icon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-icon.png
new file mode 100644
index 0000000000..be9effbbb0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-icon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-left-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-left-right.png
new file mode 100644
index 0000000000..a5748383f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-left-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-multicolumn.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-multicolumn.png
new file mode 100644
index 0000000000..083052db73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-multicolumn.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-remove.png
new file mode 100644
index 0000000000..2253ae8580
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-right.png
new file mode 100644
index 0000000000..294b3d2445
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-sidetree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-sidetree.png
new file mode 100644
index 0000000000..5cfa622f04
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-sidetree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-text.png
new file mode 100644
index 0000000000..c688d5f6f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-top-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-top-bottom.png
new file mode 100644
index 0000000000..cdd2d2c967
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-top-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-tree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-tree.png
new file mode 100644
index 0000000000..4c23c9ab92
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/view-tree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-fit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-fit.png
new file mode 100644
index 0000000000..fa590fbbed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-fit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-minus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-minus.png
new file mode 100644
index 0000000000..f276ad595c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-minus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-original.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-original.png
new file mode 100644
index 0000000000..41b0d869b3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-original.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-plus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-plus.png
new file mode 100644
index 0000000000..f10b2ece78
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag-plus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag.png
new file mode 100644
index 0000000000..6dd1931589
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/viewmag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wizard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wizard.png
new file mode 100644
index 0000000000..c37091c035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wizard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wordprocessor.png
new file mode 100644
index 0000000000..157028392e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/16/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/adobe-reader.png
new file mode 100644
index 0000000000..1ba5a7fa57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/alarm.png
new file mode 100644
index 0000000000..5da3da43c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/attach.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/attach.png
new file mode 100644
index 0000000000..ccd7dcf2b2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/attach.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/back.png
new file mode 100644
index 0000000000..f3925962f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/background.png
new file mode 100644
index 0000000000..da010da0a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bell.png
new file mode 100644
index 0000000000..3fddea5464
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bitmapgraphics.png
new file mode 100644
index 0000000000..e678d47e7a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark-add.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark-add.png
new file mode 100644
index 0000000000..1b0dbda114
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark-add.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark.png
new file mode 100644
index 0000000000..51fb06bf20
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/bookmark.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-cancel.png
new file mode 100644
index 0000000000..816e06ace8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-ok.png
new file mode 100644
index 0000000000..2166fdffdf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/button-ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cache.png
new file mode 100644
index 0000000000..f83e9b70f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/camera.png
new file mode 100644
index 0000000000..d9aaad70be
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cancel.png
new file mode 100644
index 0000000000..816e06ace8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cdrom.png
new file mode 100644
index 0000000000..2a7b9705af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/char-device.png
new file mode 100644
index 0000000000..13199b3812
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/clock.png
new file mode 100644
index 0000000000..885715309f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-fill.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-fill.png
new file mode 100644
index 0000000000..d95177a716
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-fill.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-line.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-line.png
new file mode 100644
index 0000000000..445c5c7558
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/color-line.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/colors.png
new file mode 100644
index 0000000000..4b925cd294
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/configure.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/configure.png
new file mode 100644
index 0000000000..9e205a0e7a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/configure.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-creating.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-creating.png
new file mode 100644
index 0000000000..004382ca64
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-creating.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-established.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-established.png
new file mode 100644
index 0000000000..52c36b641e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-established.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-no.png
new file mode 100644
index 0000000000..66a4dd2189
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/connect-no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/control-center.png
new file mode 100644
index 0000000000..e4d376d853
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/core.png
new file mode 100644
index 0000000000..fbcf936a58
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/date.png
new file mode 100644
index 0000000000..1b7fd5c4d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/decrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/decrypted.png
new file mode 100644
index 0000000000..bdac7c1a52
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/decrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/desktop.png
new file mode 100644
index 0000000000..c78e07ebee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/dictionary.png
new file mode 100644
index 0000000000..4037e1291a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/display.png
new file mode 100644
index 0000000000..2e64d1821a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/down.png
new file mode 100644
index 0000000000..0733092bdd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-copy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-copy.png
new file mode 100644
index 0000000000..df03cf3f39
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-copy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-cut.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-cut.png
new file mode 100644
index 0000000000..9845a4268f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-cut.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-delete.png
new file mode 100644
index 0000000000..51839a2f44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-paste.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-paste.png
new file mode 100644
index 0000000000..8b7c30068c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit-paste.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit.png
new file mode 100644
index 0000000000..de1659ef22
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/edit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/email.png
new file mode 100644
index 0000000000..789a5ea3c1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/encrypted.png
new file mode 100644
index 0000000000..b25238ef7c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/energy.png
new file mode 100644
index 0000000000..06502e25ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/error.png
new file mode 100644
index 0000000000..f089ffb886
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exec.png
new file mode 100644
index 0000000000..a861875719
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exit.png
new file mode 100644
index 0000000000..78a43ef77b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/exit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-new.png
new file mode 100644
index 0000000000..6e2700ad91
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-open.png
new file mode 100644
index 0000000000..61c388cf2d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-print.png
new file mode 100644
index 0000000000..71831093d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save-as.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save-as.png
new file mode 100644
index 0000000000..4321ca76bd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save-as.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save.png
new file mode 100644
index 0000000000..74b37b0b51
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/file-save.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/find.png
new file mode 100644
index 0000000000..12f7ca853e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/floppy.png
new file mode 100644
index 0000000000..dc46878ccb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-favorite.png
new file mode 100644
index 0000000000..11966754f6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-important.png
new file mode 100644
index 0000000000..39e944d61e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-locked.png
new file mode 100644
index 0000000000..c15328d21c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-open.png
new file mode 100644
index 0000000000..a801665fd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder.png
new file mode 100644
index 0000000000..8b020e5fd1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/fonts.png
new file mode 100644
index 0000000000..9cf824d17f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/forward.png
new file mode 100644
index 0000000000..96ae3a5f63
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/graphics.png
new file mode 100644
index 0000000000..246ce9ee62
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/harddrive.png
new file mode 100644
index 0000000000..74fe0c7c3b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/hardware-info.png
new file mode 100644
index 0000000000..312a4ea1b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help-center.png
new file mode 100644
index 0000000000..37cdb2777e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help.png
new file mode 100644
index 0000000000..8aef08eec3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/history.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/history.png
new file mode 100644
index 0000000000..d7b86ef2a5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/history.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/home.png
new file mode 100644
index 0000000000..74c6933b44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/info.png
new file mode 100644
index 0000000000..c337112a81
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/joystick.png
new file mode 100644
index 0000000000..ab81e1bcc5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/keyboard-layout.png
new file mode 100644
index 0000000000..f54761f016
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/locale.png
new file mode 100644
index 0000000000..bee7d4064a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-delete.png
new file mode 100644
index 0000000000..035a9f062c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-find.png
new file mode 100644
index 0000000000..76af932330
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-forward.png
new file mode 100644
index 0000000000..5086ef86ab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-get.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-get.png
new file mode 100644
index 0000000000..4bbcd5a87d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-get.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-new.png
new file mode 100644
index 0000000000..969fec5b57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply-all.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply-all.png
new file mode 100644
index 0000000000..6ec45ee840
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply-all.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply.png
new file mode 100644
index 0000000000..17e89e4904
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-reply.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-send.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-send.png
new file mode 100644
index 0000000000..4b72194e0c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail-send.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail.png
new file mode 100644
index 0000000000..512378508b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mail.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-archive.png
new file mode 100644
index 0000000000..d7b3186a3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-binary.png
new file mode 100644
index 0000000000..984d511a38
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-calendar.png
new file mode 100644
index 0000000000..a8a0666331
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-card.png
new file mode 100644
index 0000000000..1b04136142
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-document.png
new file mode 100644
index 0000000000..1a81ef642c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-html.png
new file mode 100644
index 0000000000..8766e83346
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-image.png
new file mode 100644
index 0000000000..26f4688e5b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-manual.png
new file mode 100644
index 0000000000..4a58e72dd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-multimedia.png
new file mode 100644
index 0000000000..fcba4084b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-pdf.png
new file mode 100644
index 0000000000..30cf778984
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-quicktime.png
new file mode 100755
index 0000000000..d98c59dd77
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-rpm.png
new file mode 100644
index 0000000000..0ff3864150
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-script.png
new file mode 100644
index 0000000000..1eefecc69d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-shellscript.png
new file mode 100644
index 0000000000..552eeae458
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-sourcecode.png
new file mode 100644
index 0000000000..bb18aa87f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-spreadsheet.png
new file mode 100644
index 0000000000..adbbc4cd0d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-text.png
new file mode 100644
index 0000000000..70f412a5a5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-video.png
new file mode 100644
index 0000000000..37c4b600bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/misc.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/misc.png
new file mode 100644
index 0000000000..625285f0bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/misc.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/modem.png
new file mode 100644
index 0000000000..413a766ce3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mouse.png
new file mode 100644
index 0000000000..b0585380fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/multimedia.png
new file mode 100644
index 0000000000..6c6d9e0bb6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mycomputer.png
new file mode 100644
index 0000000000..c52d85af68
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/netscape.png
new file mode 100644
index 0000000000..00bf497dfb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/network.png
new file mode 100644
index 0000000000..88d8e31ea6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/ok.png
new file mode 100644
index 0000000000..2166fdffdf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/paint.png
new file mode 100644
index 0000000000..f20282bf6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/partitions.png
new file mode 100644
index 0000000000..733f2f3761
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/password.png
new file mode 100644
index 0000000000..96fb4cd564
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/pda.png
new file mode 100644
index 0000000000..cdf73e735b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/printer.png
new file mode 100644
index 0000000000..0e02d8d5d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/queue.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/queue.png
new file mode 100644
index 0000000000..9fad202248
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/queue.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/redo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/redo.png
new file mode 100644
index 0000000000..7067f582e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/redo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/reload.png
new file mode 100644
index 0000000000..0d1ae45626
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/run.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/run.png
new file mode 100644
index 0000000000..d108327435
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/run.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/scanner.png
new file mode 100644
index 0000000000..af1506ef57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/settings.png
new file mode 100644
index 0000000000..d201e91648
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/signature.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/signature.png
new file mode 100644
index 0000000000..a45ece2830
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/signature.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/spellcheck.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/spellcheck.png
new file mode 100644
index 0000000000..45fe909a89
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/spellcheck.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/stop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/stop.png
new file mode 100644
index 0000000000..da1e944263
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/stop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tablet.png
new file mode 100644
index 0000000000..176692e680
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/terminal.png
new file mode 100644
index 0000000000..1c4ca34b71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/toys.png
new file mode 100644
index 0000000000..55bd0cb95a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-empty.png
new file mode 100644
index 0000000000..2b4884875a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-full.png
new file mode 100644
index 0000000000..56d90a4c00
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tv.png
new file mode 100644
index 0000000000..fd50b0720b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/undo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/undo.png
new file mode 100644
index 0000000000..a1021b68bd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/undo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/up.png
new file mode 100644
index 0000000000..7475f6aafc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/user.png
new file mode 100644
index 0000000000..c5c8dc6d64
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/utilities.png
new file mode 100644
index 0000000000..08d53669bc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-bottom.png
new file mode 100644
index 0000000000..fd2684699e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-choose.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-choose.png
new file mode 100644
index 0000000000..317ee8a89c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-choose.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-detailed.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-detailed.png
new file mode 100644
index 0000000000..eea5649af9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-detailed.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-icon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-icon.png
new file mode 100644
index 0000000000..aa6dea50de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-icon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-left-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-left-right.png
new file mode 100644
index 0000000000..98e05107eb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-left-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-multicolumn.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-multicolumn.png
new file mode 100644
index 0000000000..b965f8d389
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-multicolumn.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-remove.png
new file mode 100644
index 0000000000..0e50c69bb3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-right.png
new file mode 100644
index 0000000000..f49e4a5503
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-sidetree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-sidetree.png
new file mode 100644
index 0000000000..0aceb0f258
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-sidetree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-text.png
new file mode 100644
index 0000000000..c2710639fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-top-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-top-bottom.png
new file mode 100644
index 0000000000..8571e59f44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-top-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-tree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-tree.png
new file mode 100644
index 0000000000..888a879f71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/view-tree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-fit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-fit.png
new file mode 100644
index 0000000000..7d8ff858b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-fit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-minus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-minus.png
new file mode 100644
index 0000000000..911a5c09b9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-minus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-original.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-original.png
new file mode 100644
index 0000000000..ff1292fc71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-original.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-plus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-plus.png
new file mode 100644
index 0000000000..22c31acb17
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag-plus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag.png
new file mode 100644
index 0000000000..e845f6d5ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/viewmag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/wizard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/wizard.png
new file mode 100644
index 0000000000..ad4436d1ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/22/wizard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/accessibility.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/accessibility.png
new file mode 100644
index 0000000000..dfad3c507e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/accessibility.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/adobe-reader.png
new file mode 100644
index 0000000000..43670f7d1d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/alarm.png
new file mode 100644
index 0000000000..a4fca9cad6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/applications.png
new file mode 100644
index 0000000000..105d21e61c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/attach.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/attach.png
new file mode 100644
index 0000000000..3bc6ae9189
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/attach.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/back.png
new file mode 100644
index 0000000000..2568b59b32
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/background.png
new file mode 100644
index 0000000000..e292b875d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bell.png
new file mode 100644
index 0000000000..32b6d89521
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bitmapgraphics.png
new file mode 100644
index 0000000000..455018c086
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark-add.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark-add.png
new file mode 100644
index 0000000000..18f0a81c88
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark-add.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark.png
new file mode 100644
index 0000000000..6cccfd986b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bookmark.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bug.png
new file mode 100644
index 0000000000..8d460600e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-cancel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-cancel.png
new file mode 100644
index 0000000000..2d5e260a5f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-cancel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-ok.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-ok.png
new file mode 100644
index 0000000000..592ce6f4a5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/button-ok.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cache.png
new file mode 100644
index 0000000000..ff4298bdf1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/calculator.png
new file mode 100644
index 0000000000..00b5426742
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/camera.png
new file mode 100644
index 0000000000..b41b44c3a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cdrom.png
new file mode 100644
index 0000000000..209af79d15
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/char-device.png
new file mode 100644
index 0000000000..dfc16aa223
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/chart.png
new file mode 100644
index 0000000000..7460cabfa1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clipboard.png
new file mode 100644
index 0000000000..def2ea1064
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clock.png
new file mode 100644
index 0000000000..1836149e80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/colors.png
new file mode 100644
index 0000000000..212adb0b41
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/configure.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/configure.png
new file mode 100644
index 0000000000..feebf2bdbe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/configure.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-creating.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-creating.png
new file mode 100644
index 0000000000..f625d291e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-creating.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-established.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-established.png
new file mode 100644
index 0000000000..6b77a056b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-established.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-no.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-no.png
new file mode 100644
index 0000000000..25a59f3167
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/connect-no.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/contents.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/contents.png
new file mode 100644
index 0000000000..d3ba528bd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/contents.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/control-center.png
new file mode 100644
index 0000000000..6f3b1f49d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cookie.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cookie.png
new file mode 100644
index 0000000000..db4bd615ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/cookie.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/core.png
new file mode 100644
index 0000000000..e112fb7a13
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/date.png
new file mode 100644
index 0000000000..41fa2acf77
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/decrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/decrypted.png
new file mode 100644
index 0000000000..2b49969a53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/decrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/desktop.png
new file mode 100644
index 0000000000..9b993a5ebb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/devices.png
new file mode 100644
index 0000000000..b29ec1e32d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/dictionary.png
new file mode 100644
index 0000000000..9aa7d66827
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/display.png
new file mode 100644
index 0000000000..30f1dfa03d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/down.png
new file mode 100644
index 0000000000..5cbe6bb695
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-copy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-copy.png
new file mode 100644
index 0000000000..18627b7480
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-copy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-cut.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-cut.png
new file mode 100644
index 0000000000..ad6fbb15e4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-cut.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-delete.png
new file mode 100644
index 0000000000..ab71fae93f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-paste.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-paste.png
new file mode 100644
index 0000000000..9e224a9ec4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit-paste.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit.png
new file mode 100644
index 0000000000..f3ec32ed82
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/edit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/editor.png
new file mode 100644
index 0000000000..89ef01bad4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/email.png
new file mode 100644
index 0000000000..637920745e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/encrypted.png
new file mode 100644
index 0000000000..36adbc8e6c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/energy.png
new file mode 100644
index 0000000000..a530b1ba7c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/error.png
new file mode 100644
index 0000000000..538cb9039f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exec.png
new file mode 100644
index 0000000000..1780eafc6c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exit.png
new file mode 100644
index 0000000000..08e97b4057
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/exit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-manager.png
new file mode 100644
index 0000000000..e551d985e1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-new.png
new file mode 100644
index 0000000000..a71c1a254e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-open.png
new file mode 100644
index 0000000000..77c992f5aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-print.png
new file mode 100644
index 0000000000..a510ec6558
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save-as.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save-as.png
new file mode 100644
index 0000000000..55ca1ec25e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save-as.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save.png
new file mode 100644
index 0000000000..ae13a151d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/file-save.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/find.png
new file mode 100644
index 0000000000..f1ad60c860
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/floppy.png
new file mode 100644
index 0000000000..51c0b00b48
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/flowchart.png
new file mode 100644
index 0000000000..af286d9bfb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-favorite.png
new file mode 100644
index 0000000000..e83d7d2aa6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-important.png
new file mode 100644
index 0000000000..3f104626a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-locked.png
new file mode 100644
index 0000000000..e540a90261
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-open.png
new file mode 100644
index 0000000000..376aa6ec18
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder.png
new file mode 100644
index 0000000000..bd433f4bfd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/fonts.png
new file mode 100644
index 0000000000..fbe67096b2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/forward.png
new file mode 100644
index 0000000000..3453bde583
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/games.png
new file mode 100644
index 0000000000..538e3eca55
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/graphics.png
new file mode 100644
index 0000000000..cf1c60dcd5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/harddrive.png
new file mode 100644
index 0000000000..bc399f25f8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/hardware-info.png
new file mode 100644
index 0000000000..41d50b7a96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help-center.png
new file mode 100644
index 0000000000..c59d5a0035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help.png
new file mode 100644
index 0000000000..d56ba2c244
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/help.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/home.png
new file mode 100644
index 0000000000..86ea229cfd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/icons.png
new file mode 100644
index 0000000000..86cd87bde4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/iconthemes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/iconthemes.png
new file mode 100644
index 0000000000..6345beab59
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/iconthemes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/important.png
new file mode 100644
index 0000000000..284e5e32b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/info.png
new file mode 100644
index 0000000000..a4e834f867
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/joystick.png
new file mode 100644
index 0000000000..1fee2572b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/keyboard-layout.png
new file mode 100644
index 0000000000..501fe2eb30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/locale.png
new file mode 100644
index 0000000000..91817460fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/look-and-feel.png
new file mode 100644
index 0000000000..377440b075
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/magnifier.png
new file mode 100644
index 0000000000..87a73a114b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-delete.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-delete.png
new file mode 100644
index 0000000000..7014f9f803
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-delete.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-find.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-find.png
new file mode 100644
index 0000000000..81d608855e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-find.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-get.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-get.png
new file mode 100644
index 0000000000..fa88bebc54
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-get.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-new.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-new.png
new file mode 100644
index 0000000000..825459fdbb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-new.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-send.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-send.png
new file mode 100644
index 0000000000..241544b1dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail-send.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail.png
new file mode 100644
index 0000000000..356a2e7b6a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mail.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/memory.png
new file mode 100644
index 0000000000..e0a295d091
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-archive.png
new file mode 100644
index 0000000000..3f83ddfd43
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-binary.png
new file mode 100644
index 0000000000..d4174998db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-calendar.png
new file mode 100644
index 0000000000..67498ea761
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-card.png
new file mode 100644
index 0000000000..bdb23ae0e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-document.png
new file mode 100644
index 0000000000..ac2ff05c76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-html.png
new file mode 100644
index 0000000000..ba0ee38d71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-image.png
new file mode 100644
index 0000000000..b0f0c90edd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-manual.png
new file mode 100644
index 0000000000..13a3d1143e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-multimedia.png
new file mode 100644
index 0000000000..80f005bac0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-pdf.png
new file mode 100644
index 0000000000..5c1e8e25c6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-quicktime.png
new file mode 100755
index 0000000000..3bea4d7173
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-rpm.png
new file mode 100644
index 0000000000..bf95b1a782
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-script.png
new file mode 100644
index 0000000000..e151a683d1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-shellscript.png
new file mode 100644
index 0000000000..eea60d04cc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-sourcecode.png
new file mode 100644
index 0000000000..fac883e716
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-spreadsheet.png
new file mode 100644
index 0000000000..366c67c01d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-text.png
new file mode 100644
index 0000000000..788d0e7cd7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-video.png
new file mode 100644
index 0000000000..68efea6a85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/misc.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/misc.png
new file mode 100644
index 0000000000..135fd11b9f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/misc.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mixer.png
new file mode 100644
index 0000000000..2c8b5be9a0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/modem.png
new file mode 100644
index 0000000000..ac870be7e5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mouse.png
new file mode 100644
index 0000000000..91ae19a487
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/movieplayer.png
new file mode 100644
index 0000000000..68726f5e56
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/multimedia.png
new file mode 100644
index 0000000000..b34aa6673a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mycomputer.png
new file mode 100644
index 0000000000..de11b2be1e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/netscape.png
new file mode 100644
index 0000000000..5b6775b0aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/network.png
new file mode 100644
index 0000000000..e164a9f332
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notes.png
new file mode 100644
index 0000000000..0a9d209088
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notify.png
new file mode 100644
index 0000000000..bfbc795861
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/opera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/opera.png
new file mode 100644
index 0000000000..c3a0ee46c1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/opera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/organizer.png
new file mode 100644
index 0000000000..caeff826a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/paint.png
new file mode 100644
index 0000000000..9ec1a85d8d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/partitions.png
new file mode 100644
index 0000000000..856484ff61
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/password.png
new file mode 100644
index 0000000000..b74e831fe3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pda.png
new file mode 100644
index 0000000000..1458d9bfa4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pipe.png
new file mode 100644
index 0000000000..5df1cc4fa7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/presentation.png
new file mode 100644
index 0000000000..54c19d130f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/printer.png
new file mode 100644
index 0000000000..16b7f8f589
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/queue.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/queue.png
new file mode 100644
index 0000000000..47e59f2ef5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/queue.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/redo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/redo.png
new file mode 100644
index 0000000000..36bf9b6118
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/redo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/reload.png
new file mode 100644
index 0000000000..4b0e37a11c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/run.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/run.png
new file mode 100644
index 0000000000..db5111a9af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/run.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/scanner.png
new file mode 100644
index 0000000000..974635d943
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/services.png
new file mode 100644
index 0000000000..135fd11b9f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/settings.png
new file mode 100644
index 0000000000..f37127ebc1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/stop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/stop.png
new file mode 100644
index 0000000000..b953dd7e3e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/stop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/style.png
new file mode 100644
index 0000000000..0788864116
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/system.png
new file mode 100644
index 0000000000..6398704a9f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tablet.png
new file mode 100644
index 0000000000..fa871f5403
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/terminal.png
new file mode 100644
index 0000000000..290f72310a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/themes.png
new file mode 100644
index 0000000000..ff1e6f2cc1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/toys.png
new file mode 100644
index 0000000000..c8d129d741
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-empty.png
new file mode 100644
index 0000000000..df07ab4bb9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-full.png
new file mode 100644
index 0000000000..f19899dd80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tv.png
new file mode 100644
index 0000000000..a2d1c28a69
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/undo.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/undo.png
new file mode 100644
index 0000000000..28915c0d7f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/undo.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/up.png
new file mode 100644
index 0000000000..899ad4fc9e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/user.png
new file mode 100644
index 0000000000..b368c3d82f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/utilities.png
new file mode 100644
index 0000000000..885d476620
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-bottom.png
new file mode 100644
index 0000000000..f2aa1cb53c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-choose.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-choose.png
new file mode 100644
index 0000000000..8b0e144e3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-choose.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-detailed.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-detailed.png
new file mode 100644
index 0000000000..8c315cf16d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-detailed.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-icon.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-icon.png
new file mode 100644
index 0000000000..2b5d6555f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-icon.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-left-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-left-right.png
new file mode 100644
index 0000000000..d2a15ba9ab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-left-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-multicolumn.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-multicolumn.png
new file mode 100644
index 0000000000..5230fbab6b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-multicolumn.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-remove.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-remove.png
new file mode 100644
index 0000000000..9c2bedcdab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-remove.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-right.png
new file mode 100644
index 0000000000..5c0179d910
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-sidetree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-sidetree.png
new file mode 100644
index 0000000000..f682b94cd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-sidetree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-text.png
new file mode 100644
index 0000000000..ed6d2e056d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-top-bottom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-top-bottom.png
new file mode 100644
index 0000000000..223c7b4923
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-top-bottom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-tree.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-tree.png
new file mode 100644
index 0000000000..b896d173aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/view-tree.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-fit.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-fit.png
new file mode 100644
index 0000000000..b4f5514ca7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-fit.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-minus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-minus.png
new file mode 100644
index 0000000000..0dc9662f9c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-minus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-original.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-original.png
new file mode 100644
index 0000000000..f0ca554f88
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-original.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-plus.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-plus.png
new file mode 100644
index 0000000000..cfb5a19d45
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag-plus.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag.png
new file mode 100644
index 0000000000..de5ef3a1b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/viewmag.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/wordprocessor.png
new file mode 100644
index 0000000000..46dd911bcf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/32/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/accessibility.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/accessibility.png
new file mode 100644
index 0000000000..39745787fb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/accessibility.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/adobe-reader.png
new file mode 100644
index 0000000000..1ed91651af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/alarm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/alarm.png
new file mode 100644
index 0000000000..3b77e470bc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/alarm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/applications.png
new file mode 100644
index 0000000000..43f6a5890c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/back.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/back.png
new file mode 100644
index 0000000000..753b14f468
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/back.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/background.png
new file mode 100644
index 0000000000..50a848f3bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bell.png
new file mode 100644
index 0000000000..be0c6e69f0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bitmapgraphics.png
new file mode 100644
index 0000000000..1c16253c05
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bug.png
new file mode 100644
index 0000000000..51c48a2340
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cache.png
new file mode 100644
index 0000000000..321e8241b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/calculator.png
new file mode 100644
index 0000000000..887526343b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/camera.png
new file mode 100644
index 0000000000..68046fae4e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cdrom.png
new file mode 100644
index 0000000000..1b0a503393
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/char-device.png
new file mode 100644
index 0000000000..63478612d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/chart.png
new file mode 100644
index 0000000000..384e9bd113
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clipboard.png
new file mode 100644
index 0000000000..ea9c78ed79
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clock.png
new file mode 100644
index 0000000000..17e760a3fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/colors.png
new file mode 100644
index 0000000000..641c9d8d30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/control-center.png
new file mode 100644
index 0000000000..a359543e30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/core.png
new file mode 100644
index 0000000000..b4543b42c6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/date.png
new file mode 100644
index 0000000000..d3b8f47621
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/desktop.png
new file mode 100644
index 0000000000..9a0cf87f05
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/devices.png
new file mode 100644
index 0000000000..aaae19b332
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/dictionary.png
new file mode 100644
index 0000000000..f96a2aa014
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/display.png
new file mode 100644
index 0000000000..6b9ab9e130
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/down.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/down.png
new file mode 100644
index 0000000000..5648bf19fa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/down.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/editor.png
new file mode 100644
index 0000000000..36459cf431
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/email.png
new file mode 100644
index 0000000000..19c7cfd2f5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/encrypted.png
new file mode 100644
index 0000000000..4d42a7e3de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/energy.png
new file mode 100644
index 0000000000..94ce36b11f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/error.png
new file mode 100644
index 0000000000..e1841e408c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/exec.png
new file mode 100644
index 0000000000..8467ec1ac2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-manager.png
new file mode 100644
index 0000000000..ebdeaa386e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-print.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-print.png
new file mode 100644
index 0000000000..05e1598703
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/file-print.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/floppy.png
new file mode 100644
index 0000000000..69d70f293d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/flowchart.png
new file mode 100644
index 0000000000..21e00d134f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-favorite.png
new file mode 100644
index 0000000000..9196b88bee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-important.png
new file mode 100644
index 0000000000..d91b77c39a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-locked.png
new file mode 100644
index 0000000000..f16584669f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-open.png
new file mode 100644
index 0000000000..f7314b3494
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder.png
new file mode 100644
index 0000000000..31c8a7ede1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/fonts.png
new file mode 100644
index 0000000000..41ebf4dbef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/forward.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/forward.png
new file mode 100644
index 0000000000..88eb4cfc6e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/forward.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/games.png
new file mode 100644
index 0000000000..f3a73f8a0d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/graphics.png
new file mode 100644
index 0000000000..624d07f68e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/harddrive.png
new file mode 100644
index 0000000000..046a53015b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/hardware-info.png
new file mode 100644
index 0000000000..2c7b76033e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/help-center.png
new file mode 100644
index 0000000000..614b0f9131
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/home.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/home.png
new file mode 100644
index 0000000000..d2b3dfc614
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/home.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/icons.png
new file mode 100644
index 0000000000..5aaece3e8c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/iconthemes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/iconthemes.png
new file mode 100644
index 0000000000..ba4744f980
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/iconthemes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/important.png
new file mode 100644
index 0000000000..a763d82bf9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/info.png
new file mode 100644
index 0000000000..d2051a8901
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/joystick.png
new file mode 100644
index 0000000000..d743431d43
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/keyboard-layout.png
new file mode 100644
index 0000000000..c17c9f16d9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/locale.png
new file mode 100644
index 0000000000..a784df52fc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/look-and-feel.png
new file mode 100644
index 0000000000..69f5db940e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/magnifier.png
new file mode 100644
index 0000000000..538d656bbf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/memory.png
new file mode 100644
index 0000000000..ecd8072697
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-archive.png
new file mode 100644
index 0000000000..b81636d995
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-binary.png
new file mode 100644
index 0000000000..a898930da2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-calendar.png
new file mode 100644
index 0000000000..f34f15a8c4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-card.png
new file mode 100644
index 0000000000..51926b54b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-document.png
new file mode 100644
index 0000000000..b545d96758
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-html.png
new file mode 100644
index 0000000000..017f9d3622
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-image.png
new file mode 100644
index 0000000000..3d0949420d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-manual.png
new file mode 100644
index 0000000000..290e29328e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-multimedia.png
new file mode 100644
index 0000000000..6a9d42296e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-pdf.png
new file mode 100644
index 0000000000..4e5e18ee71
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-quicktime.png
new file mode 100755
index 0000000000..004b077fca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-rpm.png
new file mode 100644
index 0000000000..4e4c562060
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-script.png
new file mode 100644
index 0000000000..00cc8a7b25
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-shellscript.png
new file mode 100644
index 0000000000..85f8a89ff0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-sourcecode.png
new file mode 100644
index 0000000000..b14e8f241c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-spreadsheet.png
new file mode 100644
index 0000000000..05f4aff691
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-text.png
new file mode 100644
index 0000000000..884c362c44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-video.png
new file mode 100644
index 0000000000..29a1a8c3fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mixer.png
new file mode 100644
index 0000000000..fb5ca5292d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/modem.png
new file mode 100644
index 0000000000..af8c783091
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mouse.png
new file mode 100644
index 0000000000..ba460dd005
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/movieplayer.png
new file mode 100644
index 0000000000..59a8b19404
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/multimedia.png
new file mode 100644
index 0000000000..5a9c231755
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mycomputer.png
new file mode 100644
index 0000000000..8f07fa9570
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/netscape.png
new file mode 100644
index 0000000000..4ff1a20107
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/network.png
new file mode 100644
index 0000000000..b5f28c4777
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notes.png
new file mode 100644
index 0000000000..d0d7cba913
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notify.png
new file mode 100644
index 0000000000..40205ad933
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/opera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/opera.png
new file mode 100644
index 0000000000..6fb9136b21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/opera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/organizer.png
new file mode 100644
index 0000000000..e11737ffd2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/paint.png
new file mode 100644
index 0000000000..6e9fdc73c0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/partitions.png
new file mode 100644
index 0000000000..c29409aee1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/password.png
new file mode 100644
index 0000000000..98d7607e28
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pda.png
new file mode 100644
index 0000000000..7a4a13fda2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pipe.png
new file mode 100644
index 0000000000..d479c1b385
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/presentation.png
new file mode 100644
index 0000000000..ebc2349897
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/printer.png
new file mode 100644
index 0000000000..1e160cd7ff
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/reload.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/reload.png
new file mode 100644
index 0000000000..248f614d29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/reload.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/scanner.png
new file mode 100644
index 0000000000..71aed183aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/services.png
new file mode 100644
index 0000000000..086c850f1f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/settings.png
new file mode 100644
index 0000000000..34dc628b47
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/style.png
new file mode 100644
index 0000000000..c9c4381358
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/system.png
new file mode 100644
index 0000000000..9962b4b57a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tablet.png
new file mode 100644
index 0000000000..8de5ba64a8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/terminal.png
new file mode 100644
index 0000000000..c7bdedf877
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/themes.png
new file mode 100644
index 0000000000..22040c3e24
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/toys.png
new file mode 100644
index 0000000000..123d8fbb8f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-empty.png
new file mode 100644
index 0000000000..37a8aa2097
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-full.png
new file mode 100644
index 0000000000..37b1486fb0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tv.png
new file mode 100644
index 0000000000..9c2740ac07
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/up.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/up.png
new file mode 100644
index 0000000000..6af24949b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/up.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/user.png
new file mode 100644
index 0000000000..fe74c0056a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/utilities.png
new file mode 100644
index 0000000000..baac6ad0ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/wordprocessor.png
new file mode 100644
index 0000000000..95cd69c906
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/48/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/adobe-reader.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/adobe-reader.png
new file mode 100644
index 0000000000..63d417535c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/adobe-reader.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/applications.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/applications.png
new file mode 100644
index 0000000000..d4c1c7fd72
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/applications.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/background.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/background.png
new file mode 100644
index 0000000000..eecc4f45af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/background.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bell.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bell.png
new file mode 100644
index 0000000000..d8d7ec712a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bell.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bitmapgraphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bitmapgraphics.png
new file mode 100644
index 0000000000..68321ff45f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bitmapgraphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bug.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bug.png
new file mode 100644
index 0000000000..b5003f651c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/bug.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cache.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cache.png
new file mode 100644
index 0000000000..c42bf4a3ce
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cache.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/calculator.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/calculator.png
new file mode 100644
index 0000000000..c5ee12eb77
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/calculator.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/camera.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/camera.png
new file mode 100644
index 0000000000..9fa861bd36
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/camera.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cdrom.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cdrom.png
new file mode 100644
index 0000000000..95af80455c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/cdrom.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/char-device.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/char-device.png
new file mode 100644
index 0000000000..078f4cd954
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/char-device.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/chart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/chart.png
new file mode 100644
index 0000000000..b579eca927
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/chart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clipboard.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clipboard.png
new file mode 100644
index 0000000000..300827ac49
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clipboard.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clock.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clock.png
new file mode 100644
index 0000000000..dda46a5496
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/clock.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/colors.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/colors.png
new file mode 100644
index 0000000000..dfe8f950d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/colors.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/control-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/control-center.png
new file mode 100644
index 0000000000..0ecbfe51e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/control-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/core.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/core.png
new file mode 100644
index 0000000000..410dd3a364
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/core.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/date.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/date.png
new file mode 100644
index 0000000000..4746c98012
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/date.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/desktop.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/desktop.png
new file mode 100644
index 0000000000..fd2b4a781f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/desktop.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/devices.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/devices.png
new file mode 100644
index 0000000000..b303411c8d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/devices.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/dictionary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/dictionary.png
new file mode 100644
index 0000000000..4d2ecd211e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/dictionary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/display.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/display.png
new file mode 100644
index 0000000000..5e93201be6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/display.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/editor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/editor.png
new file mode 100644
index 0000000000..1e54b3734e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/editor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/email.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/email.png
new file mode 100644
index 0000000000..442141d106
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/email.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/encrypted.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/encrypted.png
new file mode 100644
index 0000000000..2e06c176c2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/encrypted.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/energy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/energy.png
new file mode 100644
index 0000000000..9a829877e3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/energy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/error.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/error.png
new file mode 100644
index 0000000000..e597c4658b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/error.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/exec.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/exec.png
new file mode 100644
index 0000000000..a1b6850041
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/exec.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/file-manager.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/file-manager.png
new file mode 100644
index 0000000000..b569517089
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/file-manager.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/floppy.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/floppy.png
new file mode 100644
index 0000000000..fac5eeb0a6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/floppy.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/flowchart.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/flowchart.png
new file mode 100644
index 0000000000..a29a779727
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/flowchart.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-favorite.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-favorite.png
new file mode 100644
index 0000000000..f57ed10df4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-favorite.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-important.png
new file mode 100644
index 0000000000..1c97defd59
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-locked.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-locked.png
new file mode 100644
index 0000000000..9e9bbd9776
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-locked.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-open.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-open.png
new file mode 100644
index 0000000000..f5bddaf374
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder-open.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder.png
new file mode 100644
index 0000000000..5ef5754e26
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/folder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/fonts.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/fonts.png
new file mode 100644
index 0000000000..779f19a9ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/fonts.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/games.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/games.png
new file mode 100644
index 0000000000..a040f39eea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/games.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/graphics.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/graphics.png
new file mode 100644
index 0000000000..417d2ff4b5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/graphics.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/harddrive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/harddrive.png
new file mode 100644
index 0000000000..b14dbbcf46
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/harddrive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/hardware-info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/hardware-info.png
new file mode 100644
index 0000000000..bc015a7ece
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/hardware-info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/help-center.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/help-center.png
new file mode 100644
index 0000000000..ebb8462ced
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/help-center.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/icons.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/icons.png
new file mode 100644
index 0000000000..a591696dad
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/icons.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/important.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/important.png
new file mode 100644
index 0000000000..db52b85a5f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/important.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/info.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/info.png
new file mode 100644
index 0000000000..f8c50e169b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/info.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/joystick.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/joystick.png
new file mode 100644
index 0000000000..b9ceaf9398
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/joystick.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/keyboard-layout.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/keyboard-layout.png
new file mode 100644
index 0000000000..911d281b47
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/keyboard-layout.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/locale.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/locale.png
new file mode 100644
index 0000000000..ed5d411645
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/look-and-feel.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/look-and-feel.png
new file mode 100644
index 0000000000..dc65d514e1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/look-and-feel.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/magnifier.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/magnifier.png
new file mode 100644
index 0000000000..ac682e1d3c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/magnifier.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/memory.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/memory.png
new file mode 100644
index 0000000000..8b9e8fb7d9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/memory.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-archive.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-archive.png
new file mode 100644
index 0000000000..35c93d2f2a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-archive.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-binary.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-binary.png
new file mode 100644
index 0000000000..005d8c0ee6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-binary.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-calendar.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-calendar.png
new file mode 100644
index 0000000000..3e74ca5ee8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-calendar.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-card.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-card.png
new file mode 100644
index 0000000000..c3f8a68d05
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-card.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-document.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-document.png
new file mode 100644
index 0000000000..46b2871277
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-document.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-html.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-html.png
new file mode 100644
index 0000000000..2d408f4236
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-html.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-image.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-image.png
new file mode 100644
index 0000000000..60595590a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-image.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-manual.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-manual.png
new file mode 100644
index 0000000000..d4fb46da3c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-manual.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-multimedia.png
new file mode 100644
index 0000000000..aef284b0e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-pdf.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-pdf.png
new file mode 100644
index 0000000000..4c906339ab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-pdf.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-quicktime.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-quicktime.png
new file mode 100755
index 0000000000..f3e6647f7e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-quicktime.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-rpm.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-rpm.png
new file mode 100644
index 0000000000..eb6ae55fa4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-rpm.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-script.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-script.png
new file mode 100644
index 0000000000..9e662f989d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-script.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-shellscript.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-shellscript.png
new file mode 100644
index 0000000000..8afcf55fd6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-shellscript.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-sourcecode.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-sourcecode.png
new file mode 100644
index 0000000000..27a1e41621
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-sourcecode.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-spreadsheet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-spreadsheet.png
new file mode 100644
index 0000000000..e1d4168351
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-spreadsheet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-text.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-text.png
new file mode 100644
index 0000000000..3584b3f919
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-text.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-video.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-video.png
new file mode 100644
index 0000000000..bb54b53136
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mime-video.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mixer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mixer.png
new file mode 100644
index 0000000000..67cc062f9e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mixer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/modem.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/modem.png
new file mode 100644
index 0000000000..f890c689d0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/modem.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mouse.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mouse.png
new file mode 100644
index 0000000000..75e3d8eac5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mouse.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/movieplayer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/movieplayer.png
new file mode 100644
index 0000000000..a7d9457e53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/movieplayer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/multimedia.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/multimedia.png
new file mode 100644
index 0000000000..7e7afff52e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/multimedia.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mycomputer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mycomputer.png
new file mode 100644
index 0000000000..41a501e940
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/mycomputer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/netscape.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/netscape.png
new file mode 100644
index 0000000000..f2e34e902b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/netscape.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/network.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/network.png
new file mode 100644
index 0000000000..2d0fdf97d0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/network.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notes.png
new file mode 100644
index 0000000000..926ad8a558
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notify.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notify.png
new file mode 100644
index 0000000000..3f0d99d55c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/notify.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/organizer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/organizer.png
new file mode 100644
index 0000000000..a460213029
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/organizer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/paint.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/paint.png
new file mode 100644
index 0000000000..a08cec3396
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/paint.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/partitions.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/partitions.png
new file mode 100644
index 0000000000..9b7b60b48c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/partitions.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/password.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/password.png
new file mode 100644
index 0000000000..bf8d7e42a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/password.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pda.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pda.png
new file mode 100644
index 0000000000..205718b989
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pda.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pipe.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pipe.png
new file mode 100644
index 0000000000..85e7142a7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/pipe.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/presentation.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/presentation.png
new file mode 100644
index 0000000000..31b4c6b2b7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/presentation.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/printer.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/printer.png
new file mode 100644
index 0000000000..0291e3ffd7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/printer.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/scanner.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/scanner.png
new file mode 100644
index 0000000000..372d90e645
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/scanner.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/services.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/services.png
new file mode 100644
index 0000000000..de50a7465f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/services.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/settings.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/settings.png
new file mode 100644
index 0000000000..80e4689b1e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/settings.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/style.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/style.png
new file mode 100644
index 0000000000..2d5a61df4b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/style.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/system.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/system.png
new file mode 100644
index 0000000000..ea8e84f980
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/system.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tablet.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tablet.png
new file mode 100644
index 0000000000..1ba6fef47b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tablet.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/terminal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/terminal.png
new file mode 100644
index 0000000000..f6d04d6dab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/terminal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/themes.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/themes.png
new file mode 100644
index 0000000000..54a6f19713
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/themes.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/toys.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/toys.png
new file mode 100644
index 0000000000..6ddb9cb522
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/toys.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-empty.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-empty.png
new file mode 100644
index 0000000000..47b6517fe9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-empty.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-full.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-full.png
new file mode 100644
index 0000000000..07d9337564
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/trashcan-full.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tv.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tv.png
new file mode 100644
index 0000000000..7c5f4ac1fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/tv.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/user.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/user.png
new file mode 100644
index 0000000000..3e443c99db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/user.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/utilities.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/utilities.png
new file mode 100644
index 0000000000..5b2af79b27
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/utilities.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/wordprocessor.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/wordprocessor.png
new file mode 100644
index 0000000000..20ee428014
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/icon/nuvola/64/wordprocessor.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/history/historyHelper.html b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/history/historyHelper.html
new file mode 100644
index 0000000000..55a94275ad
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/history/historyHelper.html
@@ -0,0 +1,4 @@
+<html>
+<head></head>
+<body onload="parent.qx.client.History.getInstance()._onHistoryLoad(window.location)"></body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/blank.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/blank.gif
new file mode 100644
index 0000000000..75b945d255
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/blank.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/dotted_white.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/dotted_white.gif
new file mode 100644
index 0000000000..467da46f25
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/static/image/dotted_white.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down.gif
new file mode 100644
index 0000000000..7a73f82726
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_small.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_small.gif
new file mode 100644
index 0000000000..ea60995e1b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_small.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_tiny.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_tiny.gif
new file mode 100644
index 0000000000..928f52805f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/down_tiny.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/first.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/first.png
new file mode 100644
index 0000000000..89fcc75e13
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/first.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/forward.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/forward.gif
new file mode 100644
index 0000000000..809e8fdb90
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/forward.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/last.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/last.png
new file mode 100644
index 0000000000..f7bcbedf99
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/last.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/left.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/left.png
new file mode 100644
index 0000000000..ace0782dfe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/left.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/minimize.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/minimize.gif
new file mode 100644
index 0000000000..c5b586e509
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/minimize.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/next.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/next.gif
new file mode 100644
index 0000000000..d9c246f1e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/next.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/previous.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/previous.gif
new file mode 100644
index 0000000000..7189c2306b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/previous.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/rewind.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/rewind.gif
new file mode 100644
index 0000000000..2ad09109e9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/rewind.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/right.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/right.png
new file mode 100644
index 0000000000..2c3e8ed109
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/right.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up.gif
new file mode 100644
index 0000000000..9452da0543
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_small.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_small.gif
new file mode 100644
index 0000000000..fc815ba417
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_small.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_tiny.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_tiny.gif
new file mode 100644
index 0000000000..34dc4e8e3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/arrows/up_tiny.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-field.jpg b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-field.jpg
new file mode 100644
index 0000000000..008984d1c7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-field.jpg
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-handle.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-handle.gif
new file mode 100644
index 0000000000..7cf80222af
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/brightness-handle.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-field.jpg b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-field.jpg
new file mode 100644
index 0000000000..36d2d799d9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-field.jpg
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-handle.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-handle.gif
new file mode 100644
index 0000000000..2fcaaece17
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/colorselector/huesaturation-handle.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/alias.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/alias.gif
new file mode 100644
index 0000000000..3b46c72422
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/alias.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/copy.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/copy.gif
new file mode 100644
index 0000000000..2a59a4aef8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/copy.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/move.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/move.gif
new file mode 100644
index 0000000000..adc9a6477d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/move.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/nodrop.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/nodrop.gif
new file mode 100644
index 0000000000..3a25866507
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/cursors/nodrop.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastMonth.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastMonth.png
new file mode 100644
index 0000000000..1eb3f4045e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastMonth.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastYear.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastYear.png
new file mode 100644
index 0000000000..147d427510
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/lastYear.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextMonth.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextMonth.png
new file mode 100644
index 0000000000..05e5647e49
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextMonth.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextYear.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextYear.png
new file mode 100644
index 0000000000..79a6278b2a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/datechooser/nextYear.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/checkbox.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/checkbox.gif
new file mode 100644
index 0000000000..767f285b57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/checkbox.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/menu-blank.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/menu-blank.gif
new file mode 100644
index 0000000000..40aeb6bba2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/menu-blank.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/radiobutton.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/radiobutton.gif
new file mode 100644
index 0000000000..b6cfa37a8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/menu/radiobutton.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-horizontal.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-horizontal.png
new file mode 100644
index 0000000000..da5ade6ebe
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-horizontal.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-vertical.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-vertical.png
new file mode 100644
index 0000000000..945ad4d214
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/splitpane/knob-vertical.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/ascending.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/ascending.png
new file mode 100644
index 0000000000..de27cce939
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/ascending.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-false.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-false.png
new file mode 100644
index 0000000000..dce9d389bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-false.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-true.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-true.png
new file mode 100644
index 0000000000..91817bbc2a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/boolean-true.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/descending.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/descending.png
new file mode 100644
index 0000000000..9f4f9559f1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/descending.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/selectColumnOrder.png b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/selectColumnOrder.png
new file mode 100644
index 0000000000..cb5f151e99
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/table/selectColumnOrder.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross.gif
new file mode 100644
index 0000000000..4d40453ab4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_minus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_minus.gif
new file mode 100644
index 0000000000..d69c2d6972
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_minus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_plus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_plus.gif
new file mode 100644
index 0000000000..2102d91978
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/cross_plus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end.gif
new file mode 100644
index 0000000000..7cd50aa02f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_minus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_minus.gif
new file mode 100644
index 0000000000..d53ce116ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_minus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_plus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_plus.gif
new file mode 100644
index 0000000000..301872a7ef
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/end_plus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/line.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/line.gif
new file mode 100644
index 0000000000..b3d88205e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/line.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/minus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/minus.gif
new file mode 100644
index 0000000000..b7da5b892d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/minus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_minus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_minus.gif
new file mode 100644
index 0000000000..eea784a54f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_minus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_plus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_plus.gif
new file mode 100644
index 0000000000..4fdec8c6ca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/only_plus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/plus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/plus.gif
new file mode 100644
index 0000000000..c006f8514f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/plus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_minus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_minus.gif
new file mode 100644
index 0000000000..f8e5ed7a69
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_minus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_plus.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_plus.gif
new file mode 100644
index 0000000000..722663c052
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/tree/start_plus.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/close.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/close.gif
new file mode 100644
index 0000000000..d6b727338d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/close.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/maximize.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/maximize.gif
new file mode 100644
index 0000000000..ae5e941d4f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/maximize.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/minimize.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/minimize.gif
new file mode 100644
index 0000000000..c5b586e509
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/minimize.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/restore.gif b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/restore.gif
new file mode 100644
index 0000000000..2910d37b78
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/resource/widget/windows/window/restore.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/find.sh b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/find.sh
new file mode 100755
index 0000000000..f838247229
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/find.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+cd `dirname $0`/..
+
+if [ "$1" = "" ]; then
+ exit 1
+fi
+
+find source/class/ -name "*.js" | xargs grep -n "$*"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/generator.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/generator.py
new file mode 100755
index 0000000000..ccce87bcb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/generator.py
@@ -0,0 +1,1057 @@
+#!/usr/bin/env python
+
+import sys, re, os, optparse
+
+# reconfigure path to import own modules from modules subfolder
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "modules"))
+
+import config, tokenizer, loader, api, tree, treegenerator, settings, resources, filetool, stringoptimizer, optparseext, variableoptimizer, obfuscator, compiler, migrator, textutil
+
+
+
+
+
+
+def getparser():
+ parser = optparse.OptionParser("usage: %prog [options]", option_class=optparseext.ExtendAction)
+
+
+ #################################################################################
+ # GENERAL
+ #################################################################################
+
+ # From/To File
+ parser.add_option("--from-file", dest="fromFile", metavar="FILENAME", help="Read options from FILENAME.")
+ parser.add_option("--export-to-file", dest="exportToFile", metavar="FILENAME", help="Store options to FILENAME.")
+
+ # Directories (Lists, Match using index)
+ parser.add_option("--script-input", action="extend", dest="scriptInput", metavar="DIRECTORY", type="string", default=[], help="Define a script input directory.")
+ parser.add_option("--script-encoding", action="extend", dest="scriptEncoding", metavar="ENCODING", type="string", default=[], help="Define the encoding for a script input directory.")
+ parser.add_option("--source-script-path", action="extend", dest="sourceScriptPath", metavar="PATH", type="string", default=[], help="Define a script path for the source version.")
+ parser.add_option("--resource-input", action="extend", dest="resourceInput", metavar="DIRECTORY", type="string", default=[], help="Define a resource input directory.")
+ parser.add_option("--resource-output", action="extend", dest="resourceOutput", metavar="DIRECTORY", type="string", default=[], help="Define a resource output directory.")
+
+ # Available Actions
+ parser.add_option("--generate-compiled-script", action="store_true", dest="generateCompiledScript", default=False, help="Compile source files.")
+ parser.add_option("--generate-source-script", action="store_true", dest="generateSourceScript", default=False, help="Generate source version.")
+ parser.add_option("--generate-api-documentation", action="store_true", dest="generateApiDocumentation", default=False, help="Generate API documentation.")
+ parser.add_option("--copy-resources", action="store_true", dest="copyResources", default=False, help="Copy resource files.")
+ parser.add_option("--fix-source", action="store_true", dest="fixSource", default=False, help="Fix source files")
+ parser.add_option("--pretty-print", action="store_true", dest="prettyPrint", default=False, help="Pretty print source code.")
+ parser.add_option("--migrate-source", action="store_true", dest="migrateSource", default=False, help="Migrate existing code to new version.")
+
+ # Debug Actions
+ parser.add_option("--store-tokens", action="store_true", dest="storeTokens", default=False, help="Store tokenized content of source files. (Debugging)")
+ parser.add_option("--store-tree", action="store_true", dest="storeTree", default=False, help="Store tree content of source files. (Debugging)")
+ parser.add_option("--print-files", action="store_true", dest="printFiles", default=False, help="Output known files. (Debugging)")
+ parser.add_option("--print-modules", action="store_true", dest="printModules", default=False, help="Output known modules. (Debugging)")
+ parser.add_option("--print-files-without-modules", action="store_true", dest="printFilesWithoutModules", default=False, help="Output files which have no module connection. (Debugging)")
+ parser.add_option("--print-includes", action="store_true", dest="printIncludes", default=False, help="Output sorted file list. (Debugging)")
+ parser.add_option("--print-dependencies", action="store_true", dest="printDeps", default=False, help="Output dependencies of files. (Debugging)")
+
+ # Output files
+ parser.add_option("--source-script-file", dest="sourceScriptFile", metavar="FILENAME", help="Name of output file from source build process.")
+ parser.add_option("--compiled-script-file", dest="compiledScriptFile", metavar="FILENAME", help="Name of output file from compiler.")
+ parser.add_option("--api-documentation-json-file", dest="apiDocumentationJsonFile", metavar="FILENAME", help="Name of JSON API file.")
+ parser.add_option("--api-documentation-xml-file", dest="apiDocumentationXmlFile", metavar="FILENAME", help="Name of XML API file.")
+ parser.add_option("--settings-script-file", dest="settingsScriptFile", metavar="FILENAME", help="Name of settings script file.")
+
+ # Encoding
+ parser.add_option("--script-output-encoding", dest="scriptOutputEncoding", default="utf-8", metavar="ENCODING", help="Defines the encoding used for script output files.")
+ parser.add_option("--xml-output-encoding", dest="xmlOutputEncoding", default="utf-8", metavar="ENCODING", help="Defines the encoding used for XML output files.")
+
+
+
+ #################################################################################
+ # OPTIONS
+ #################################################################################
+
+ # General options
+ parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=False, help="Quiet output mode.")
+ parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="Verbose output mode.")
+ parser.add_option("-d", "--debug", action="store_true", dest="enableDebug", help="Enable debug mode.")
+ parser.add_option("--package-id", dest="packageId", default="", metavar="ID", help="Defines a package ID (required for string optimization etc.)")
+ parser.add_option("--disable-internal-check", action="store_true", dest="disableInternalCheck", default=False, help="Disable check of modifications to internal files.")
+
+ # Options for source and compiled version
+ parser.add_option("--define-runtime-setting", action="append", dest="defineRuntimeSetting", metavar="NAMESPACE.KEY:VALUE", default=[], help="Define a setting.")
+ parser.add_option("--add-new-lines", action="store_true", dest="addNewLines", default=False, help="Keep newlines in compiled files.")
+
+ # Options for source version
+ parser.add_option("--source-loader-type", action="store", dest="sourceLoaderType", metavar="TYPE", choices=("auto", "docwrite", "domappend"), default="auto", help="Generated source loader type: auto, docwrite, domappend [default: %default].")
+
+ # Options for compiled version
+ parser.add_option("--add-file-ids", action="store_true", dest="addFileIds", default=False, help="Add file IDs to compiled output.")
+ parser.add_option("--optimize-strings", action="store_true", dest="optimizeStrings", default=False, help="Optimize strings. Increase mshtml performance.")
+ parser.add_option("--optimize-variables", action="store_true", dest="optimizeVariables", default=False, help="Optimize variables. Reducing size.")
+ parser.add_option("--obfuscate-identifiers", action="store_true", dest="obfuscateIdentifiers", default=False, help="Obfuscate public names like function names. (ALPHA!)")
+
+ # Options for resource copying
+ parser.add_option("--override-resource-output", action="append", dest="overrideResourceOutput", metavar="CLASSNAME.ID:DIRECTORY", default=[], help="Define a resource input directory.")
+
+ # Options for token/tree storage
+ parser.add_option("--token-output-directory", dest="tokenOutputDirectory", metavar="DIRECTORY", help="Define output directory for tokenizer result of the incoming JavaScript files. (Debugging)")
+ parser.add_option("--tree-output-directory", dest="treeOutputDirectory", metavar="DIRECTORY", help="Define output directory for generated tree of the incoming JavaScript files. (Debugging)")
+
+ # Cache Directory
+ parser.add_option("--cache-directory", dest="cacheDirectory", metavar="DIRECTORY", help="If this is defined the loader trys to use cache to optimize the performance.")
+
+ # Options for migration support
+ parser.add_option("--migration-target", dest="migrationTarget", metavar="VERSION", help="Define the target for migration of source code.")
+ parser.add_option("--migration-input", action="extend", dest="migrationInput", metavar="DIRECTORY", type="string", default=[], help="Define additional directories for to directories to migrate e.g. HTML files, ...")
+
+
+
+
+ #################################################################################
+ # INCLUDE/EXCLUDE
+ #################################################################################
+
+ # Include/Exclude
+ parser.add_option("-i", "--include", action="extend", dest="includeWithDeps", metavar="ID", type="string", default=[], help="Include ID")
+ parser.add_option("-e", "--exclude", action="extend", dest="excludeWithDeps", metavar="ID", type="string", default=[], help="Exclude ID")
+ parser.add_option("--include-without-dependencies", action="extend", dest="includeWithoutDeps", metavar="ID", type="string", default=[], help="Include ID")
+ parser.add_option("--exclude-without-dependencies", action="extend", dest="excludeWithoutDeps", metavar="ID", type="string", default=[], help="Exclude ID")
+
+ # Include/Exclude options
+ parser.add_option("--disable-auto-dependencies", action="store_false", dest="enableAutoDependencies", default=True, help="Disable detection of dependencies.")
+
+ return parser
+
+
+
+
+
+
+def argparser(cmdlineargs):
+
+ # Parse arguments
+ (options, args) = getparser().parse_args(cmdlineargs)
+
+ # Export to file
+ if options.exportToFile != None:
+ print
+ print " EXPORTING:"
+ print "----------------------------------------------------------------------------"
+
+ print " * Translating options..."
+
+ optionString = "# Exported configuration from build.py\n\n"
+ ignoreValue = True
+ lastWasKey = False
+
+ for arg in cmdlineargs:
+ if arg == "--export-to-file":
+ ignoreValue = True
+
+ elif arg.startswith("--"):
+ if lastWasKey:
+ optionString += "\n"
+
+ optionString += arg[2:]
+ ignoreValue = False
+ lastWasKey = True
+
+ elif arg.startswith("-"):
+ print " * Couldn't export short argument: %s" % arg
+ optionString += "\n# Ignored short argument %s\n" % arg
+ ignoreValue = True
+
+ elif not ignoreValue:
+ optionString += " = %s\n" % arg
+ ignoreValue = True
+ lastWasKey = False
+
+
+
+ print " * Export to file: %s" % options.exportToFile
+ filetool.save(options.exportToFile, optionString)
+
+ sys.exit(0)
+
+ # Read from file
+ elif options.fromFile != None:
+
+ print
+ print " INITIALIZATION:"
+ print "----------------------------------------------------------------------------"
+
+ print " * Reading configuration..."
+
+ # Convert file content into arguments
+ fileargs = {}
+ fileargpos = 0
+ fileargid = "default"
+ currentfileargs = []
+ fileargs[fileargid] = currentfileargs
+
+ alternativeFormatBegin = re.compile("\s*\[\s*")
+ alternativeFormatEnd = re.compile("\s*\]\s*=\s*")
+ emptyLine = re.compile("^\s*$")
+
+ for line in file(options.fromFile).read().split("\n"):
+ line = line.strip()
+
+ if emptyLine.match(line) or line.startswith("#") or line.startswith("//"):
+ continue
+
+ # Translating...
+ line = alternativeFormatBegin.sub(" = ", line)
+ line = alternativeFormatEnd.sub(":", line)
+
+ # Splitting line
+ line = line.split("=")
+
+ # Extract key element
+ key = line.pop(0).strip()
+
+ # Separate packages
+ if key == "package":
+ fileargpos += 1
+ fileargid = line[0].strip()
+
+ print " - Found package: %s" % fileargid
+
+ currentfileargs = []
+ fileargs[fileargid] = currentfileargs
+ continue
+
+ currentfileargs.append("--%s" % key)
+
+ if len(line) > 0:
+ value = line[0].strip()
+ currentfileargs.append(value)
+
+ # Parse
+ defaultargs = fileargs["default"]
+
+ if len(fileargs) > 1:
+ (fileDb, moduleDb) = load(getparser().parse_args(defaultargs)[0])
+
+ if options.obfuscateIdentifiers:
+ sharednames = {}
+
+ for filearg in fileargs:
+ if filearg == "default":
+ continue
+
+ combinedargs = []
+ combinedargs.extend(defaultargs)
+ combinedargs.extend(fileargs[filearg])
+
+ options = getparser().parse_args(defaultargs)[0]
+ findnames(fileDb, moduleDb, options, sharednames)
+
+ names = obfuscator.sort(sharednames)
+
+ for filearg in fileargs:
+ if filearg == "default":
+ continue
+
+ print
+ print
+ print
+ print
+ print " PACKAGE: %s" % filearg
+ print "----------------------------------------------------------------------------"
+
+ combinedargs = []
+ combinedargs.extend(defaultargs)
+ combinedargs.extend(fileargs[filearg])
+
+ options = getparser().parse_args(combinedargs)[0]
+ execute(fileDb, moduleDb, options, filearg, names)
+
+ else:
+ options = getparser().parse_args(defaultargs)[0]
+ (fileDb, moduleDb) = load(options)
+
+ if options.obfuscateIdentifiers:
+ execute(fileDb, moduleDb, options, "", obfuscator.sort(findnames(fileDb, moduleDb, options)))
+ else:
+ execute(fileDb, moduleDb, options, "", names)
+
+ else:
+ print
+ print " INITIALIZATION:"
+ print "----------------------------------------------------------------------------"
+
+ print " * Processing arguments..."
+
+ (fileDb, moduleDb) = load(options)
+
+ if options.obfuscateIdentifiers:
+ execute(fileDb, moduleDb, options, options.packageId, obfuscator.sort(findnames(fileDb, moduleDb, options)))
+ else:
+ execute(fileDb, moduleDb, options, options.packageId)
+
+
+
+
+
+
+
+def main():
+ if len(sys.argv[1:]) == 0:
+ basename = os.path.basename(sys.argv[0])
+ print "usage: %s [options]" % basename
+ print "Try '%s -h' or '%s --help' to show the help message." % (basename, basename)
+ sys.exit(1)
+
+ argparser(sys.argv[1:])
+
+
+
+
+
+
+def load(options):
+
+ ######################################################################
+ # SOURCE LOADER
+ ######################################################################
+
+ print
+ print " SOURCE LOADER:"
+ print "----------------------------------------------------------------------------"
+
+ if options.scriptInput == None or len(options.scriptInput) == 0:
+ if len(options.migrationInput) == 0:
+ basename = os.path.basename(sys.argv[0])
+ print "You must define at least one script input directory!"
+ print "usage: %s [options]" % basename
+ print "Try '%s -h' or '%s --help' to show the help message." % (basename, basename)
+ sys.exit(1)
+
+ (fileDb, moduleDb) = loader.indexScriptInput(options)
+
+
+
+
+
+ ######################################################################
+ # DEBUG OUTPUT JOBS
+ ######################################################################
+
+ if options.printFiles:
+ print
+ print " OUTPUT OF KNOWN FILES:"
+ print "----------------------------------------------------------------------------"
+ print " * These are all known files:"
+ for fileEntry in fileDb:
+ print " - %s (%s)" % (fileEntry, fileDb[fileEntry]["path"])
+
+ if options.printModules:
+ print
+ print " OUTPUT OF KNOWN MODULES:"
+ print "----------------------------------------------------------------------------"
+ print " * These are all known modules:"
+ for moduleEntry in moduleDb:
+ print " * %s" % moduleEntry
+ for fileEntry in moduleDb[moduleEntry]:
+ print " - %s" % fileEntry
+
+ if options.printFilesWithoutModules:
+ print
+ print " OUTPUT OF FILES WHICH HAVE NO MODULE CONNECTION:"
+ print "----------------------------------------------------------------------------"
+ print " * These are all files without a module connection:"
+ for fileEntry in fileDb:
+ fileFound = False
+
+ for moduleEntry in moduleDb:
+ for moduleFile in moduleDb[moduleEntry]:
+ if moduleFile == fileEntry:
+ fileFound = True
+ break
+
+ if not fileFound:
+ print " - %s" % fileEntry
+
+
+
+ return fileDb, moduleDb
+
+
+
+
+
+def findnames(fileDb, moduleDb, options, names={}):
+
+ print
+ print " SEARCHING FOR IDENTIFIERS:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Searching..."
+ else:
+ print " * Searching: ",
+
+
+ sortedIncludeList = loader.getSortedList(options, fileDb, moduleDb)
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - %s" % fileId
+
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ obfuscator.search(loader.getTree(fileDb, fileId, options), names)
+
+ if not options.verbose:
+ print
+
+ return names
+
+
+
+
+
+
+
+
+def execute(fileDb, moduleDb, options, pkgid="", names=[]):
+
+ additionalOutput = []
+
+
+ ######################################################################
+ # SORT OF INCLUDE LIST
+ ######################################################################
+
+ print
+ print " SORT OF INCLUDE LIST:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Include (with dependencies): %s" % options.includeWithDeps
+ print " * Include (without dependencies): %s" % options.includeWithoutDeps
+ print " * Exclude (with dependencies): %s" % options.excludeWithDeps
+ print " * Exclude (without dependencies): %s" % options.excludeWithoutDeps
+
+ print " * Sorting classes..."
+
+ sortedIncludeList = loader.getSortedList(options, fileDb, moduleDb)
+
+ if len(sortedIncludeList) == len(fileDb):
+ print " * Including all classes"
+
+ print " * Arranged %s classes" % len(sortedIncludeList)
+
+ if options.printIncludes:
+ print
+ print " PRINT OF INCLUDE ORDER:"
+ print "----------------------------------------------------------------------------"
+ print " * The files will be included in this order:"
+ for fileId in sortedIncludeList:
+ print " - %s" % fileId
+
+ if options.printDeps:
+ print
+ print " OUTPUT OF DEPENDENCIES:"
+ print "----------------------------------------------------------------------------"
+ print " * These are all included files with their dependencies:"
+ for fileId in sortedIncludeList:
+ print " - %s" % fileId
+ if len(fileDb[fileId]["loadtimeDeps"]) > 0:
+ print " - Loadtime: "
+ for depEntry in fileDb[fileId]["loadtimeDeps"]:
+ print " - %s" % depEntry
+
+ if len(fileDb[fileId]["afterDeps"]) > 0:
+ print " - After: "
+ for depEntry in fileDb[fileId]["afterDeps"]:
+ print " - %s" % depEntry
+
+ if len(fileDb[fileId]["runtimeDeps"]) > 0:
+ print " - Runtime: "
+ for depEntry in fileDb[fileId]["runtimeDeps"]:
+ print " - %s" % depEntry
+
+ if len(fileDb[fileId]["beforeDeps"]) > 0:
+ print " - Before: "
+ for depEntry in fileDb[fileId]["beforeDeps"]:
+ print " - %s" % depEntry
+
+ if len(fileDb[fileId]["optionalDeps"]) > 0:
+ print " - Optional: "
+ for depEntry in fileDb[fileId]["optionalDeps"]:
+ print " - %s" % depEntry
+
+
+
+
+
+
+ ######################################################################
+ # SOURCE MIGRATION
+ ######################################################################
+
+ if options.migrateSource:
+ print
+ print " SOURCE MIGRATION:"
+ print "----------------------------------------------------------------------------"
+
+ print " * Migrate Source Code..."
+
+ migrator.handle(sortedIncludeList, fileDb, options)
+
+ # Return after migration: Ignore other jobs
+ return
+
+
+ ######################################################################
+ # GENERATION OF PRETTY PRINTED CODE
+ ######################################################################
+
+ if options.fixSource:
+ print
+ print " FIX SOURCE CODE:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Fixing code..."
+ else:
+ print " * Fixing code: ",
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - Reading %s" % fileId
+
+ fileEntry = fileDb[fileId]
+
+ filePath = fileEntry["path"]
+ fileEncoding = fileEntry["encoding"]
+
+ fileContent = filetool.read(filePath, fileEncoding)
+ fixedContent = textutil.removeTrailingSpaces(textutil.tab2Space(textutil.any2Unix(fileContent), 2))
+
+ if fixedContent != fileContent:
+ if options.verbose:
+ print " - Storing modifications..."
+ else:
+ sys.stdout.write("!")
+ sys.stdout.flush()
+
+ filetool.save(filePath, fixedContent, fileEncoding)
+
+ elif not options.verbose:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ if not options.verbose:
+ print
+
+ # Return after fixing: Ignore other jobs
+ return
+
+
+
+ ######################################################################
+ # GENERATION OF PRETTY PRINTED CODE
+ ######################################################################
+
+ if options.prettyPrint:
+ print
+ print " GENERATION OF PRETTY PRINTED CODE:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Pretty printing..."
+ else:
+ print " * Pretty printing: ",
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - Compiling %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ prettyFileContent = compiler.compile(loader.getTree(fileDb, fileId, options), True)
+
+ if not prettyFileContent.endswith("\n"):
+ prettyFileContent += "\n"
+
+ filetool.save(fileDb[fileId]["path"], prettyFileContent)
+
+ if not options.verbose:
+ print
+
+ # Return after pretty print: Ignore other jobs
+ return
+
+
+
+ ######################################################################
+ # STRING OPTIMIZATION
+ ######################################################################
+
+ if options.optimizeStrings:
+ print
+ print " STRING OPTIMIZATION:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Searching strings..."
+ else:
+ print " * Searching strings: ",
+
+ stringMap = {}
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ localMap = loader.getStrings(fileDb, fileId, options)
+
+ for value in localMap:
+ if value in stringMap:
+ stringMap[value] += localMap[value]
+ else:
+ stringMap[value] = localMap[value]
+
+ if not options.verbose:
+ print
+
+ counter = 0
+ for value in stringMap:
+ counter += stringMap[value]
+
+ stringList = stringoptimizer.sort(stringMap)
+
+ print " * Found %s strings (used %s times)" % (len(stringMap), counter)
+
+ if options.verbose:
+ print " * Replacing strings..."
+ else:
+ print " * Replacing strings: ",
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ stringoptimizer.replace(loader.getTree(fileDb, fileId, options), stringList, "$" + pkgid, options.verbose)
+
+ if not options.verbose:
+ print
+
+ print " * Generating replacement..."
+ additionalOutput.append(stringoptimizer.replacement(stringList, "$" + pkgid))
+
+
+
+
+
+
+ ######################################################################
+ # LOCAL VARIABLE OPTIMIZATION
+ ######################################################################
+
+ if options.optimizeVariables:
+ print
+ print " LOCAL VARIABLE OPTIMIZATION:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Optimizing variables..."
+ else:
+ print " * Optimizing variables: ",
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ variableoptimizer.search(loader.getTree(fileDb, fileId, options), [], 0, "$")
+
+ if not options.verbose:
+ print
+
+
+
+
+
+
+ ######################################################################
+ # NAME OBFUSCATION
+ ######################################################################
+
+ if options.obfuscateIdentifiers:
+ print
+ print " OBFUSCATE IDENTIFIERS:"
+ print "----------------------------------------------------------------------------"
+
+ if options.verbose:
+ print " * Obfuscating identifiers..."
+ else:
+ print " * Obfuscating identifiers: ",
+
+ counter = 0
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ counter += obfuscator.update(loader.getTree(fileDb, fileId, options), names, "$$")
+
+ if not options.verbose:
+ print
+
+ print " * Updated %s names" % counter
+
+
+
+
+
+
+ ######################################################################
+ # TOKEN STORAGE
+ ######################################################################
+
+ if options.storeTokens:
+ print
+ print " TOKEN STORAGE:"
+ print "----------------------------------------------------------------------------"
+
+ if options.tokenOutputDirectory == None:
+ print " * You must define the token output directory!"
+ sys.exit(1)
+
+ if options.verbose:
+ print " * Storing tokens..."
+ else:
+ print " * Storing tokens: ",
+
+ for fileId in sortedIncludeList:
+ tokenString = tokenizer.convertTokensToString(loader.getTokens(fileDb, fileId, options))
+
+ if options.verbose:
+ print " * writing tokens for %s (%s KB)..." % (fileIdm, len(tokenString) / 1000.0)
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ filetool.save(os.path.join(filetool.normalize(options.tokenOutputDirectory), fileId + config.TOKENEXT), tokenString)
+
+ if not options.verbose:
+ print
+
+
+
+
+ ######################################################################
+ # TREE STORAGE
+ ######################################################################
+
+ if options.storeTree:
+ print
+ print " TREE STORAGE:"
+ print "----------------------------------------------------------------------------"
+
+ if options.treeOutputDirectory == None:
+ print " * You must define the tree output directory!"
+ sys.exit(1)
+
+ if options.verbose:
+ print " * Storing tree..."
+ else:
+ print " * Storing tree: ",
+
+ for fileId in sortedIncludeList:
+ treeString = "<?xml version=\"1.0\" encoding=\"" + options.xmlOutputEncoding + "\"?>\n" + tree.nodeToXmlString(loader.getTree(fileDb, fileId, options))
+
+ if options.verbose:
+ print " * writing tree for %s (%s KB)..." % (fileId, len(treeString) / 1000.0)
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ filetool.save(os.path.join(filetool.normalize(options.treeOutputDirectory), fileId + config.XMLEXT), treeString)
+
+ if not options.verbose:
+ print
+
+
+
+
+
+ ######################################################################
+ # GENERATION OF API
+ ######################################################################
+
+ if options.generateApiDocumentation:
+ print
+ print " GENERATION OF API:"
+ print "----------------------------------------------------------------------------"
+
+ if options.apiDocumentationJsonFile == None and options.apiDocumentationXmlFile == None:
+ print " * You must define one of JSON or XML API documentation file!"
+
+ docTree = None
+
+ if options.verbose:
+ print " * Generating API tree..."
+ else:
+ print " * Generating API tree: ",
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ docTree = api.createDoc(loader.getTree(fileDb, fileId, options), docTree)
+
+ if not options.verbose:
+ print
+
+ if docTree:
+ print " * Finalising tree..."
+ api.postWorkPackage(docTree, docTree)
+
+ if options.apiDocumentationXmlFile != None:
+ print " * Writing XML API file to %s" % options.apiDocumentationXmlFile
+
+ xmlContent = "<?xml version=\"1.0\" encoding=\"" + options.xmlOutputEncoding + "\"?>\n"
+
+ if options.addNewLines:
+ xmlContent += "\n" + tree.nodeToXmlString(docTree)
+ else:
+ xmlContent += tree.nodeToXmlString(docTree, "", "", "")
+
+ filetool.save(options.apiDocumentationXmlFile, xmlContent, options.xmlOutputEncoding)
+
+ if options.apiDocumentationJsonFile != None:
+ print " * Writing JSON API file to %s" % options.apiDocumentationJsonFile
+
+ if options.addNewLines:
+ jsonContent = tree.nodeToJsonString(docTree)
+ else:
+ jsonContent = tree.nodeToJsonString(docTree, "", "", "")
+
+ filetool.save(options.apiDocumentationJsonFile, jsonContent, options.scriptOutputEncoding)
+
+
+
+
+
+ ######################################################################
+ # CREATE COPY OF RESOURCES
+ ######################################################################
+
+ if options.copyResources:
+
+ print
+ print " CREATE COPY OF RESOURCES:"
+ print "----------------------------------------------------------------------------"
+
+ resources.copy(options, sortedIncludeList, fileDb)
+
+
+
+
+
+
+ ######################################################################
+ # GENERATION OF SETTINGS
+ ######################################################################
+
+ if options.generateSourceScript or options.generateCompiledScript:
+ settingsStr = ""
+
+ if len(options.defineRuntimeSetting) != 0:
+ print
+ print " GENERATION OF SETTINGS:"
+ print "----------------------------------------------------------------------------"
+
+ print " * Processing input data..."
+ settingsStr = settings.generate(options)
+
+ if options.settingsScriptFile:
+ print " * Storing result to %s" % options.settingsScriptFile
+ filetool.save(options.settingsScriptFile, settingsStr)
+
+ # clear settings for build and source
+ settingsStr = ""
+
+
+
+
+
+ ######################################################################
+ # GENERATION OF SOURCE VERSION
+ ######################################################################
+
+ if options.generateSourceScript:
+ print
+ print " GENERATION OF SOURCE SCRIPT:"
+ print "----------------------------------------------------------------------------"
+
+ if options.sourceScriptFile == None:
+ print " * You must define the source script file!"
+ sys.exit(1)
+
+ else:
+ options.sourceScriptFile = os.path.normpath(options.sourceScriptFile)
+
+ print " * Generating includer..."
+
+ sourceOutput = settingsStr
+
+ srcEol = "";
+ if options.addNewLines:
+ srcEol = "\n";
+
+ if sourceOutput != "":
+ settingsStr += srcEol
+
+ # Define javascript loaders
+ jsLoaders = {}
+
+ # HTML-only: create <script> tags using document.write()
+ jsLoaders["docwrite"] = """var includeJs=function(src){document.write('<script type="text/javascript" src="'+src+'"></script>')};"""
+
+ # XHTML-compatible: create and append DOM script nodes
+ jsLoaders["domappend"] = """if(document.createElementNS&&parentNode.namespaceURI)""" + srcEol + """var includeJs=function(src){var js=document.createElementNS(parentNode.namespaceURI,"script");js.type="text/javascript";js.src=src;parentNode.appendChild(js)};""" + srcEol + """else """ + srcEol + """var includeJs=function(src){var js=document.createElement("script");js.type="text/javascript";js.src=src;parentNode.appendChild(js)};"""
+
+ # Source loader closure
+ sourceOutput += """(function(sources){""" + srcEol
+
+ # Detect the node we are being called from
+ sourceOutput += """var parentNode=document.getElementsByTagName('body')[0]||document.getElementsByTagName('head')[0];""" + srcEol
+
+ # Autoselect a loader based on client engine
+ if options.sourceLoaderType == "auto":
+ sourceOutput += """var clientEngine=null;""" + srcEol
+
+ # Opera
+ sourceOutput += """if(window.opera&&/Opera[\s\/]([0-9\.]*)/.test(navigator.userAgent))clientEngine="opera";else """ + srcEol
+
+ # Khtml
+ sourceOutput += """if(typeof navigator.vendor==="string"&&navigator.vendor==="KDE"&&/KHTML\/([0-9-\.]*)/.test(navigator.userAgent))clientEngine="khtml";else """ + srcEol
+
+ # Webkit
+ sourceOutput += """if(navigator.userAgent.indexOf("AppleWebKit")!=-1&&/AppleWebKit\/([0-9-\.]*)/.test(navigator.userAgent))clientEngine="webkit";else """ + srcEol
+
+ # Gecko
+ sourceOutput += """if(window.controllers&&typeof navigator.product==="string"&&navigator.product==="Gecko"&&/rv\:([^\);]+)(\)|;)/.test(navigator.userAgent))clientEngine="gecko";else """ + srcEol
+
+ # MShtml
+ sourceOutput += """if(/MSIE\s+([^\);]+)(\)|;)/.test(navigator.userAgent))clientEngine="mshtml";""" + srcEol
+
+ # Select the loader based on the engine
+ sourceOutput += """switch(clientEngine){""" + srcEol
+
+ # Use DOM
+ sourceOutput += """case "opera": case "gecko":""" + srcEol
+ sourceOutput += jsLoaders["domappend"] + srcEol
+ sourceOutput += """break;""" + srcEol
+
+ # Use document.write()
+ sourceOutput += """case "webkit": case "khtml": case "mshtml": default:""" + srcEol
+ sourceOutput += jsLoaders["docwrite"] + srcEol
+ sourceOutput += """break;""" + srcEol
+
+ sourceOutput += """}""" + srcEol
+
+ # Use a fixed loader
+ else:
+ sourceOutput += jsLoaders[options.sourceLoaderType] + srcEol
+
+ # Loading loop
+ sourceOutput += """for(var i=0;i<sources.length;++i)includeJs(sources[i])})""" + srcEol
+
+ sources = ""
+ for fileId in sortedIncludeList:
+ if fileDb[fileId]["sourceScriptPath"] == None:
+ print " * Missing source path definition for script input %s. Could not create source script file!" % fileDb[fileId]["scriptInput"]
+ sys.exit(1)
+
+ sources += srcEol + '"%s%s",' % (os.path.join(fileDb[fileId]["sourceScriptPath"], fileDb[fileId]["pathId"].replace(".", os.sep)), config.JSEXT)
+
+ # Pass the array with source files to include
+ sourceOutput += "([" + sources[:-1] + srcEol + "]);" + srcEol
+
+ print " * Storing output as %s..." % options.sourceScriptFile
+ filetool.save(options.sourceScriptFile, sourceOutput, options.scriptOutputEncoding)
+
+
+
+
+
+ ######################################################################
+ # GENERATION OF COMPILED VERSION
+ ######################################################################
+
+ if options.generateCompiledScript:
+ print
+ print " GENERATION OF COMPILED SCRIPT:"
+ print "----------------------------------------------------------------------------"
+
+ compiledOutput = settingsStr + "".join(additionalOutput)
+
+ if options.compiledScriptFile == None:
+ print " * You must define the compiled script file!"
+ sys.exit(1)
+
+ if options.verbose:
+ print " * Compiling..."
+ else:
+ print " * Compiling: ",
+
+ for fileId in sortedIncludeList:
+ if options.verbose:
+ print " - Compiling %s" % fileId
+ else:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ compiledFileContent = compiler.compile(loader.getTree(fileDb, fileId, options), False, options.addNewLines, options.enableDebug)
+
+ if options.addFileIds:
+ compiledOutput += "\n\n\n/* ID: " + fileId + " */\n" + compiledFileContent + "\n"
+ else:
+ compiledOutput += compiledFileContent
+
+ if not compiledOutput.endswith(";") and not compiledOutput.endswith("\n"):
+ compiledOutput += ";"
+
+ if not options.verbose:
+ print
+
+ print " * Storing output as %s..." % options.compiledScriptFile
+ filetool.save(options.compiledScriptFile, compiledOutput, options.scriptOutputEncoding)
+
+
+
+
+
+
+
+######################################################################
+# MAIN LOOP
+######################################################################
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/massreplace.sh b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/massreplace.sh
new file mode 100755
index 0000000000..845a973781
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/massreplace.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+cd `dirname $0`/..
+
+for file in `find source -name "*.js" -o -name "*.css" -o -name "*.html"`; do
+ echo ">>> Patching: $file"
+ sed -i s:"$1":"$2":g $file
+done
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.5.2/info/01-changes.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.5.2/info/01-changes.dat
new file mode 100644
index 0000000000..5d3870e9f7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.5.2/info/01-changes.dat
@@ -0,0 +1,2 @@
+QxWindowManager=QxWindowManager was converted from a singleton to a normal class to allow multiple usage. This is useful for example to implement something like virtual desktops.
+QxAtom=Was renamed to QxFooBar (Only a test)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/info/01-windowevents.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/info/01-windowevents.dat
new file mode 100644
index 0000000000..2555ce0d46
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/info/01-windowevents.dat
@@ -0,0 +1,6 @@
+\.addEventListener\(\s*"resize"=Possible use of old resize event. When used to detect a window resize it must be renamed to "windowresize".
+\.addEventListener\(\s*"focus"=Possible use of old focus event. When used to detect a window resize it must be renamed to "windowfocus".
+\.addEventListener\(\s*"blur"=Possible use of old blur event. When used to detect a window resize it must be renamed to "windowblur".
+\.removeEventListener\(\s*"resize"=Possible use of old resize event. When used to detect a window resize it must be renamed to "windowresize".
+\.removeEventListener\(\s*"focus"=Possible use of old focus event. When used to detect a window resize it must be renamed to "windowfocus".
+\.removeEventListener\(\s*"blur"=Possible use of old blur event. When used to detect a window resize it must be renamed to "windowblur".
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/01-xml.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/01-xml.dat
new file mode 100644
index 0000000000..9bdd530e05
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/01-xml.dat
@@ -0,0 +1 @@
+\bqx\.lang\.XmlEmu\.createXmlDom\b=qx.lang.Xml.createXmlDom
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/02-application.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/02-application.dat
new file mode 100644
index 0000000000..5f71764537
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.1/patches/02-application.dat
@@ -0,0 +1 @@
+\bqx\.core\.Init\.getInstance\(\)\.setApplication\(\s*new\s+=qx.core.Init.getInstance().setApplication(
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/01-nativewindow.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/01-nativewindow.dat
new file mode 100644
index 0000000000..e7d408a5db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/01-nativewindow.dat
@@ -0,0 +1,2 @@
+\bqx\.client\.NativeWindow\b=NativeWindow now also supports "load" and "close" events.
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/02-functionextension.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/02-functionextension.dat
new file mode 100644
index 0000000000..8e901f6933
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/info/02-functionextension.dat
@@ -0,0 +1 @@
+\.closure\s*\(=Extension Function.prototype.closure has been removed.
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/patches/01-parent.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/patches/01-parent.dat
new file mode 100644
index 0000000000..e5d5aec288
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.2/patches/01-parent.dat
@@ -0,0 +1,2 @@
+\.getFocusManager\s*\(=.getFocusHandler(
+\.setFocusManager\s*\(=.setFocusHandler(
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/01-constants.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/01-constants.dat
new file mode 100644
index 0000000000..763a7b99e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/01-constants.dat
@@ -0,0 +1,293 @@
+\bqx\.constant\.Core\.EMPTY\b=""
+\bqx\.constant\.Core\.SPACE\b=" "
+\bqx\.constant\.Core\.SLASH\b="/"
+\bqx\.constant\.Core\.DOT\b="."
+\bqx\.constant\.Core\.ZERO\b="0"
+\bqx\.constant\.Core\.QUOTE='"'
+\bqx\.constant\.Core\.NEWLINE\b="\\n"
+\bqx\.constant\.Core\.SINGLEQUOTE\b="'"
+\bqx\.constant\.Core\.STAR\b="*"
+\bqx\.constant\.Core\.PLUS\b="+"
+\bqx\.constant\.Core\.MINUS\b="-"
+\bqx\.constant\.Core\.COMMA\b=","
+\bqx\.constant\.Core\.DASH\b="-"
+\bqx\.constant\.Core\.UNDERLINE\b="_"
+\bqx\.constant\.Core\.SEMICOLON\b=";"
+\bqx\.constant\.Core\.COLON\b=":"
+\bqx\.constant\.Core\.EQUAL\b="\="
+\bqx\.constant\.Core\.AMPERSAND\b="&"
+\bqx\.constant\.Core\.QUESTIONMARK\b="?"
+\bqx\.constant\.Core\.HASH\b="#"
+\bqx\.constant\.Core\.SMALLER\b="<"
+\bqx\.constant\.Core\.BIGGER\b=">"
+\bqx\.constant\.Core\.PERCENT\b="%"
+\bqx\.constant\.Core\.PIXEL\b="px"
+\bqx\.constant\.Core\.MILLISECONDS\b="ms"
+\bqx\.constant\.Core\.FLEX\b="1*"
+\bqx\.constant\.Core\.ZEROPIXEL\b="0px"
+\bqx\.constant\.Core\.HUNDREDPERCENT\b="100%"
+\bqx\.constant\.Core\.YES\b="yes"
+\bqx\.constant\.Core\.NO\b="no"
+\bqx\.constant\.Core\.ON\b="on"
+\bqx\.constant\.Core\.OFF\b="off"
+\bqx\.constant\.Core\.SET\b="set"
+\bqx\.constant\.Core\.GET\b="get"
+\bqx\.constant\.Core\.DEFAULT\b="default"
+\bqx\.constant\.Core\.AUTO\b="auto"
+\bqx\.constant\.Core\.NONE\b="none"
+\bqx\.constant\.Core\.DISABLED\b="disabled"
+\bqx\.constant\.Core\.HIDDEN\b="hidden"
+
+
+
+\bqx\.constant\.Event\.MOUSEOVER\b="mouseover"
+\bqx\.constant\.Event\.MOUSEMOVE\b="mousemove"
+\bqx\.constant\.Event\.MOUSEOUT\b="mouseout"
+\bqx\.constant\.Event\.MOUSEDOWN\b="mousedown"
+\bqx\.constant\.Event\.MOUSEUP\b="mouseup"
+\bqx\.constant\.Event\.MOUSEWHEEL\b="mousewheel"
+\bqx\.constant\.Event\.CLICK\b="click"
+\bqx\.constant\.Event\.DBLCLICK\b="dblclick"
+\bqx\.constant\.Event\.CONTEXTMENU\b="contextmenu"
+\bqx\.constant\.Event\.KEYDOWN\b="keydown"
+\bqx\.constant\.Event\.KEYPRESS\b="keypress"
+\bqx\.constant\.Event\.KEYINPUT\b="keyinput"
+\bqx\.constant\.Event\.KEYUP\b="keyup"
+\bqx\.constant\.Event\.BLUR\b="blur"
+\bqx\.constant\.Event\.FOCUS\b="focus"
+\bqx\.constant\.Event\.FOCUSIN\b="focusin"
+\bqx\.constant\.Event\.FOCUSOUT\b="focusout"
+\bqx\.constant\.Event\.SELECT\b="select"
+\bqx\.constant\.Event\.SCROLL\b="scroll"
+\bqx\.constant\.Event\.INPUT\b="input"
+\bqx\.constant\.Event\.CHANGE\b="change"
+\bqx\.constant\.Event\.RESIZE\b="resize"
+\bqx\.constant\.Event\.CHANGESELECTION\b="changeSelection"
+\bqx\.constant\.Event\.INTERVAL\b="interval"
+\bqx\.constant\.Event\.EXECUTE\b="execute"
+\bqx\.constant\.Event\.CREATE\b="create"
+\bqx\.constant\.Event\.LOAD\b="load"
+\bqx\.constant\.Event\.ERROR\b="error"
+\bqx\.constant\.Event\.SUBMIT\b="submit"
+\bqx\.constant\.Event\.UNLOAD\b="unload"
+\bqx\.constant\.Event\.BEFOREUNLOAD\b="beforeunload"
+\bqx\.constant\.Event\.TREEOPENWITHCONTENT\b="treeOpenWithContent"
+\bqx\.constant\.Event\.TREEOPENWHILEEMPTY\b="treeOpenWhileEmpty"
+\bqx\.constant\.Event\.TREECLOSE\b="treeClose"
+\bqx\.constant\.Event\.BEFOREAPPEAR\b="beforeAppear"
+\bqx\.constant\.Event\.APPEAR\b="appear"
+\bqx\.constant\.Event\.BEFOREDISAPPEAR\b="beforeDisappear"
+\bqx\.constant\.Event\.DISAPPEAR\b="disappear"
+\bqx\.constant\.Event\.BEFOREINSERTDOM\b="beforeInsertDom"
+\bqx\.constant\.Event\.INSERTDOM\b="insertDom"
+\bqx\.constant\.Event\.BEFOREREMOVEDOM\b="beforeRemoveDom"
+\bqx\.constant\.Event\.REMOVEDOM\b="removeDom"
+\bqx\.constant\.Event\.DRAGDROP\b="dragdrop"
+\bqx\.constant\.Event\.DRAGOVER\b="dragover"
+\bqx\.constant\.Event\.DRAGOUT\b="dragout"
+\bqx\.constant\.Event\.DRAGMOVE\b="dragmove"
+\bqx\.constant\.Event\.DRAGSTART\b="dragstart"
+\bqx\.constant\.Event\.DRAGEND\b="dragend"
+\bqx\.constant\.Event\.CREATED\b="created"
+\bqx\.constant\.Event\.CONFIGURED\b="configured"
+\bqx\.constant\.Event\.QUEUED\b="queued"
+\bqx\.constant\.Event\.SENDING\b="sending"
+\bqx\.constant\.Event\.RECEIVING\b="receiving"
+\bqx\.constant\.Event\.COMPLETED\b="completed"
+\bqx\.constant\.Event\.ABORTED\b="aborted"
+\bqx\.constant\.Event\.FAILED\b="failed"
+\bqx\.constant\.Event\.TIMEOUT\b="timeout"
+\bqx\.constant\.Event\.DIALOGOK\b="dialogok"
+\bqx\.constant\.Event\.DIALOGCANCEL\b="dialogcancel"
+\bqx\.constant\.Event\.DIALOGCLOSE\b="dialogclose"
+\bqx\.constant\.Event\.DIALOGPREVIOUS\b="dialogprevious"
+\bqx\.constant\.Event\.DIALOGNEXT\b="dialognext"
+\bqx\.constant\.Event\.DIALOGFIRST\b="dialogfirst"
+\bqx\.constant\.Event\.DIALOGLAST\b="dialoglast"
+
+
+
+\bqx\.constant\.Html\.AMPERSAND\b="&amp;"
+\bqx\.constant\.Html\.SMALLER\b="&lt;"
+\bqx\.constant\.Html\.BIGGER\b="&gt;"
+\bqx\.constant\.Html\.QUOTE\b="&quot;"
+\bqx\.constant\.Html\.SPACE\b="&nbsp;"
+
+
+
+\bqx\.constant\.Layout\.ORIENTATION_HORIZONTAL\b="horizontal"
+\bqx\.constant\.Layout\.ORIENTATION_VERTICAL\b="vertical"
+\bqx\.constant\.Layout\.ALIGN_LEFT\b="left"
+\bqx\.constant\.Layout\.ALIGN_LEFT_REVERSED\b="left-reversed"
+\bqx\.constant\.Layout\.ALIGN_CENTER\b="center"
+\bqx\.constant\.Layout\.ALIGN_CENTER_REVERSED\b="center-reversed"
+\bqx\.constant\.Layout\.ALIGN_RIGHT\b="right"
+\bqx\.constant\.Layout\.ALIGN_RIGHT_REVERSED\b="right-reversed"
+\bqx\.constant\.Layout\.ALIGN_TOP\b="top"
+\bqx\.constant\.Layout\.ALIGN_TOP_REVERSED\b="top-reversed"
+\bqx\.constant\.Layout\.ALIGN_MIDDLE\b="middle"
+\bqx\.constant\.Layout\.ALIGN_MIDDLE_REVERSED\b="middle-reversed"
+\bqx\.constant\.Layout\.ALIGN_BOTTOM\b="bottom"
+\bqx\.constant\.Layout\.ALIGN_BOTTOM_REVERSED\b="bottom-reversed"
+
+
+
+\bqx\.constant\.Mime\.JAVASCRIPT\b="text/javascript"
+\bqx\.constant\.Mime\.JSON\b="text/json"
+\bqx\.constant\.Mime\.XML\b="application/xml"
+\bqx\.constant\.Mime\.TEXT\b="text/plain"
+\bqx\.constant\.Mime\.HTML\b="text/html"
+
+
+
+\bqx\.constant\.Net\.NAMESPACE_SVG\b=qx.xml.Namespace.SVG
+\bqx\.constant\.Net\.NAMESPACE_SMIL\b=qx.xml.Namespace.SMIL
+\bqx\.constant\.Net\.NAMESPACE_MML\b=qx.xml.Namespace.MML
+\bqx\.constant\.Net\.NAMESPACE_CML\b=qx.xml.Namespace.CML
+\bqx\.constant\.Net\.NAMESPACE_XLINK\b=qx.xml.Namespace.XLINK
+\bqx\.constant\.Net\.NAMESPACE_XHTML\b=qx.xml.Namespace.XHTML
+\bqx\.constant\.Net\.NAMESPACE_XUL\b=qx.xml.Namespace.XUL
+\bqx\.constant\.Net\.NAMESPACE_XBL\b=qx.xml.Namespace.XBL
+\bqx\.constant\.Net\.NAMESPACE_FO\b=qx.xml.Namespace.FO
+\bqx\.constant\.Net\.NAMESPACE_XSL\b=qx.xml.Namespace.XSL
+\bqx\.constant\.Net\.NAMESPACE_XSLT\b=qx.xml.Namespace.XSLT
+\bqx\.constant\.Net\.NAMESPACE_XI\b=qx.xml.Namespace.XI
+\bqx\.constant\.Net\.NAMESPACE_XFORMS\b=qx.xml.Namespace.XFORMS
+\bqx\.constant\.Net\.NAMESPACE_SAXON\b=qx.xml.Namespace.SAXON
+\bqx\.constant\.Net\.NAMESPACE_XALAN\b=qx.xml.Namespace.XALAN
+\bqx\.constant\.Net\.NAMESPACE_XSD\b=qx.xml.Namespace.XSD
+\bqx\.constant\.Net\.NAMESPACE_DT\b=qx.xml.Namespace.DT
+\bqx\.constant\.Net\.NAMESPACE_XSI\b=qx.xml.Namespace.XSI
+\bqx\.constant\.Net\.NAMESPACE_RDF\b=qx.xml.Namespace.RDF
+\bqx\.constant\.Net\.NAMESPACE_RDFS\b=qx.xml.Namespace.RDFS
+\bqx\.constant\.Net\.NAMESPACE_DC\b=qx.xml.Namespace.DC
+\bqx\.constant\.Net\.NAMESPACE_DCQ\b=qx.xml.Namespace.DCQ
+\bqx\.constant\.Net\.NAMESPACE_SOAPENV\b=qx.xml.Namespace.SOAPENV
+\bqx\.constant\.Net\.NAMESPACE_WSDL\b=qx.xml.Namespace.WSDL
+\bqx\.constant\.Net\.NAMESPACE_ADOBESVGEXTENSIONS\b=qx.xml.Namespace.ADOBESVGEXTENSIONS
+\bqx\.constant\.Net\b=qx.xml.Namespace
+\bqx\.constant\.Net\.STATE_CREATED\b="created"
+\bqx\.constant\.Net\.STATE_CONFIGURED\b="configured"
+\bqx\.constant\.Net\.STATE_QUEUED\b="queued"
+\bqx\.constant\.Net\.STATE_SENDING\b="sending"
+\bqx\.constant\.Net\.STATE_RECEIVING\b="receiving"
+\bqx\.constant\.Net\.STATE_COMPLETED\b="completed"
+\bqx\.constant\.Net\.STATE_ABORTED\b="aborted"
+\bqx\.constant\.Net\.STATE_FAILED\b="failed"
+\bqx\.constant\.Net\.STATE_TIMEOUT\b="timeout"
+\bqx\.constant\.Net\.PROTOCOL_HTTP\b=qx.net.Protocol.HTTP
+\bqx\.constant\.Net\.PROTOCOL_HTTPS\b=qx.net.Protocol.HTTPS
+\bqx\.constant\.Net\.PROTOCOL_FTP\b=qx.net.Protocol.FTP
+\bqx\.constant\.Net\.PROTOCOL_FILE\b=qx.net.Protocol.FILE
+\bqx\.constant\.Net\.URI_HTTP\b=qx.net.Protocol.URI_HTTP
+\bqx\.constant\.Net\.URI_HTTPS\b=qx.net.Protocol.URI_HTTPS
+\bqx\.constant\.Net\.URI_FTP\b=qx.net.Protocol.URI_FTP
+\bqx\.constant\.Net\.URI_FILE\b=qx.net.Protocol.URI_FILE
+\bqx\.constant\.Net\.METHOD_GET\b=qx.net.Http.METHOD_GET
+\bqx\.constant\.Net\.METHOD_POST\b=qx.net.Http.METHOD_POST
+\bqx\.constant\.Net\.METHOD_PUT\b=qx.net.Http.METHOD_PUT
+\bqx\.constant\.Net\.METHOD_HEAD\b=qx.net.Http.METHOD_HEAD
+\bqx\.constant\.Net\.METHOD_DELETE\b=qx.net.Http.METHOD_DELETE
+\bqx\.constant\.Net\b=qx.net.Protocol
+
+
+
+\bqx\.constant\.Style\.PROPERTY_FILTER\b="filter"
+\bqx\.constant\.Style\.PROPERTY_ZINDEX\b="zIndex"
+\bqx\.constant\.Style\.PROPERTY_DISPLAY\b="display"
+\bqx\.constant\.Style\.PROPERTY_POSITION\b="position"
+\bqx\.constant\.Style\.PROPERTY_VISIBILITY\b="visibility"
+\bqx\.constant\.Style\.PROPERTY_DISABLED\b="disabled"
+\bqx\.constant\.Style\.PROPERTY_LINEHEIGHT\b="lineHeight"
+\bqx\.constant\.Style\.PROPERTY_TEXTALIGN\b="textAlign"
+\bqx\.constant\.Style\.PROPERTY_WHITESPACE\b="whiteSpace"
+\bqx\.constant\.Style\.PROPERTY_COLOR\b="color"
+\bqx\.constant\.Style\.PROPERTY_BACKGROUNDCOLOR\b="backgroundColor"
+\bqx\.constant\.Style\.PROPERTY_HEIGHT\b="height"
+\bqx\.constant\.Style\.PROPERTY_WIDTH\b="width"
+\bqx\.constant\.Style\.PROPERTY_TOP\b="top"
+\bqx\.constant\.Style\.PROPERTY_BOTTOM\b="bottom"
+\bqx\.constant\.Style\.PROPERTY_LEFT\b="left"
+\bqx\.constant\.Style\.PROPERTY_RIGHT\b="right"
+\bqx\.constant\.Style\.PROPERTY_PADDING\b="padding"
+\bqx\.constant\.Style\.PROPERTY_PADDINGTOP\b="paddingTop"
+\bqx\.constant\.Style\.PROPERTY_PADDINGRIGHT\b="paddingRight"
+\bqx\.constant\.Style\.PROPERTY_PADDINGBOTTOM\b="paddingBottom"
+\bqx\.constant\.Style\.PROPERTY_PADDINGLEFT\b="paddingLeft"
+\bqx\.constant\.Style\.PROPERTY_MARGIN\b="margin"
+\bqx\.constant\.Style\.PROPERTY_MARGINTOP\b="marginTop"
+\bqx\.constant\.Style\.PROPERTY_MARGINRIGHT\b="marginRight"
+\bqx\.constant\.Style\.PROPERTY_MARGINBOTTOM\b="marginBottom"
+\bqx\.constant\.Style\.PROPERTY_MARGINLEFT\b="marginLeft"
+\bqx\.constant\.Style\.PROPERTY_OVERFLOW_BOTH\b="overflow"
+\bqx\.constant\.Style\.PROPERTY_OVERFLOW_TEXT\b="textOverflow"
+\bqx\.constant\.Style\.PROPERTY_OVERFLOW_HORIZONTAL\b="overflowX"
+\bqx\.constant\.Style\.PROPERTY_OVERFLOW_VERTICAL\b="overflowY"
+\bqx\.constant\.Style\.POSITION_ABSOLUTE\b="absolute"
+\bqx\.constant\.Style\.POSITION_RELATIVE\b="relative"
+\bqx\.constant\.Style\.POSITION_STATIC\b="static"
+\bqx\.constant\.Style\.POSITION_FIXED\b="fixed"
+\bqx\.constant\.Style\.CURSOR_WAIT\b="wait"
+\bqx\.constant\.Style\.CURSOR_PROGRESS\b="progress"
+\bqx\.constant\.Style\.CURSOR_DEFAULT\b="default"
+\bqx\.constant\.Style\.OVERFLOW_AUTO\b="auto"
+\bqx\.constant\.Style\.OVERFLOW_HIDDEN\b="hidden"
+\bqx\.constant\.Style\.OVERFLOW_BOTH\b="scroll"
+\bqx\.constant\.Style\.OVERFLOW_HORIZONTAL\b="scrollX"
+\bqx\.constant\.Style\.OVERFLOW_VERTICAL\b="scrollY"
+\bqx\.constant\.Style\.OVERFLOW_ELLIPSIS\b="ellipsis"
+\bqx\.constant\.Style\.OVERFLOW_MOZ_NONE\b="-moz-scrollbars-none"
+\bqx\.constant\.Style\.OVERFLOW_MOZ_HORIZONTAL\b="-moz-scrollbars-horizontal"
+\bqx\.constant\.Style\.OVERFLOW_MOZ_VERTICAL\b="-moz-scrollbars-vertical"
+\bqx\.constant\.Style\.FOCUS_OUTLINE\b="1px dotted invert"
+
+
+
+\bqx\.constant\.Tags\.H1\b="h1"
+\bqx\.constant\.Tags\.H2\b="h2"
+\bqx\.constant\.Tags\.H3\b="h3"
+\bqx\.constant\.Tags\.H4\b="h4"
+\bqx\.constant\.Tags\.H5\b="h5"
+\bqx\.constant\.Tags\.H6\b="h6"
+\bqx\.constant\.Tags\.P\b="p"
+\bqx\.constant\.Tags\.DIV\b="div"
+\bqx\.constant\.Tags\.SPAN\b="span"
+\bqx\.constant\.Tags\.BODY\b="body"
+\bqx\.constant\.Tags\.EM\b="em"
+\bqx\.constant\.Tags\.I\b="i"
+\bqx\.constant\.Tags\.STRONG\b="strong"
+\bqx\.constant\.Tags\.B\b="b"
+\bqx\.constant\.Tags\.UL\b="ul"
+\bqx\.constant\.Tags\.OL\b="ol"
+\bqx\.constant\.Tags\.LI\b="li"
+\bqx\.constant\.Tags\.TABLE\b="table"
+\bqx\.constant\.Tags\.TD\b="td"
+\bqx\.constant\.Tags\.TR\b="tr"
+\bqx\.constant\.Tags\.THEAD\b="thead"
+\bqx\.constant\.Tags\.TBODY\b="tbody"
+\bqx\.constant\.Tags\.TFOOT\b="tfoot"
+
+
+
+\bqx\.constant\.Type\.UNDEFINED\b="undefined"
+\bqx\.constant\.Type\.NUMBER\b="number"
+\bqx\.constant\.Type\.STRING\b="string"
+\bqx\.constant\.Type\.BOOLEAN\b="boolean"
+\bqx\.constant\.Type\.FUNCTION\b="function"
+\bqx\.constant\.Type\.OBJECT\b="object"
+
+
+
+\bqx\.constant\.Node\.ELEMENT=qx.dom.DomNode.ELEMENT
+\bqx\.constant\.Node\.ATTRIBUTE=qx.dom.DomNode.ATTRIBUTE
+\bqx\.constant\.Node\.TEXT=qx.dom.DomNode.TEXT
+\bqx\.constant\.Node\.CDATA_SECTION=qx.dom.DomNode.CDATA_SECTION
+\bqx\.constant\.Node\.ENTITY_REFERENCE=qx.dom.DomNode.ENTITY_REFERENCE
+\bqx\.constant\.Node\.ENTITY=qx.dom.DomNode.ENTITY
+\bqx\.constant\.Node\.PROCESSING_INSTRUCTION=qx.dom.DomNode.PROCESSING_INSTRUCTION
+\bqx\.constant\.Node\.COMMENT=qx.dom.DomNode.COMMENT
+\bqx\.constant\.Node\.DOCUMENT=qx.dom.DomNode.DOCUMENT
+\bqx\.constant\.Node\.DOCUMENT_TYPE=qx.dom.DomNode.DOCUMENT_TYPE
+\bqx\.constant\.Node\.DOCUMENT_FRAGMENT=qx.dom.DomNode.DOCUMENT_FRAGMENT
+\bqx\.constant\.Node\.NOTATION=qx.dom.DomNode.NOTATION
+ \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/02-oo.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/02-oo.dat
new file mode 100644
index 0000000000..5b5b92efa2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/02-oo.dat
@@ -0,0 +1,54 @@
+\bqx\.OO\.PROPERTY_WIDTH\b="width"
+\bqx\.OO\.PROPERTY_HEIGHT\b="height"
+\bqx\.OO\.PROPERTY_MINWIDTH\b="minWidth"
+\bqx\.OO\.PROPERTY_MINHEIGHT\b="minHeight"
+\bqx\.OO\.PROPERTY_MAXWIDTH\b="maxWidth"
+\bqx\.OO\.PROPERTY_MAXHEIGHT\b="maxHeight"
+\bqx\.OO\.PROPERTY_LEFT\b="left"
+\bqx\.OO\.PROPERTY_RIGHT\b="right"
+\bqx\.OO\.PROPERTY_TOP\b="top"
+\bqx\.OO\.PROPERTY_BOTTOM\b="bottom"
+\bqx\.OO\.PROPERTY_VISIBILITY\b="visibility"
+\bqx\.OO\.PROPERTY_DISPLAY\b="display"
+\bqx\.OO\.PROPERTY_PARENT\b="parent"
+\bqx\.OO\.PROPERTY_ZINDEX\b="zIndex"
+
+\bqx\.OO\.C_SET\b="set"
+\bqx\.OO\.C_GET\b="get"
+\bqx\.OO\.C_APPLY\b="apply"
+\bqx\.OO\.C_RESET\b="reset"
+\bqx\.OO\.C_FORCE\b="force"
+\bqx\.OO\.C_TOGGLE\b="toggle"
+\bqx\.OO\.C_CHANGE\b="change"
+\bqx\.OO\.C_STORE\b="store"
+\bqx\.OO\.C_RETRIEVE\b="retrieve"
+\bqx\.OO\.C_PRIVATECHANGE\b="_change"
+\bqx\.OO\.C_INVALIDATE\b="_invalidate"
+\bqx\.OO\.C_INVALIDATED\b="_invalidated"
+\bqx\.OO\.C_RECOMPUTE\b="_recompute"
+\bqx\.OO\.C_CACHED\b="_cached"
+\bqx\.OO\.C_COMPUTE\b="_compute"
+\bqx\.OO\.C_COMPUTED\b="_computed"
+\bqx\.OO\.C_UNITDETECTION\b="_unitDetection"
+
+\bqx\.OO\.C_GLOBALPROPERTYREF\b="PROPERTY_"
+
+\bqx\.OO\.C_UNIT_VALUE\b="Value"
+\bqx\.OO\.C_UNIT_PARSED\b="Parsed"
+\bqx\.OO\.C_UNIT_TYPE\b="Type"
+\bqx\.OO\.C_UNIT_TYPE_NULL\b="TypeNull"
+\bqx\.OO\.C_UNIT_TYPE_PIXEL\b="TypePixel"
+\bqx\.OO\.C_UNIT_TYPE_PERCENT\b="TypePercent"
+\bqx\.OO\.C_UNIT_TYPE_AUTO\b="TypeAuto"
+\bqx\.OO\.C_UNIT_TYPE_FLEX\b="TypeFlex"
+
+\bqx\.OO\.C_GETDEFAULT\b="getDefault"
+\bqx\.OO\.C_SETDEFAULT\b="setDefault"
+\bqx\.OO\.C_RETRIEVEDEFAULT\b="retrieveDefault"
+\bqx\.OO\.C_STOREDEFAULT\b="storeDefault"
+
+\bqx\.OO\.C_VALUE\b="_value"
+\bqx\.OO\.C_NULL\b="_null"
+\bqx\.OO\.C_EVAL\b="_eval"
+\bqx\.OO\.C_CHECK\b="_check"
+\bqx\.OO\.C_MODIFY\b="_modify"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/03-widget.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/03-widget.dat
new file mode 100644
index 0000000000..763f17b557
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/03-widget.dat
@@ -0,0 +1,68 @@
+\bqx\.ui\.core\.Widget\.JOB_INITIAL\b="initial"
+\bqx\.ui\.core\.Widget\.JOB_VISIBLE\b="visible"
+\bqx\.ui\.core\.Widget\.JOB_LOCATION\b="location"
+\bqx\.ui\.core\.Widget\.JOB_LOCATIONX\b="locationX"
+\bqx\.ui\.core\.Widget\.JOB_LOCATIONY\b="locationY"
+\bqx\.ui\.core\.Widget\.JOB_ADDCHILD\b="addChild"
+\bqx\.ui\.core\.Widget\.JOB_REMOVECHILD\b="removeChild"
+\bqx\.ui\.core\.Widget\.JOB_FRAMEWIDTH\b="frameWidth"
+\bqx\.ui\.core\.Widget\.JOB_FRAMEHEIGHT\b="frameHeight"
+\bqx\.ui\.core\.Widget\.JOB_PREFERREDINNERWIDTH\b="preferredInnerWidth"
+\bqx\.ui\.core\.Widget\.JOB_PREFERREDINNERHEIGHT\b="preferredInnerHeight"
+\bqx\.ui\.core\.Widget\.PROPERTY_CLASSNAME\b="className"
+\bqx\.ui\.core\.Widget\.PROPERTY_BORDERX\b="borderX"
+\bqx\.ui\.core\.Widget\.PROPERTY_BORDERWIDTHX\b="borderWidthX"
+\bqx\.ui\.core\.Widget\.PROPERTY_BORDERY\b="borderY"
+\bqx\.ui\.core\.Widget\.PROPERTY_BORDERWIDTHY\b="borderWidthY"
+\bqx\.ui\.core\.Widget\.PROPERTY_PARENT_PADDINGLEFT\b="parentPaddingLeft"
+\bqx\.ui\.core\.Widget\.PROPERTY_PARENT_PADDINGRIGHT\b="parentPaddingRight"
+\bqx\.ui\.core\.Widget\.PROPERTY_PARENT_PADDINGTOP\b="parentPaddingTop"
+\bqx\.ui\.core\.Widget\.PROPERTY_PARENT_PADDINGBOTTOM\b="parentPaddingBottom"
+\bqx\.ui\.core\.Widget\.STATE_OVER\b="over"
+\bqx\.ui\.core\.Widget\.STATE_FOCUSED\b="focused"
+\bqx\.ui\.core\.Widget\.STATE_DISABLED\b="disabled"
+\bqx\.ui\.core\.Widget\.FOCUS_OUTLINE\b="1px dotted invert"
+\bqx\.ui\.core\.Widget\.FOCUS_NONE\b="0px none"
+\bqx\.ui\.core\.Widget\.TAB_PROPERTY_UNSELECTABLE\b="unselectable"
+\bqx\.ui\.core\.Widget\.TAB_PROPERTY_TABINDEX\b="tabIndex"
+\bqx\.ui\.core\.Widget\.TAB_PROPERTY_USERFOCUS\b="userFocus"
+\bqx\.ui\.core\.Widget\.TAB_PROPERTY_MOZUSERFOCUS\b="MozUserFocus"
+\bqx\.ui\.core\.Widget\.TAB_VALUE_IGNORE\b="ignore"
+\bqx\.ui\.core\.Widget\.TAB_VALUE_NORMAL\b="normal"
+\bqx\.ui\.core\.Widget\.TAB_VALUE_ON\b="on"
+\bqx\.ui\.core\.Widget\.SEL_VALUE_ON\b="on"
+\bqx\.ui\.core\.Widget\.SEL_PROPERTY_UNSELECTABLE\b="unselectable"
+\bqx\.ui\.core\.Widget\.SEL_PROPERTY_USERSELECT\b="userSelect"
+\bqx\.ui\.core\.Widget\.SEL_PROPERTY_MOZUSERSELECT\b="MozUserSelect"
+\bqx\.ui\.core\.Widget\.SEL_PROPERTY_KHTMLUSERSELECT\b="KhtmlUserSelect"
+\bqx\.ui\.core\.Widget\.OPACITY_FILTER_START\b="Alpha(Opacity\="
+\bqx\.ui\.core\.Widget\.OPACITY_FILTER_STOP\b=")"
+\bqx\.ui\.core\.Widget\.OPACITY_FILTER_REGEXP = /Alpha\(Opacity\=([0-9]{1,3})\)/
+\bqx\.ui\.core\.Widget\.OPACITY_PROPERTY_CSS3\b="opacity"
+\bqx\.ui\.core\.Widget\.OPACTIY_PROPERTY_MOZ\b="MozOpacity"
+\bqx\.ui\.core\.Widget\.OPACITY_PROPERTY_MOZ\b="MozOpacity"
+\bqx\.ui\.core\.Widget\.OPACITY_PROPERTY_KHTML\b="KhtmlOpacity"
+\bqx\.ui\.core\.Widget\.CURSOR_PROPERTY\b="cursor"
+\bqx\.ui\.core\.Widget\.CURSOR_VALUE_POINTER\b="pointer"
+\bqx\.ui\.core\.Widget\.CURSOR_VALUE_HAND\b="hand"
+\bqx\.ui\.core\.Widget\.BACKGROUNDIMG_PROPERTY\b="backgroundImage"
+\bqx\.ui\.core\.Widget\.BACKGROUNDIMG_VALUE_START\b="url("
+\bqx\.ui\.core\.Widget\.BACKGROUNDIMG_VALUE_STOP\b=")"
+\bqx\.ui\.core\.Widget\.BACKGROUNDIMG_REGEXP1 = /^url\(/i
+\bqx\.ui\.core\.Widget\.BACKGROUNDIMG_REGEXP2 = /\)$/
+\bqx\.ui\.core\.Widget\.CLIP_PROPERTY\b="clip"
+\bqx\.ui\.core\.Widget\.CLIP_VALUE_START\b="rect("
+\bqx\.ui\.core\.Widget\.CLIP_VALUE_STOP\b=")"
+\bqx\.ui\.core\.Widget\.SCROLL_PROPERTY\b="overflow"
+\bqx\.ui\.core\.Widget\.SCROLL_PROPERTYX\b="overflowX"
+\bqx\.ui\.core\.Widget\.SCROLL_PROPERTYY\b="overflowY"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_AUTO\b="auto"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_HIDDEN\b="hidden"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_SCROLL\b="scroll"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_SCROLLX\b="scrollX"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_SCROLLY\b="scrollY"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_MOZNONE\b="-moz-scrollbars-none"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_MOZSCROLLX\b="-moz-scrollbars-horizontal"
+\bqx\.ui\.core\.Widget\.SCROLL_VALUE_MOZSCROLLY\b="-moz-scrollbars-vertical"
+\bqx\.ui\.core\.Widget\.INLINE_EVENTTYPE\b="propertychange"
+\bqx\.ui\.core\.Widget\.INLINE_EVENTTYPE_PROPERTY\b="value"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/04-nativewindow.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/04-nativewindow.dat
new file mode 100644
index 0000000000..6d3a136a57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/04-nativewindow.dat
@@ -0,0 +1,12 @@
+\bqx\.client\.NativeWindow\.PROPERTY_DEPENDENT\b="dependent"
+\bqx\.client\.NativeWindow\.PROPERTY_WIDTH\b="width"
+\bqx\.client\.NativeWindow\.PROPERTY_HEIGHT\b="height"
+\bqx\.client\.NativeWindow\.PROPERTY_LEFT\b="left"
+\bqx\.client\.NativeWindow\.PROPERTY_TOP\b="top"
+\bqx\.client\.NativeWindow\.PROPERTY_RESIZABLE\b="resizable"
+\bqx\.client\.NativeWindow\.PROPERTY_STATUS\b="status"
+\bqx\.client\.NativeWindow\.PROPERTY_LOCATION\b="location"
+\bqx\.client\.NativeWindow\.PROPERTY_MENUBAR\b="menubar"
+\bqx\.client\.NativeWindow\.PROPERTY_TOOLBAR\b="toolbar"
+\bqx\.client\.NativeWindow\.PROPERTY_SCROLLBARS\b="scrollbars"
+\bqx\.client\.NativeWindow\.PROPERTY_MODAL\b="modal" \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/05-font.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/05-font.dat
new file mode 100644
index 0000000000..63cefbabaa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/05-font.dat
@@ -0,0 +1,10 @@
+\bqx\.renderer\.font\.Font\.STYLE_BOLD\b="bold"
+\bqx\.renderer\.font\.Font\.STYLE_NORMAL\b="normal"
+\bqx\.renderer\.font\.Font\.STYLE_ITALIC\b="italic"
+\bqx\.renderer\.font\.Font\.STYLE_UNDERLINE\b="underline"
+\bqx\.renderer\.font\.Font\.STYLE_STRIKEOUT\b="strikeout"
+\bqx\.renderer\.font\.Font\.PROPERTY_FAMILY\b="fontFamily"
+\bqx\.renderer\.font\.Font\.PROPERTY_SIZE\b="fontSize"
+\bqx\.renderer\.font\.Font\.PROPERTY_WEIGHT\b="fontWeight"
+\bqx\.renderer\.font\.Font\.PROPERTY_STYLE\b="fontStyle"
+\bqx\.renderer\.font\.Font\.PROPERTY_DECORATION\b="textDecoration"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/06-border.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/06-border.dat
new file mode 100644
index 0000000000..58ed0f27dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/06-border.dat
@@ -0,0 +1,17 @@
+\bqx\.renderer\.border\.Border\.STYLE_GROOVE\b="groove"
+\bqx\.renderer\.border\.Border\.STYLE_RIDGE\b="ridge"
+\bqx\.renderer\.border\.Border\.STYLE_INSET\b="inset"
+\bqx\.renderer\.border\.Border\.STYLE_OUTSET\b="outset"
+\bqx\.renderer\.border\.Border\.STYLE_SOLID\b="solid"
+\bqx\.renderer\.border\.Border\.STYLE_DOTTED\b="dotted"
+\bqx\.renderer\.border\.Border\.STYLE_DASHED\b="dashed"
+\bqx\.renderer\.border\.Border\.STYLE_DOUBLE\b="double"
+\bqx\.renderer\.border\.Border\.STYLE_NONE\b="none"
+\bqx\.renderer\.border\.Border\.POSITION_TOP\b="top"
+\bqx\.renderer\.border\.Border\.POSITION_RIGHT\b="right"
+\bqx\.renderer\.border\.Border\.POSITION_BOTTOM\b="bottom"
+\bqx\.renderer\.border\.Border\.POSITION_LEFT\b="left"
+\bqx\.renderer\.border\.Border\.BORDER_NONE\b="0px none"
+\bqx\.renderer\.border\.Border\.baseColor\b="threedlightshadow"
+\bqx\.renderer\.border\.Border\.stylePart\b="Style"
+\bqx\.renderer\.border\.Border\.colorPart\b="Color"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/07-color.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/07-color.dat
new file mode 100644
index 0000000000..30003e9577
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/07-color.dat
@@ -0,0 +1,2 @@
+\bqx\.renderer\.color\.Color\.RGBCSS_START\b="rgb("
+\bqx\.renderer\.color\.Color\.RGBCSS_STOP\b=")"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/08-image.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/08-image.dat
new file mode 100644
index 0000000000..5bf6e48390
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/08-image.dat
@@ -0,0 +1,7 @@
+qx\.ui\.basic\.Image\.ATTR_ALT\b="alt"
+qx\.ui\.basic\.Image\.ATTR_TITLE\b="title"
+qx\.ui\.basic\.Image\.BORDER_NONE\b="0 none"
+qx\.ui\.basic\.Image\.RESET_VALIGN\b="top"
+qx\.ui\.basic\.Image\.IMGLOADER_START\b="progid:DXImageTransform.Microsoft.AlphaImageLoader(src\='"
+qx\.ui\.basic\.Image\.IMGLOADER_STOP\b="',sizingMethod\='scale')"
+qx\.ui\.basic\.Image\.FILTER_GRAY\b="Gray() Alpha(Opacity\=30)"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/09-tree.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/09-tree.dat
new file mode 100644
index 0000000000..6b8e84ba75
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/09-tree.dat
@@ -0,0 +1,8 @@
+\bqx\.ui\.tree\.AbstractTreeElement\.INDENT_CODE_1\b="<img style\=\"position:absolute;top:0px;left:"
+\bqx\.ui\.tree\.AbstractTreeElement\.INDENT_CODE_2\b="px\" src\=\""
+\bqx\.ui\.tree\.AbstractTreeElement\.INDENT_CODE_3\b="\" />"
+\bqx\.ui\.tree\.AbstractTreeElement\.IMG_EXTENSION\b="gif"
+\bqx\.ui\.treefullcontrol\.AbstractTreeElement\.INDENT_CODE_1\b="<img style\=\"position:absolute;top:0px;left:"
+\bqx\.ui\.treefullcontrol\.AbstractTreeElement\.INDENT_CODE_2\b="px\" src\=\""
+\bqx\.ui\.treefullcontrol\.AbstractTreeElement\.INDENT_CODE_3\b="\" />"
+\bqx\.ui\.treefullcontrol\.AbstractTreeElement\.IMG_EXTENSION\b="gif"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/10-table.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/10-table.dat
new file mode 100644
index 0000000000..ed63f48058
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/10-table.dat
@@ -0,0 +1,25 @@
+\bqx\.ui\.table\.DefaultDataCellRenderer\.INTERNAL_STYLE_ALIGN_RIGHT=";text-align:right"
+\bqx\.ui\.table\.DefaultDataCellRenderer\.INTERNAL_STYLE_BOLD=";font-weight:bold"
+\bqx\.ui\.table\.DefaultDataCellRenderer\.INTERNAL_STYLE_ITALIC=";font-style:italic"
+
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_START\b='<div style\="position:absolute;font-family:\'Segoe UI\', Corbel, Calibri, Tahoma, \'Lucida Sans Unicode\', sans-serif;font-size:11px;left:0px;top:'
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_WIDTH\b='px;width:'
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_HEIGHT\b='px;height:'
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_BG_COLOR\b='px;background-color:'
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_COLOR\b=';color:'
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_START_END\b='">'
+\bqx\.ui\.table\.TablePane\.ARRAY_JOIN_ROW_DIV_END\b='</div>'
+
+\bqx\.ui\.table\.TablePane\.CONTENT_CELL_STYLE_LEFT\b='position:absolute;left:'
+\bqx\.ui\.table\.TablePane\.CONTENT_CELL_STYLE_WIDTH\b='px;top:0px;width:'
+\bqx\.ui\.table\.TablePane\.CONTENT_CELL_STYLE_HEIGHT\b='px; height:'
+
+\bqx\.ui\.table\.TablePane\.TABLE_START\b='<table cellspacing\="0" cellpadding\="0" style\="table-layout:fixed;font-family:\'Segoe UI\', Corbel, Calibri, Tahoma, \'Lucida Sans Unicode\', sans-serif;font-size:11px;width:'
+\bqx\.ui\.table\.TablePane\.TABLE_COLGROUP\b='px"><colgroup>'
+\bqx\.ui\.table\.TablePane\.TABLE_COL\b='<col width\="'
+\bqx\.ui\.table\.TablePane\.TABLE_COLEND\b='"/>'
+\bqx\.ui\.table\.TablePane\.TABLE_TBODY\b='</colgroup><tbody>'
+\bqx\.ui\.table\.TablePane\.TABLE_TR\b='<tr style\="height:'
+\bqx\.ui\.table\.TablePane\.TABLE_BGCOLOR\b='px;background-color:'
+\bqx\.ui\.table\.TablePane\.TABLE_TR_END\b='</tr>'
+\bqx\.ui\.table\.TablePane\.TABLE_TBODY_END\b='</tbody></table>'
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/11-embed.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/11-embed.dat
new file mode 100644
index 0000000000..bc740fc9fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/11-embed.dat
@@ -0,0 +1,8 @@
+\bqx\.ui\.embed\.IconHtmlEmbed\.START_IMAGE\b="<img src\=\""
+\bqx\.ui\.embed\.IconHtmlEmbed\.START_STYLE\b="\" style\=\"vertical-align:middle;"
+\bqx\.ui\.embed\.IconHtmlEmbed\.STYLE_MARGIN\b="margin-right:"
+\bqx\.ui\.embed\.IconHtmlEmbed\.STYLE_WIDTH\b="width:"
+\bqx\.ui\.embed\.IconHtmlEmbed\.STYLE_HEIGHT\b="height:"
+\bqx\.ui\.embed\.IconHtmlEmbed\.PIXEL_UNIT\b="px;"
+\bqx\.ui\.embed\.IconHtmlEmbed\.FILTER_START\b="filter:"
+\bqx\.ui\.embed\.IconHtmlEmbed\.STOP_IMAGE\b="\"/>" \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/12-label.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/12-label.dat
new file mode 100644
index 0000000000..32cb319a21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/12-label.dat
@@ -0,0 +1,21 @@
+\bqx\.ui\.basic\.Label\.COPY_STYLEPROPERTY\b="styleproperty"
+\bqx\.ui\.basic\.Label\.COPY_COMPUTEDELEMENT\b="computedelement"
+\bqx\.ui\.basic\.Label\.COPY_LOCALELEMENT\b="localelement"
+\bqx\.ui\.basic\.Label\.OVERFLOW_HIDDEN\b="hidden"
+\bqx\.ui\.basic\.Label\.OVERFLOW_ELLIPSIS\b="ellipsis"
+\bqx\.ui\.basic\.Label\.INNER_TEXT\b="innerText"
+\bqx\.ui\.basic\.Label\.INNER_HTML\b="innerHTML"
+\bqx\.ui\.basic\.Label\.MNEMONIC_OUT_START\b="(<span style\=\"text-decoration:underline\">"
+\bqx\.ui\.basic\.Label\.MNEMONIC_OUT_STOP\b="</span>)"
+\bqx\.ui\.basic\.Label\.MNEMONIC_IN_START\b="<span style\=\"text-decoration:underline\">"
+\bqx\.ui\.basic\.Label\.MNEMONIC_IN_STOP\b="</span>"
+\bqx\.ui\.basic\.Label\.MNEMONIC_TEST1\b="^(((<([^>]|"
+\bqx\.ui\.basic\.Label\.MNEMONIC_TEST2\b=")+>)|(&([^;]|"
+\bqx\.ui\.basic\.Label\.MNEMONIC_TEST3\b=")+;)|[^&"
+\bqx\.ui\.basic\.Label\.MNEMONIC_TEST4\b="])*)("
+\bqx\.ui\.basic\.Label\.MNEMONIC_TEST5\b=")"
+\bqx\.ui\.basic\.Label\.MNEMONIC_REGMODE\b="i"
+\bqx\.ui\.basic\.Label\.BR\b="<br/>"
+\bqx\.ui\.basic\.Label\.CODE1\b="&#x"
+\bqx\.ui\.basic\.Label\.CODE2\b="&#"
+\bqx\.ui\.basic\.Label\.TOSTRHELPER\b="0x" \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/13-window.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/13-window.dat
new file mode 100644
index 0000000000..99c71f2d20
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/13-window.dat
@@ -0,0 +1,8 @@
+\bqx\.ui\.window\.Window\.MODE_OPAQUE\b="opaque"
+\bqx\.ui\.window\.Window\.MODE_LAZYOPAQUE\b="lazyopaque"
+\bqx\.ui\.window\.Window\.MODE_FRAME\b="frame"
+\bqx\.ui\.window\.Window\.MODE_TRANSLUCENT\b="translucent"
+\bqx\.ui\.window\.Window\.MODE_MINIMIZED\b="minimized"
+\bqx\.ui\.window\.Window\.MODE_MAXIMIZED\b="maximized"
+\bqx\.ui\.window\.Window\.STATE_ACTIVE\b="active"
+\bqx\.ui\.window\.Window\.STATE_MAXIMIZED\b="maximized"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/14-colorselector.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/14-colorselector.dat
new file mode 100644
index 0000000000..1741cebc20
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/14-colorselector.dat
@@ -0,0 +1,11 @@
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_RED_MODIFIER\b="redModifier"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_GREEN_MODIFIER\b="greenModifier"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_BLUE_MODIFIER\b="blueModifier"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_HUE_MODIFIER\b="hueModifier"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_SATURATION_MODIFIER\b="saturationModifier"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_BRIGHTNESS_MODIFIER\b="brightnessModifier"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_HSB_SPINNER\b="hsbSpinner"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_RGB_SPINNER\b="rgbSpinner"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_HEX_FIELD\b="hexField"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_HUE_SATURATION_FIELD\b="hueSaturationField"
+\bqx\.ui\.component\.ColorSelector\.CONTEXT_BRIGHTNESS_FIELD\b="brightnessField" \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/15-datechooser.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/15-datechooser.dat
new file mode 100644
index 0000000000..cd78f336d5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/15-datechooser.dat
@@ -0,0 +1,5 @@
+\bqx\.ui\.component\.DateChooser\.STATE_HEADER\b="header"
+\bqx\.ui\.component\.DateChooser\.STATE_WEEKEND\b="weekend"
+\bqx\.ui\.component\.DateChooser\.STATE_OTHER_MONTH\b="otherMonth"
+\bqx\.ui\.component\.DateChooser\.STATE_SELECTED\b="selected"
+\bqx\.ui\.component\.DateChooser\.STATE_TODAY\b="today"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/16-button.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/16-button.dat
new file mode 100644
index 0000000000..953137b8dc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/16-button.dat
@@ -0,0 +1,3 @@
+\bqx\.ui\.form\.Button\.STATE_CHECKED\b="checked"
+\bqx\.ui\.form\.Button\.STATE_PRESSED\b="pressed"
+\bqx\.ui\.form\.Button\.STATE_ABANDONED\b="abandoned"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/17-selection.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/17-selection.dat
new file mode 100644
index 0000000000..5dcc3754d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/17-selection.dat
@@ -0,0 +1,3 @@
+\bqx\.manager\.selection\.SelectionManager\.STATE_SELECTED\b="selected"
+\bqx\.manager\.selection\.SelectionManager\.STATE_ANCHOR\b="anchor"
+\bqx\.manager\.selection\.SelectionManager\.STATE_LEAD\b="lead"
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/40-classnames.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/40-classnames.dat
new file mode 100644
index 0000000000..5b43fdb3ab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6.3/patches/40-classnames.dat
@@ -0,0 +1,74 @@
+\bqx\.dom\.DomDimension\b=qx.dom.Dimension
+\bqx\.dom\.DomElement\b=qx.dom.Element
+\bqx\.dom\.DomElementFromPoint\b=qx.dom.ElementFromPoint
+\bqx\.dom\.DomEventRegistration\b=qx.dom.EventRegistration
+\bqx\.dom\.DomIframe\b=qx.dom.Iframe
+\bqx\.dom\.DomLocation\b=qx.dom.Location
+\bqx\.dom\.DomNode\b=qx.dom.Node
+\bqx\.dom\.DomOffset\b=qx.dom.Offset
+\bqx\.dom\.DomScroll\b=qx.dom.Scroll
+\bqx\.dom\.DomScrollIntoView\b=qx.dom.ScrollIntoView
+\bqx\.dom\.DomStyle\b=qx.dom.Style
+\bqx\.dom\.DomStyleSheet\b=qx.dom.StyleSheet
+\bqx\.dom\.DomWindow\b=qx.dom.Window
+
+\bqx\.io\.image\.ImagePreloaderSystem\b=qx.io.image.PreloaderSystem
+\bqx\.io\.image\.ImagePreloader\b=qx.io.image.Preloader
+
+\bqx\.io\.remote\.RemoteExchange\b=qx.io.remote.Exchange
+\bqx\.io\.remote\.RemoteRequest\b=qx.io.remote.Request
+\bqx\.io\.remote\.RemoteRequestQueue\b=qx.io.remote.RequestQueue
+\bqx\.io\.remote\.RemoteResponse\b=qx.io.remote.Response
+
+\bqx\.lang\.Xml\b=qx.xml.Core
+
+\bqx\.theme\.appearance\.DefaultAppearanceTheme\b=qx.theme.appearance.Classic
+\bqx\.theme\.color\.SystemColorTheme\b=qx.theme.color.System
+\bqx\.theme\.color\.WindowsClassicColorTheme\b=qx.theme.color.WindowsClassic
+\bqx\.theme\.color\.WindowsLunaBlueColorTheme\b=qx.theme.color.WindowsLunaBlue
+\bqx\.theme\.color\.WindowsLunaGreenColorTheme\b=qx.theme.color.WindowsLunaGreen
+\bqx\.theme\.color\.WindowsLunaSilverColorTheme\b=qx.theme.color.WindowsLunaSilver
+\bqx\.theme\.color\.WindowsRoyaleColorTheme\b=qx.theme.color.WindowsRoyale
+\bqx\.theme\.icon\.NuvolaIconTheme\b=qx.theme.icon.Nuvola
+\bqx\.theme\.icon\.CrystalSvgIconTheme\b=qx.theme.icon.CrystalSvg
+\bqx\.theme\.widget\.WindowsWidgetTheme\b=qx.theme.widget.Windows
+
+\bqx\.ui\.listview\.ListViewHeaderSeparator\b=qx.ui.listview.HeaderSeparator
+\bqx\.ui\.listview\.ListViewHeaderCell\b=qx.ui.listview.HeaderCell
+\bqx\.ui\.listview\.ListViewHeader\b=qx.ui.listview.Header
+\bqx\.ui\.listview\.ListViewContentCellText\b=qx.ui.listview.ContentCellText
+\bqx\.ui\.listview\.ListViewContentCellLink\b=qx.ui.listview.ContentCellLink
+\bqx\.ui\.listview\.ListViewContentCellImage\b=qx.ui.listview.ContentCellImage
+\bqx\.ui\.listview\.ListViewContentCellIconHtml\b=qx.ui.listview.ContentCellIconHtml
+\bqx\.ui\.listview\.ListViewContentCellHtml\b=qx.ui.listview.ContentCellHtml
+
+\bqx\.ui\.menu\.MenuRadioButton\b=qx.ui.menu.RadioButton
+\bqx\.ui\.menu\.MenuLayout\b=qx.ui.menu.Layout
+\bqx\.ui\.menu\.MenuCheckBox\b=qx.ui.menu.CheckBox
+\bqx\.ui\.menu\.MenuButton\b=qx.ui.menu.Button
+\bqx\.ui\.menu\.MenuSeparator\b=qx.ui.menu.Separator
+\bqx\.ui\.menu\.MenuBar\b=qx.ui.menubar.MenuBar
+\bqx\.ui\.menu\.MenuBarButton\b=qx.ui.menubar.Button
+
+\bqx\.ui\.pageview\.buttonview\.ButtonViewPage\b=qx.ui.pageview.buttonview.Page
+\bqx\.ui\.pageview\.buttonview\.ButtonViewPane\b=qx.ui.pageview.buttonview.Pane
+\bqx\.ui\.pageview\.buttonview\.ButtonViewBar\b=qx.ui.pageview.buttonview.Bar
+\bqx\.ui\.pageview\.buttonview\.ButtonViewButton\b=qx.ui.pageview.buttonview.Button
+
+\bqx\.ui\.pageview\.tabview\.TabViewBar\b=qx.ui.pageview.tabview.Bar
+\bqx\.ui\.pageview\.tabview\.TabViewButton\b=qx.ui.pageview.tabview.Button
+\bqx\.ui\.pageview\.tabview\.TabViewPage\b=qx.ui.pageview.tabview.Page
+\bqx\.ui\.pageview\.tabview\.TabViewPane\b=qx.ui.pageview.tabview.Pane
+
+\bqx\.ui\.toolbar\.ToolBarButton\b=qx.ui.toolbar.Button
+\bqx\.ui\.toolbar\.ToolBarCheckBox\b=qx.ui.toolbar.CheckBox
+\bqx\.ui\.toolbar\.ToolBarMenuButton\b=qx.ui.toolbar.MenuButton
+\bqx\.ui\.toolbar\.ToolBarPart\b=qx.ui.toolbar.Part
+\bqx\.ui\.toolbar\.ToolBarPartHandle\b=qx.ui.toolbar.PartHandle
+\bqx\.ui\.toolbar\.ToolBarRadioButton\b=qx.ui.toolbar.RadioButton
+\bqx\.ui\.toolbar\.ToolBarSeparator\b=qx.ui.toolbar.Separator
+
+\bqx\.ui\.pageview\.AbstractPageViewBar\b=qx.ui.pageview.AbstractBar
+\bqx\.ui\.pageview\.AbstractPageViewButton\b=qx.ui.pageview.AbstractButton
+\bqx\.ui\.pageview\.AbstractPageViewPage\b=qx.ui.pageview.AbstractPage
+\bqx\.ui\.pageview\.AbstractPageViewPane\b=qx.ui.pageview.AbstractPane
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/01-prototypes.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/01-prototypes.dat
new file mode 100644
index 0000000000..2cdd4addd0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/01-prototypes.dat
@@ -0,0 +1,32 @@
+\.copy\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.clone\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.getFirst\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.getLast\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.insertAt\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.insertBefore\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.insertAfter\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.removeAt\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.removeAll\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.append\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.remove\b=Maybe old use of prototype function. Please use qx.lang.Array instead.
+\.contains\b=Maybe old use of prototype function. Please use qx.lang.Array/qx.lang.String instead.
+
+\.toCamelCase\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.trimLeft\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.trimRight\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.trim\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.stripTags\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.startsWith\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.endsWith\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.pad\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.toFirstUp\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+\.escapeRegexpChars\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+
+# All widget add/remove is affected. It's generally better to hide these because the string
+# methods are relatively rarely used.
+#\.add\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+#\.remove\b=Maybe old use of prototype function. Please use qx.lang.String instead.
+
+\.isInRange\b=Maybe old use of prototype function. Please use qx.lang.Number instead.
+\.isBetweenRange\b=Maybe old use of prototype function. Please use qx.lang.Number instead.
+\.limit\b=Maybe old use of prototype function. Please use qx.lang.Number instead.
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/02-obsolete.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/02-obsolete.dat
new file mode 100644
index 0000000000..65e5496e21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/info/02-obsolete.dat
@@ -0,0 +1,3 @@
+\bQxSet\b=Does not exist anymore. Maybe qx.manager.object.ObjectManager can be used instead.
+\bQxTransport\b=Does not exist anymore. Please use qx.io.remote.RemoteRequest now.
+\bQxXmlHttpTransport\b=Does not exist anymore. Please use qx.io.remote.RemoteRequest now.
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/01-classnames.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/01-classnames.dat
new file mode 100644
index 0000000000..4545fe3b7f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/01-classnames.dat
@@ -0,0 +1,209 @@
+\bQxConst\b=qx.Const
+\bQxClient\b=qx.sys.Client
+
+\bQxDefaultSettings\b=qx.core.DefaultSettings
+\bQxSettings\b=qx.core.Settings
+\bQxMain\b=qx.core.Main
+\bQxObject\b=qx.core.Object
+\bQxTarget\b=qx.core.Target
+\bQxApplication\b=qx.core.Init
+
+\bQxRangeManager\b=qx.type.Range
+\bQxSelectionStorage\b=qx.type.Selection
+\bQxFlashPlayerVersion\b=qx.type.Version
+
+\bQxTimer\b=qx.client.Timer
+\bQxNativeWindow\b=qx.client.NativeWindow
+\bQxClientWindow\b=qx.client.ClientWindow
+\bQxCommand\b=qx.client.Command
+\bQxBuilder\b=qx.client.Builder
+
+\bQxDebug\b=qx.dev.Debug
+\bQxTimeTracker\b=qx.dev.TimeTracker
+
+\bQxXmlExtras\b=qx.lang.Xml
+
+\bQxDataEvent\b=qx.event.type.DataEvent
+\bQxDomEvent\b=qx.event.type.DomEvent
+\bQxDragEvent\b=qx.event.type.DragEvent
+\bQxEvent\b=qx.event.type.Event
+\bQxFocusEvent\b=qx.event.type.FocusEvent
+\bQxKeyEvent\b=qx.event.type.KeyEvent
+\bQxMouseEvent\b=qx.event.type.MouseEvent
+
+\bQxDragAndDropManager\b=qx.event.handler.DragAndDropHandler
+\bQxEventManager\b=qx.event.handler.EventHandler
+\bQxFocusManager\b=qx.event.handler.FocusHandler
+
+\bQxRequest\b=qx.io.remote.RemoteRequest
+\bQxRequestQueue\b=qx.io.remote.RemoteRequestQueue
+\bQxResponse\b=qx.io.remote.RemoteResponse
+\bQxCommonTransport\b=qx.io.remote.AbstractRemoteTransport
+\bQxIframeTransport\b=qx.io.remote.IframeTransport
+\bQxXmlhttpTransport\b=qx.io.remote.XmlhttpTransport
+
+\bQxCookie\b=qx.io.local.CookieApi
+\bQxCookieStorage\b=qx.io.local.CookieTransport
+
+\bQxImagePreloader\b=qx.io.image.ImagePreloader
+\bQxImagePreloaderSystem\b=qx.io.image.ImagePreloaderSystem
+
+\bQxParent\b=qx.ui.core.Parent
+\bQxWidget\b=qx.ui.core.Widget
+\bQxClientDocument\b=qx.ui.core.ClientDocument
+\bQxBlocker\b=qx.ui.core.ClientDocumentBlocker
+
+\bQxAtom\b=qx.ui.basic.Atom
+\bQxImage\b=qx.ui.basic.Image
+\bQxLabel\b=qx.ui.basic.Label
+\bQxTerminator\b=qx.ui.basic.Terminator
+\bQxInline\b=qx.ui.basic.Inline
+\bQxHorizontalSpacer\b=qx.ui.basic.HorizontalSpacer
+\bQxVerticalSpacer\b=qx.ui.basic.VerticalSpacer
+
+\bQxBoxLayout\b=qx.ui.layout.BoxLayout
+\bQxCanvasLayout\b=qx.ui.layout.CanvasLayout
+\bQxDockLayout\b=qx.ui.layout.DockLayout
+\bQxFlowLayout\b=qx.ui.layout.FlowLayout
+\bQxHorizontalBoxLayout\b=qx.ui.layout.HorizontalBoxLayout
+\bQxVerticalBoxLayout\b=qx.ui.layout.VerticalBoxLayout
+\bQxGridLayout\b=qx.ui.layout.GridLayout
+
+\bQxTextField\b=qx.ui.form.TextField
+\bQxTextArea\b=qx.ui.form.TextArea
+\bQxPasswordField\b=qx.ui.form.PasswordField
+\bQxSpinner\b=qx.ui.form.Spinner
+\bQxButton\b=qx.ui.form.Button
+\bQxRepeatButton\b=qx.ui.form.RepeatButton
+\bQxComboBox\b=qx.ui.form.ComboBox
+\bQxList\b=qx.ui.form.List
+\bQxCheckBox\b=qx.ui.form.CheckBox
+\bQxRadioButton\b=qx.ui.form.RadioButton
+\bQxListItem\b=qx.ui.form.ListItem
+\bQxInputCheckIcon\b=qx.ui.form.InputCheckSymbol
+
+\bQxFieldSet\b=qx.ui.groupbox.GroupBox
+\bQxCheckBoxFieldSet\b=qx.ui.groupbox.CheckGroupBox
+\bQxRadioButtonFieldSet\b=qx.ui.groupbox.RadioGroupBox
+
+\bQxListView\b=qx.ui.listview.ListView
+\bQxListViewContentCellHtml\b=qx.ui.listview.ListViewContentCellHtml
+\bQxListViewContentCellIconHtml\b=qx.ui.listview.ListViewContentCellIconHtml
+\bQxListViewContentCellImage\b=qx.ui.listview.ListViewContentCellImage
+\bQxListViewContentCellLink\b=qx.ui.listview.ListViewContentCellLink
+\bQxListViewContentCellText\b=qx.ui.listview.ListViewContentCellText
+\bQxListViewHeader\b=qx.ui.listview.ListViewHeader
+\bQxListViewHeaderCell\b=qx.ui.listview.ListViewHeaderCell
+\bQxListViewHeaderSeparator\b=qx.ui.listview.ListViewHeaderSeparator
+\bQxListViewPane\b=qx.ui.listview.ListViewPane
+
+\bQxWindow\b=qx.ui.window.Window
+
+\bQxPopup\b=qx.ui.popup.Popup
+\bQxPopupAtom\b=qx.ui.popup.PopupAtom
+\bQxToolTip\b=qx.ui.popup.ToolTip
+
+\bQxMenu\b=qx.ui.menu.Menu
+\bQxMenuBar\b=qx.ui.menu.MenuBar
+\bQxMenuBarButton\b=qx.ui.menu.MenuBarButton
+\bQxMenuButton\b=qx.ui.menu.MenuButton
+\bQxMenuCheckBox\b=qx.ui.menu.MenuCheckBox
+\bQxMenuLayout\b=qx.ui.menu.MenuLayout
+\bQxMenuRadioButton\b=qx.ui.menu.MenuRadioButton
+\bQxMenuSeparator\b=qx.ui.menu.MenuSeparator
+
+\bQxCommonView\b=qx.ui.pageview.AbstractPageView
+\bQxCommonViewBar\b=qx.ui.pageview.AbstractPageViewBar
+\bQxCommonViewButton\b=qx.ui.pageview.AbstractPageViewButton
+\bQxCommonViewPage\b=qx.ui.pageview.AbstractPageViewPage
+\bQxCommonViewPane\b=qx.ui.pageview.AbstractPageViewPane
+
+\bQxTabView\b=qx.ui.pageview.tabview.TabView
+\bQxTabViewBar\b=qx.ui.pageview.tabview.TabViewBar
+\bQxTabViewButton\b=qx.ui.pageview.tabview.TabViewButton
+\bQxTabViewPage\b=qx.ui.pageview.tabview.TabViewPage
+\bQxTabViewPane\b=qx.ui.pageview.tabview.TabViewPane
+
+\bQxBarView\b=qx.ui.pageview.buttonview.ButtonView
+\bQxBarViewBar\b=qx.ui.pageview.buttonview.ButtonViewBar
+\bQxBarViewButton\b=qx.ui.pageview.buttonview.ButtonViewButton
+\bQxBarViewPage\b=qx.ui.pageview.buttonview.ButtonViewPage
+\bQxBarViewPane\b=qx.ui.pageview.buttonview.ButtonViewPane
+
+\bQxToolBar\b=qx.ui.toolbar.ToolBar
+\bQxToolBarButton\b=qx.ui.toolbar.ToolBarButton
+\bQxToolBarCheckBox\b=qx.ui.toolbar.ToolBarCheckBox
+\bQxToolBarMenuButton\b=qx.ui.toolbar.ToolBarMenuButton
+\bQxToolBarPart\b=qx.ui.toolbar.ToolBarPart
+\bQxToolBarPartHandle\b=qx.ui.toolbar.ToolBarPartHandle
+\bQxToolBarRadioButton\b=qx.ui.toolbar.ToolBarRadioButton
+\bQxToolBarSeparator\b=qx.ui.toolbar.ToolBarSeparator
+
+\bQxTree\b=qx.ui.tree.Tree
+\bQxTreeElement\b=qx.ui.tree.AbstractTreeElement
+\bQxTreeFile\b=qx.ui.tree.TreeFile
+\bQxTreeFolder\b=qx.ui.tree.TreeFolder
+
+\bQxColorSelector\b=qx.ui.component.ColorSelector
+
+\bQxCanvasLayoutImpl\b=qx.renderer.layout.CanvasLayoutImpl
+\bQxDockLayoutImpl\b=qx.renderer.layout.DockLayoutImpl
+\bQxFlowLayoutImpl\b=qx.renderer.layout.FlowLayoutImpl
+\bQxGridLayoutImpl\b=qx.renderer.layout.GridLayoutImpl
+\bQxHorizontalBoxLayoutImpl\b=qx.renderer.layout.HorizontalBoxLayoutImpl
+\bQxLayoutImpl\b=qx.renderer.layout.LayoutImpl
+\bQxMenuButtonLayoutImpl\b=qx.renderer.layout.MenuButtonLayoutImpl
+\bQxMenuLayoutImpl\b=qx.renderer.layout.MenuLayoutImpl
+\bQxVerticalBoxLayoutImpl\b=qx.renderer.layout.VerticalBoxLayoutImpl
+
+\bQxBorder\.presets\b=qx.renderer.border.BorderPresets
+\bQxBorderObject\.presets\b=qx.renderer.border.BorderPresets
+\bQxBorder\b=qx.renderer.border.Border
+\bQxBorderCache\b=qx.renderer.border.BorderCache
+\bQxBorderObject\b=qx.renderer.border.BorderObject
+\bQxBorderPresets\b=qx.renderer.border.BorderPresets
+
+\bQxColor\b=qx.renderer.color.Color
+\bQxColorCache\b=qx.renderer.color.ColorCache
+\bQxColorObject\b=qx.renderer.color.ColorObject
+\bQxColorUtil\b=qx.util.ColorUtil
+
+\bQxFont\b=qx.renderer.font.Font
+\bQxFontCache\b=qx.renderer.font.FontCache
+\bQxFontObject\b=qx.renderer.font.FontObject
+
+\bQxAppearanceTheme\b=qx.renderer.theme.AppearanceTheme
+\bQxColorTheme\b=qx.renderer.theme.ColorTheme
+\bQxIconTheme\b=qx.renderer.theme.IconTheme
+\bQxWidgetTheme\b=qx.renderer.theme.WidgetTheme
+
+\bQxManager\b=qx.manager.object.ObjectManager
+\bQxAppearanceManager\b=qx.manager.object.AppearanceManager
+\bQxColorManager\b=qx.manager.object.ColorManager
+\bQxPopupManager\b=qx.manager.object.PopupManager
+\bQxMenuManager\b=qx.manager.object.MenuManager
+\bQxToolTipManager\b=qx.manager.object.ToolTipManager
+\bQxWindowManager\b=qx.manager.object.WindowManager
+\bQxImageManager\b=qx.manager.object.ImageManager
+\bQxImagePreloaderManager\b=qx.manager.object.ImagePreloaderManager
+
+\bQxSelectionManager\b=qx.manager.selection.SelectionManager
+\bQxDomSelectionManager\b=qx.manager.selection.DomSelectionManager
+\bQxTreeSelectionManager\b=qx.manager.selection.TreeSelectionManager
+\bQxVirtualSelectionManager\b=qx.manager.selection.VirtualSelectionManager
+\bQxRadioManager\b=qx.manager.selection.RadioManager
+
+\bQxFlash\b=qx.ui.embed.Flash
+\bQxIframe\b=qx.ui.embed.Iframe
+\bQxGallery\b=qx.ui.embed.Gallery
+\bQxGalleryList\b=qx.ui.embed.GalleryList
+\bQxHtml\b=qx.ui.embed.HtmlEmbed
+\bQxIconHtml\b=qx.ui.embed.IconHtmlEmbed
+\bQxLink\b=qx.ui.embed.LinkEmbed
+\bQxText\b=qx.ui.embed.TextEmbed
+\bQxNode\b=qx.ui.embed.NodeEmbed
+
+\bQxTextile\b=qx.util.Textile.textilize
+\bQxCompare\b=qx.util.Compare
+\bQxFormUtils\b=qx.util.FormUtil
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/02-domapi.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/02-domapi.dat
new file mode 100644
index 0000000000..bae7bf0be8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/02-domapi.dat
@@ -0,0 +1,38 @@
+qx.dom.getComputedOuter=qx.dom.DomDimension.getOuter
+qx.dom.getComputedInner=qx.dom.DomDimension.getInner
+qx.dom.getComputedArea=qx.dom.DomDimension.getArea
+qx.dom.getComputedBox=qx.dom.DomDimension.getBox
+qx.dom.getComputedInset=qx.dom.DomDimension.getInset
+qx.dom.getComputedScrollBar=qx.dom.DomDimension.getScrollBar
+
+qx.dom.cleanElementWhitespace=qx.dom.DomElement.cleanWhitespace
+qx.dom.isElementEmpty=qx.dom.DomElement.isEmpty
+
+qx.dom.getElementFromPoint=qx.dom.DomElementFromPoint.getElementFromPoint
+qx.dom.getElementAbsolutePointChecker=qx.dom.DomElementFromPoint.getElementAbsolutePointChecker
+
+qx.dom.addEventListener=qx.dom.DomEventRegistration.addEventListener
+qx.dom.removeEventListener=qx.dom.DomEventRegistration.removeEventListener
+
+qx.dom.getIframe=qx.dom.DomIframe.get
+
+qx.dom.getComputedPage=qx.dom.DomLocation.getPage
+qx.dom.getComputedClient=qx.dom.DomLocation.getClient
+qx.dom.getComputedScreen=qx.dom.DomLocation.getScreen
+
+qx.dom.getOffset=qx.dom.DomOffset.get
+qx.dom.getScroll=qx.dom.DomScroll.get
+qx.dom.scrollIntoView=qx.dom.DomScrollIntoView.scroll
+
+qx.dom.getComputedStyle=qx.dom.DomStyle.getStyle
+qx.dom.getComputedBorder=qx.dom.DomStyle.getBorder
+qx.dom.getComputedMargin=qx.dom.DomStyle.getMargin
+qx.dom.getComputedPadding=qx.dom.DomStyle.getPadding
+
+qx.dom.createStyleElement=qx.dom.DomStyleSheet.createElement
+qx.dom.addCssRule=qx.dom.DomStyleSheet.addRule
+qx.dom.removeCssRule=qx.dom.DomStyleSheet.removeRule
+qx.dom.removeAllCssRules=qx.dom.DomStyleSheet.removeAllRules
+
+qx.dom.getWindowInner=qx.dom.DomWindow.getInner
+qx.dom.getClientScroll=qx.dom.DomWindow.getScroll
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/03-const.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/03-const.dat
new file mode 100644
index 0000000000..ab9a842d8f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/03-const.dat
@@ -0,0 +1,55 @@
+qx.Const.NAMESPACE_=qx.constant.Net.NAMESPACE_
+qx.Const.REQUEST_STATE_=qx.constant.Net.STATE_
+qx.Const.PROTOCOL_=qx.constant.Net.PROTOCOL_
+qx.Const.URI_=qx.constant.Net.URI_
+qx.Const.METHOD_=qx.constant.Net.METHOD_
+qx.Const.CORE_=qx.constant.Core.
+qx.Const.NODE_=qx.constant.Node.
+qx.Const.BORDER_STYLE_=qx.renderer.border.Border.STYLE_
+qx.Const.FONT_STYLE_=qx.renderer.font.Font.STYLE_
+qx.Const.HTML_=qx.constant.Html.
+qx.Const.TYPEOF_=qx.constant.Type.
+qx.Const.IMAGE_BLANK=qx.manager.object.ImageManager.BLANK
+qx.Const.CURSOR_=qx.constant.Style.CURSOR_
+qx.Const.OVERFLOW_VALUE_=qx.constant.Style.OVERFLOW_
+qx.Const.MIMETYPE_=qx.constant.Mime.
+qx.Const.ORIENTATION_=qx.constant.Layout.ORIENTATION_
+qx.Const.ALIGN_=qx.constant.Layout.ALIGN_
+qx.Const.STATE_OVER=qx.ui.core.Widget.STATE_OVER
+qx.Const.STATE_FOCUSED=qx.ui.core.Widget.STATE_FOCUSED
+qx.Const.STATE_DISABLED=qx.ui.core.Widget.STATE_DISABLED
+qx.Const.STATE_CHECKED=qx.ui.form.Button.STATE_CHECKED
+qx.Const.STATE_PRESSED=qx.ui.form.Button.STATE_PRESSED
+qx.Const.STATE_ABANDONED=qx.ui.form.Button.STATE_ABANDONED
+qx.Const.STATE_SELECTED=qx.manager.selection.SelectionManager.STATE_SELECTED
+qx.Const.STATE_ANCHOR=qx.manager.selection.SelectionManager.STATE_ANCHOR
+qx.Const.STATE_LEAD=qx.manager.selection.SelectionManager.STATE_LEAD
+qx.Const.STATE_ACTIVE=qx.ui.window.Window.STATE_ACTIVE
+qx.Const.STATE_MAXIMIZED=qx.ui.window.Window.STATE_MAXIMIZED
+
+qx.Const.PROPERTY_CLASSNAME=qx.ui.core.Widget.PROPERTY_CLASSNAME
+qx.Const.PROPERTY_BORDERX=qx.ui.core.Widget.PROPERTY_BORDERX
+qx.Const.PROPERTY_BORDERY=qx.ui.core.Widget.PROPERTY_BORDERY
+qx.Const.PROPERTY_BORDERWIDTHX=qx.ui.core.Widget.PROPERTY_BORDERWIDTHX
+qx.Const.PROPERTY_BORDERWIDTHY=qx.ui.core.Widget.PROPERTY_BORDERWIDTHY
+qx.Const.PROPERTY_PARENT_PADDINGLEFT=qx.ui.core.Widget.PROPERTY_PARENT_PADDINGLEFT
+qx.Const.PROPERTY_PARENT_PADDINGRIGHT=qx.ui.core.Widget.PROPERTY_PARENT_PADDINGRIGHT
+qx.Const.PROPERTY_PARENT_PADDINGTOP=qx.ui.core.Widget.PROPERTY_PARENT_PADDINGTOP
+qx.Const.PROPERTY_PARENT_PADDINGBOTTOM=qx.ui.core.Widget.PROPERTY_PARENT_PADDINGBOTTOM
+
+qx.Const.PROPERTY_FILTER=qx.constant.Style.PROPERTY_FILTER
+qx.Const.PROPERTY_DISPLAY=qx.constant.Style.PROPERTY_DISPLAY
+qx.Const.PROPERTY_POSITION=qx.constant.Style.PROPERTY_POSITION
+qx.Const.PROPERTY_VISIBILITY=qx.constant.Style.PROPERTY_VISIBILITY
+qx.Const.PROPERTY_DISABLED=qx.constant.Style.PROPERTY_DISABLED
+qx.Const.PROPERTY_LINEHEIGHT=qx.constant.Style.PROPERTY_LINEHEIGHT
+qx.Const.PROPERTY_TEXTALIGN=qx.constant.Style.PROPERTY_TEXTALIGN
+qx.Const.PROPERTY_WHITESPACE=qx.constant.Style.PROPERTY_WHITESPACE
+qx.Const.PROPERTY_PADDING=qx.constant.Style.PROPERTY_PADDING
+qx.Const.PROPERTY_OVERFLOW_BOTH=qx.constant.Style.PROPERTY_OVERFLOW_BOTH
+qx.Const.PROPERTY_OVERFLOW_TEXT=qx.constant.Style.PROPERTY_OVERFLOW_TEXT
+qx.Const.PROPERTY_OVERFLOW_HORIZONTAL=qx.constant.Style.PROPERTY_OVERFLOW_HORIZONTAL
+qx.Const.PROPERTY_OVERFLOW_VERTICAL=qx.constant.Style.PROPERTY_OVERFLOW_VERTICAL
+
+# Should be the last one
+qx.Const.PROPERTY_=qx.OO.PROPERTY_ \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/04-events.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/04-events.dat
new file mode 100644
index 0000000000..7bdd26f42c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/04-events.dat
@@ -0,0 +1,56 @@
+qx.Const.EVENT_TYPE_MOUSEOVER=qx.constant.Event.MOUSEOVER
+qx.Const.EVENT_TYPE_MOUSEMOVE=qx.constant.Event.MOUSEMOVE
+qx.Const.EVENT_TYPE_MOUSEOUT=qx.constant.Event.MOUSEOUT
+qx.Const.EVENT_TYPE_MOUSEDOWN=qx.constant.Event.MOUSEDOWN
+qx.Const.EVENT_TYPE_MOUSEUP=qx.constant.Event.MOUSEUP
+qx.Const.EVENT_TYPE_MOUSEWHEEL=qx.constant.Event.MOUSEWHEEL
+qx.Const.EVENT_TYPE_CLICK=qx.constant.Event.CLICK
+qx.Const.EVENT_TYPE_DBLCLICK=qx.constant.Event.DBLCLICK
+qx.Const.EVENT_TYPE_CONTEXTMENU=qx.constant.Event.CONTEXTMENU
+qx.Const.EVENT_TYPE_KEYDOWN=qx.constant.Event.KEYDOWN
+qx.Const.EVENT_TYPE_KEYPRESS=qx.constant.Event.KEYPRESS
+qx.Const.EVENT_TYPE_KEYUP=qx.constant.Event.KEYUP
+
+qx.Const.EVENT_TYPE_BLUR=qx.constant.Event.BLUR
+qx.Const.EVENT_TYPE_FOCUS=qx.constant.Event.FOCUS
+qx.Const.EVENT_TYPE_SELECT=qx.constant.Event.SELECT
+qx.Const.EVENT_TYPE_SCROLL=qx.constant.Event.SCROLL
+qx.Const.EVENT_TYPE_INPUT=qx.constant.Event.INPUT
+qx.Const.EVENT_TYPE_CHANGE=qx.constant.Event.CHANGE
+
+qx.Const.EVENT_TYPE_ERROR=qx.constant.Event.ERROR
+qx.Const.EVENT_TYPE_RESIZE=qx.constant.Event.RESIZE
+qx.Const.EVENT_TYPE_INTERVAL=qx.constant.Event.INTERVAL
+qx.Const.EVENT_TYPE_EXECUTE=qx.constant.Event.EXECUTE
+qx.Const.EVENT_TYPE_CREATE=qx.constant.Event.CREATE
+
+qx.Const.EVENT_TYPE_BEFOREAPPEAR=qx.constant.Event.BEFOREAPPEAR
+qx.Const.EVENT_TYPE_APPEAR=qx.constant.Event.APPEAR
+qx.Const.EVENT_TYPE_BEFOREDISAPPEAR=qx.constant.Event.BEFOREDISAPPEAR
+qx.Const.EVENT_TYPE_DISAPPEAR=qx.constant.Event.DISAPPEAR
+qx.Const.EVENT_TYPE_BEFOREINSERTDOM=qx.constant.Event.BEFOREINSERTDOM
+qx.Const.EVENT_TYPE_INSERTDOM=qx.constant.Event.INSERTDOM
+qx.Const.EVENT_TYPE_BEFOREREMOVEDOM=qx.constant.Event.BEFOREREMOVEDOM
+qx.Const.EVENT_TYPE_REMOVEDOM=qx.constant.Event.REMOVEDOM
+
+qx.Const.EVENT_TYPE_LOAD=qx.constant.Event.LOAD
+qx.Const.EVENT_TYPE_UNLOAD=qx.constant.Event.UNLOAD
+qx.Const.EVENT_TYPE_BEFOREUNLOAD=qx.constant.Event.BEFOREUNLOAD
+qx.Const.EVENT_TYPE_SUBMIT=qx.constant.Event.SUBMIT
+
+qx.Const.EVENT_TYPE_CREATED=qx.constant.Event.CREATED
+qx.Const.EVENT_TYPE_CONFIGURED=qx.constant.Event.CONFIGURED
+qx.Const.EVENT_TYPE_QUEUED=qx.constant.Event.QUEUED
+qx.Const.EVENT_TYPE_SENDING=qx.constant.Event.SENDING
+qx.Const.EVENT_TYPE_RECEIVING=qx.constant.Event.RECEIVING
+qx.Const.EVENT_TYPE_COMPLETED=qx.constant.Event.COMPLETED
+qx.Const.EVENT_TYPE_ABORTED=qx.constant.Event.ABORTED
+qx.Const.EVENT_TYPE_FAILED=qx.constant.Event.FAILED
+qx.Const.EVENT_TYPE_TIMEOUT=qx.constant.Event.TIMEOUT
+
+qx.Const.EVENT_TYPE_DRAGDROP=qx.constant.Event.DRAGDROP
+qx.Const.EVENT_TYPE_DRAGOVER=qx.constant.Event.DRAGOVER
+qx.Const.EVENT_TYPE_DRAGOUT=qx.constant.Event.DRAGOUT
+qx.Const.EVENT_TYPE_DRAGMOVE=qx.constant.Event.DRAGMOVE
+qx.Const.EVENT_TYPE_DRAGSTART=qx.constant.Event.DRAGSTART
+qx.Const.EVENT_TYPE_DRAGEND=qx.constant.Event.DRAGEND
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/05-util.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/05-util.dat
new file mode 100644
index 0000000000..d26a57a90f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/05-util.dat
@@ -0,0 +1,47 @@
+\bQxUtil\.returnTrue\b = qx.util.Return.returnTrue
+\bQxUtil\.returnFalse\b = qx.util.Return.returnFalse
+\bQxUtil\.returnNull\b = qx.util.Return.returnNull
+\bQxUtil\.returnThis\b = qx.util.Return.returnThis
+\bQxUtil\.returnZero\b = qx.util.Return.returnZero
+\bQxUtil\.returnNegativeIndex\b = qx.util.Return.returnNegativeIndex
+
+\bQxUtil\.isValid\b = qx.util.Validation.isValid
+\bQxUtil\.isInvalid\b = qx.util.Validation.isInvalid
+\bQxUtil\.isValidNumber\b = qx.util.Validation.isValidNumber
+\bQxUtil\.isInvalidNumber\b = qx.util.Validation.isInvalidNumber
+\bQxUtil\.isValidString\b = qx.util.Validation.isValidString
+\bQxUtil\.isInvalidString\b = qx.util.Validation.isInvalidString
+\bQxUtil\.isValidArray\b = qx.util.Validation.isValidArray
+\bQxUtil\.isInvalidArray\b = qx.util.Validation.isInvalidArray
+\bQxUtil\.isValidObject\b = qx.util.Validation.isValidObject
+\bQxUtil\.isInvalidObject\b = qx.util.Validation.isInvalidObject
+\bQxUtil\.isValidNode\b = qx.util.Validation.isValidNode
+\bQxUtil\.isInvalidNode\b = qx.util.Validation.isInvalidNode
+\bQxUtil\.isValidElement\b = qx.util.Validation.isValidElement
+\bQxUtil\.isInvalidElement\b = qx.util.Validation.isInvalidElement
+\bQxUtil\.isValidFunction\b = qx.util.Validation.isValidFunction
+\bQxUtil\.isInvalidFunction\b = qx.util.Validation.isInvalidFunction
+\bQxUtil\.isValidBoolean\b = qx.util.Validation.isValidBoolean
+\bQxUtil\.isInvalidBoolean\b = qx.util.Validation.isInvalidBoolean
+\bQxUtil\.isValidStringOrNumber\b = qx.util.Validation.isValidStringOrNumber
+\bQxUtil\.isInvalidStringOrNumber\b = qx.util.Validation.isInvalidStringOrNumber
+
+\bQxUtil\._normalizeUmlautsRegExp\b = qx.util.Normalization._umlautsRegExp
+\bQxUtil\._normalizeUmlautsShortData\b = qx.util.Normalization._umlautsShortData
+\bQxUtil\._normalizeUmlautsShort\b = qx.util.Normalization._umlautsShort
+\bQxUtil\.normalizeUmlautsShort\b = qx.util.Normalization.umlautsShort
+\bQxUtil\._normalizeUmlautsLongData\b = qx.util.Normalization._umlautsLongData
+\bQxUtil\._normalizeUmlautsLong\b = qx.util.Normalization._umlautsLong
+\bQxUtil\.normalizeUmlautsLong\b = qx.util.Normalization.umlautsLong
+
+\bQxUtil\.isObjectEmpty\b = qx.lang.Object.isEmpty
+\bQxUtil\.isObjectMinLength\b = qx.lang.Object.hasMinLength
+\bQxUtil\.getObjectLength\b = qx.lang.Object.getLength
+\bQxUtil\.convertObjectKeysToArray\b = qx.lang.Object.getKeys
+\bQxUtil\.convertObjectKeysToString\b = qx.lang.Object.getKeysAsString
+\bQxUtil\.convertObjectValuesToArray\b = qx.lang.Object.getValues
+\bQxUtil\.convertArgumentsToArray\b = qx.lang.Array.fromArguments
+\bQxUtil\.convertShortHandToArray\b = qx.lang.Array.fromShortHand
+\bQxUtil\.mergeObjectWith\b = qx.lang.Object.mergeWith
+\bQxUtil\.mergeObjects\b = qx.lang.Object.merge
+\bQxUtil\.copyObject\b = qx.lang.Object.copy
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/06-main.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/06-main.dat
new file mode 100644
index 0000000000..acbd2a652c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.6/patches/06-main.dat
@@ -0,0 +1,7 @@
+window.application.main\s*\=\s*function\(\)[^\0]*?\{\s* = qx.core.Init.getInstance().defineMain(function() {\n
+
+\}\;[\n\s]*<\/script> = });</script>
+
+#this\.getClientWindow\(\)\.getClientDocument\(\) = qx.ui.core.ClientDocument.getInstance()
+
+#this\.add = qx.ui.core.ClientDocument.getInstance().add \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.7/patch.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.7/patch.py
new file mode 100755
index 0000000000..885cafda8d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/migration/0.7/patch.py
@@ -0,0 +1,381 @@
+#!/usr/bin/env python
+
+import sys, os
+
+# reconfigure path to import modules from modules subfolder
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "../../modules"))
+
+import tree, compiler, comment
+
+
+
+
+
+
+def getAssignment(elem):
+ if elem.parent.type == "right" and elem.parent.parent.type == "assignment":
+ return elem.parent.parent
+
+ return None
+
+
+def getName(elem):
+ # find last identifier
+ last = elem.getLastChild(False, True)
+
+ if last.type == "identifier":
+ return last.get("name")
+
+
+def getMode(var, classname):
+ # find last identifier
+ last = var.getLastChild(False, True)
+ prev = last.getPreviousSibling(False, True)
+
+ if prev.type == "identifier":
+ mode = prev.get("name")
+
+ if mode == "Proto":
+ return "members"
+ elif mode == "Class":
+ return "statics"
+
+ combined = []
+ length = var.getChildrenLength(True)
+ pos = length - 1
+ for iden in var.children:
+ if iden.type == "identifier":
+ combined.append(iden.get("name"))
+
+ # if variable starts with the classname and has one unique identifier afterwards
+ if ".".join(combined) == classname and pos == 1:
+ return "statics"
+
+ pos -= 1
+
+ return None
+
+
+def getNameOfAssignment(elem):
+ name = None
+
+ if elem.hasChild("left"):
+ left = elem.getChild("left")
+
+ if left.hasChild("variable"):
+ name = getName(left.getChild("variable"))
+
+ return name
+
+
+def getModeOfAssignment(elem, classname):
+ mode = None
+
+ if elem.hasChild("left"):
+ left = elem.getChild("left")
+
+ if left.hasChild("variable"):
+ var = left.getChild("variable")
+ mode = getMode(var, classname)
+
+ return mode
+
+
+def getAndRemovePropertyName(definition):
+ for keyValue in definition.children:
+ if keyValue.type == "keyvalue" and keyValue.get("key") == "name":
+ name = keyValue.getChild("value").getChild("constant").get("value")
+ keyValue.parent.removeChild(keyValue)
+ return name
+
+ print " * Could not extract property name!"
+ return None
+
+
+def createPair(key, value, commentParent=None):
+ par = tree.Node("keyvalue")
+ sub = tree.Node("value")
+
+ par.set("key", key)
+ par.addChild(sub)
+ sub.addChild(value)
+
+ if commentParent and commentParent.hasChild("commentsBefore"):
+ par.addChild(commentParent.getChild("commentsBefore"))
+
+ return par
+
+
+def patch(id, node):
+ if not node.hasChildren():
+ return False
+
+ classDefine, className, classMap, settingsMap, propertiesMap, membersMap, staticsMap = createClassDefine(id)
+ errorCounter = 0
+ pos = 0
+
+ while node.hasChildren() and pos < len(node.children):
+ child = node.children[pos]
+ breakBefore = child.get("breakBefore")
+ pos += 1
+
+ # Add instance and static methods
+ if child.type == "assignment":
+ if child.hasChild("right"):
+ right = child.getChild("right")
+ elem = right.getFirstChild(True, True)
+
+ name = getNameOfAssignment(child)
+ mode = getModeOfAssignment(child, id)
+
+ if mode in [ "members", "statics" ]:
+ if mode == "members":
+ pair = createPair(name, elem, child)
+
+ if breakBefore:
+ pair.set("breakBefore", True)
+
+ membersMap.addChild(pair)
+
+ elif mode == "statics":
+ # Special Handling of old singleton definition
+ if name == "getInstance":
+ pair = createPair("singleton", createConstant("boolean", "true"))
+ pair.addChild(createBlockComment("singleton"))
+
+ if breakBefore:
+ pair.set("breakBefore", True)
+
+ classMap.addChild(pair, 1)
+
+ else:
+ pair = createPair(name, elem, child)
+
+ if breakBefore:
+ pair.set("breakBefore", True)
+
+ staticsMap.addChild(pair)
+
+ node.removeChild(child)
+ pos -= 1
+
+ elif child.type == "call":
+ oper = child.getChild("operand")
+ var = oper.getChild("variable")
+
+ if var:
+ lastIdentifier = var.getLastChild(False, True)
+ if lastIdentifier.type == "identifier":
+ name = lastIdentifier.get("name")
+ params = child.getChild("params")
+
+ if name in [ "addProperty", "changeProperty", "addCachedProperty", "addFastProperty" ]:
+ definition = params.getFirstChild(False, True)
+
+ if definition.type == "map":
+ if lastIdentifier.get("name") == "addFastProperty":
+ definition.addChild(createPair("fast", createConstant("boolean", "true")))
+ elif lastIdentifier.get("name") == "addCachedProperty":
+ definition.addChild(createPair("cached", createConstant("boolean", "true")))
+
+ name = getAndRemovePropertyName(definition)
+ pair = createPair(name, definition, child)
+
+ if breakBefore:
+ pair.set("breakBefore", True)
+
+ propertiesMap.addChild(pair)
+
+ node.removeChild(child)
+ pos -= 1
+
+ elif name == "setDefault":
+ nameNode = params.getChildByPosition(0, True)
+ valueNode = params.getChildByPosition(1, True)
+
+ name = nameNode.get("value")
+
+ pair = createPair(name, valueNode, child)
+
+ if breakBefore:
+ pair.set("breakBefore", True)
+
+ settingsMap.addChild(pair)
+
+ node.removeChild(child)
+ pos -= 1
+
+ elif name == "defineClass":
+ if params.getFirstChild(False, True).get("value") != id:
+ print " - The class seems to have a wrong definition!"
+
+ # 3 params = name, superclass, constructor
+ # 2 params = name, map
+ # 1 param = name
+
+ # Move class comment
+ if child.hasChild("commentsBefore"):
+ classDefine.addChild(child.getChild("commentsBefore"))
+
+ childrenLength = params.getChildrenLength(True)
+
+ if childrenLength == 2:
+ statics_new = params.getChildByPosition(1, True, True)
+
+ while statics_new.hasChildren():
+ staticsMap.addChild(statics_new.getFirstChild())
+
+ node.removeChild(child)
+ pos -= 1
+
+ elif childrenLength == 3:
+ ext = params.getChildByPosition(1, True, True)
+ construct = params.getChildByPosition(2, True, True)
+
+ extendPair = createPair("extend", ext)
+ constructPair = createPair("construct", construct)
+
+ extendPair.addChild(createBlockComment("superclass"))
+ constructPair.addChild(createBlockComment("constructor"))
+
+ classMap.addChild(extendPair, 0)
+ classMap.addChild(constructPair, 1)
+
+ node.removeChild(child)
+ pos -= 1
+
+ elif name == "define":
+ print " - Class is already up-to-date."
+ return False
+
+ # Post-Check
+ if child.parent == node:
+ # print " - Could not move element %s at line %s" % (child.type, child.get("line"))
+ errorCounter += 1
+
+
+ # Remove empty maps
+ if settingsMap.getChildrenLength() == 0:
+ keyvalue = settingsMap.parent.parent
+ classMap.removeChild(keyvalue)
+
+ if propertiesMap.getChildrenLength() == 0:
+ keyvalue = propertiesMap.parent.parent
+ classMap.removeChild(keyvalue)
+
+ if membersMap.getChildrenLength() == 0:
+ keyvalue = membersMap.parent.parent
+ classMap.removeChild(keyvalue)
+
+ if staticsMap.getChildrenLength() == 0:
+ keyvalue = staticsMap.parent.parent
+ classMap.removeChild(keyvalue)
+
+ # Add new class definition
+ node.addChild(classDefine, 0)
+
+
+
+
+ if errorCounter > 0:
+ print " - Could not convert %s elements." % errorCounter
+
+ # Debug
+ # print compiler.compile(node)
+ # print tree.nodeToXmlString(node)
+
+ # Return Modification
+ return True
+
+
+def createConstant(type, value):
+ constant = tree.Node("constant")
+ constant.set("constantType", type)
+ constant.set("value", value)
+
+ if type == "string":
+ constant.set("detail", "doublequotes")
+
+ return constant
+
+
+
+def createVariable(l):
+ var = tree.Node("variable")
+
+ for name in l:
+ iden = tree.Node("identifier")
+ iden.set("name", name)
+ var.addChild(iden)
+
+ return var
+
+def createClassDefineCore(id):
+ call = tree.Node("call")
+ oper = tree.Node("operand")
+ para = tree.Node("params")
+ con = createConstant("string", id)
+ args = tree.Node("map")
+
+ call.addChild(oper)
+ call.addChild(para)
+
+ oper.addChild(createVariable(["qx", "Clazz", "define"]))
+
+ para.addChild(con)
+ para.addChild(args)
+
+ return call, con, args
+
+
+def createClassDefine(id):
+ classDefine, className, classMap = createClassDefineCore(id)
+
+ settingsMap = tree.Node("map")
+ settingsPair = createPair("settings", settingsMap)
+
+ propertiesMap = tree.Node("map")
+ propertiesPair = createPair("properties", propertiesMap)
+
+ membersMap = tree.Node("map")
+ membersPair = createPair("members", membersMap)
+
+ staticsMap = tree.Node("map")
+ staticsPair = createPair("statics", staticsMap)
+
+ settingsPair.addChild(createBlockComment("settings"))
+ propertiesPair.addChild(createBlockComment("properties"))
+ membersPair.addChild(createBlockComment("members"))
+ staticsPair.addChild(createBlockComment("statics"))
+
+ classMap.addChild(settingsPair)
+ classMap.addChild(propertiesPair)
+ classMap.addChild(membersPair)
+ classMap.addChild(staticsPair)
+
+ return classDefine, className, classMap, settingsMap, propertiesMap, membersMap, staticsMap
+
+
+def createBlockComment(txt):
+ l = "*****************************************************************************"
+
+ s = ""
+ s += "/*\n"
+ s += "%s\n" % l
+ s += "**** %s %s\n" % (txt.upper(), "*" * (len(l) - len(txt) - 6))
+ s += "%s\n" % l
+ s += "*/"
+
+ bef = tree.Node("commentsBefore")
+ com = tree.Node("comment")
+
+ bef.addChild(com)
+
+ com.set("multiline", True)
+ com.set("connection", "before")
+ com.set("text", s)
+ com.set("detail", comment.getFormat(s))
+
+ return bef
+
+
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.py
new file mode 100755
index 0000000000..3d7bee8da5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.py
@@ -0,0 +1,779 @@
+#!/usr/bin/env python
+
+import sys, os, re, optparse
+import tree, treegenerator, tokenizer, comment
+
+
+
+class DocException (Exception):
+ def __init__ (self, msg, syntaxItem):
+ Exception.__init__(self, msg)
+ self.node = syntaxItem
+
+
+
+def createDoc(syntaxTree, docTree = None):
+ if not docTree:
+ docTree = tree.Node("doctree")
+
+ try:
+ currClassNode = None
+ if not syntaxTree.hasChildren():
+ return docTree
+
+ for item in syntaxTree.children:
+ if item.type == "assignment":
+ leftItem = item.getFirstListChild("left")
+ rightItem = item.getFirstListChild("right")
+ if leftItem.type == "variable":
+ if currClassNode and len(leftItem.children) == 3 and leftItem.children[0].get("name") == "qx":
+ if leftItem.children[1].get("name") == "Proto" and rightItem.type == "function":
+ # It's a method definition
+ handleMethodDefinition(item, False, currClassNode)
+ elif leftItem.children[1].get("name") == "Class":
+ if rightItem.type == "function":
+ handleMethodDefinition(item, True, currClassNode)
+ elif leftItem.children[2].get("name").isupper():
+ handleConstantDefinition(item, currClassNode)
+ elif currClassNode and assembleVariable(leftItem).startswith(currClassNode.get("fullName")):
+ # This is definition of the type "mypackage.MyClass.bla = ..."
+ if rightItem.type == "function":
+ handleMethodDefinition(item, True, currClassNode)
+ elif leftItem.children[len(leftItem.children) - 1].get("name").isupper():
+ handleConstantDefinition(item, currClassNode)
+
+ elif item.type == "call":
+ operand = item.getChild("operand", False)
+ if operand:
+ var = operand.getChild("variable", False)
+ if var and len(var.children) == 3 and var.children[0].get("name") == "qx" and var.children[1].get("name") == "OO":
+ methodName = var.children[2].get("name")
+ if methodName == "defineClass":
+ currClassNode = handleClassDefinition(docTree, item)
+ elif methodName == "addProperty" or methodName == "addFastProperty":
+ # these are private and should be marked if listed, otherwise just hide them (wpbasti)
+ #or methodName == "addCachedProperty" or methodName == "changeProperty":
+ handlePropertyDefinition(item, currClassNode)
+ #elif item.type == "function":
+ # name = item.get("name", False)
+ # if name and name[0].isupper():
+ # # This is an old class definition "function MyClass (...)"
+ # currClassNode = handleClassDefinition(docTree, item)
+
+ except Exception:
+ exc = sys.exc_info()[1]
+ msg = ""
+
+ if hasattr(exc, "node"):
+ (line, column) = getLineAndColumnFromSyntaxItem(exc.node)
+ file = getFileFromSyntaxItem(exc.node)
+ if line != None or file != None:
+ msg = str(exc) + "\n " + str(file) + ", Line: " + str(line) + ", Column: " + str(column)
+
+ if msg == "":
+ raise Exception, "Unknown reason", sys.exc_info()[2]
+
+ else:
+ print
+ print " - Failed: %s" % msg
+ sys.exit(1)
+
+ return docTree
+
+
+
+def variableIsClassName(varItem):
+ length = len(varItem.children)
+ for i in range(length):
+ varChild = varItem.children[i]
+ if not varChild.type == "identifier":
+ return False
+ if i < length - 1:
+ # This is not the last identifier -> It must a package (= lowercase)
+ if not varChild.get("name").islower():
+ return False
+ else:
+ # This is the last identifier -> It must the class name (= first letter uppercase)
+ if not varChild.get("name")[0].isupper():
+ return False
+ return True
+
+
+
+
+
+def assembleVariable(variableItem):
+ if variableItem.type != "variable":
+ raise DocException("'variableItem' is no variable", variableItem)
+
+ assembled = ""
+ for child in variableItem.children:
+ if len(assembled) != 0:
+ assembled += "."
+ assembled += child.get("name")
+
+ return assembled
+
+
+
+def handleClassDefinition(docTree, item):
+ params = item.getChild("params")
+
+ paramsLen = len(params.children);
+ if paramsLen == 1:
+ superClassName = "Object"
+ ctorItem = None
+ elif paramsLen == 2:
+ superClassName = "Object"
+ ctorItem = params.children[1]
+ elif paramsLen == 3:
+ superClassName = assembleVariable(params.children[1])
+ ctorItem = params.children[2]
+ else:
+ raise DocException("defineClass call has more than three parameters: " + str(len(params.children)), item)
+
+ className = params.children[0].get("value")
+ classNode = getClassNode(docTree, className)
+
+ if superClassName != "Object":
+ superClassNode = getClassNode(docTree, superClassName)
+ childClasses = superClassNode.get("childClasses", False)
+ if childClasses:
+ childClasses += "," + className
+ else:
+ childClasses = className
+ superClassNode.set("childClasses", childClasses)
+
+ classNode.set("superClass", superClassName)
+
+ commentAttributes = comment.parseNode(item)
+
+ for attrib in commentAttributes:
+ if attrib["category"] == "event":
+ # Add the event
+ if comment.attribHas(attrib, "name") and comment.attribHas(attrib, "type"):
+ addEventNode(classNode, item, attrib);
+ else:
+ addError(classNode, "Documentation contains malformed event attribute.", item)
+
+ # Add the constructor
+ if ctorItem and ctorItem.type == "function":
+ ctor = handleFunction(ctorItem, commentAttributes, classNode)
+ ctor.set("isCtor", True)
+ classNode.addListChild("constructor", ctor)
+
+ # Check for methods defined in the constructor
+ # (for method definition style that supports real private methods)
+ ctorBlock = ctorItem.getChild("body").getChild("block")
+
+ if ctorBlock.hasChildren():
+ for item in ctorBlock.children:
+ if item.type == "assignment":
+ leftItem = item.getFirstListChild("left")
+ rightItem = item.getFirstListChild("right")
+
+ # It's a method definition
+ if leftItem.type == "variable" and len(leftItem.children) == 2 and (leftItem.children[0].get("name") == "this" or leftItem.children[0].get("name") == "self") and rightItem.type == "function":
+ handleMethodDefinition(item, False, classNode)
+
+ elif ctorItem and ctorItem.type == "map":
+ for keyvalueItem in ctorItem.children:
+ valueItem = keyvalueItem.getChild("value").getFirstChild()
+ if (valueItem.type == "function"):
+ handleMethodDefinition(keyvalueItem, True, classNode)
+ else:
+ handleConstantDefinition(keyvalueItem, classNode)
+
+ return classNode;
+
+
+
+
+
+
+
+def handlePropertyDefinition(item, classNode):
+ paramsMap = item.getChild("params").getChild("map")
+
+ node = tree.Node("property")
+ node.set("name", paramsMap.getChildByAttribute("key", "name").getChild("value").getChild("constant").get("value"))
+
+ propType = paramsMap.getChildByAttribute("key", "type", False)
+ if propType:
+ node.set("type", getType(propType.getChild("value").getFirstChild()))
+
+ allowNull = paramsMap.getChildByAttribute("key", "allowNull", False)
+ if allowNull:
+ node.set("allowNull", allowNull.getChild("value").getChild("constant").get("value"))
+
+ defaultValue = paramsMap.getChildByAttribute("key", "defaultValue", False)
+ if defaultValue:
+ node.set("defaultValue", getValue(defaultValue.getFirstListChild("value")))
+
+ getAlias = paramsMap.getChildByAttribute("key", "getAlias", False)
+ if getAlias:
+ node.set("getAlias", getAlias.getChild("value").getChild("constant").get("value"))
+
+ setAlias = paramsMap.getChildByAttribute("key", "setAlias", False)
+ if setAlias:
+ node.set("setAlias", setAlias.getChild("value").getChild("constant").get("value"))
+
+ unitDetection = paramsMap.getChildByAttribute("key", "unitDetection", False)
+ if unitDetection:
+ node.set("unitDetection", unitDetection.getChild("value").getChild("constant").get("value"))
+
+ instance = paramsMap.getChildByAttribute("key", "instance", False)
+ if instance:
+ node.set("instance", instance.getChild("value").getChild("constant").get("value"))
+
+ classname = paramsMap.getChildByAttribute("key", "classname", False)
+ if classname:
+ node.set("classname", classname.getChild("value").getChild("constant").get("value"))
+
+ possibleValues = paramsMap.getChildByAttribute("key", "possibleValues", False)
+ if possibleValues:
+ array = possibleValues.getChild("value").getChild("array")
+ values = ""
+ for arrayItem in array.children:
+ if len(values) != 0:
+ values += ", "
+ values += getValue(arrayItem)
+ node.set("possibleValues", values)
+
+ # If the description has a type specified then take this type
+ # (and not the one extracted from the paramsMap)
+ commentAttributes = comment.parseNode(item)
+ addTypeInfo(node, comment.getAttrib(commentAttributes, "description"), item)
+
+ classNode.addListChild("properties", node)
+
+
+
+def getValue(item):
+ value = None
+ if item.type == "constant":
+ if item.get("constantType") == "string":
+ value = '"' + item.get("value") + '"'
+ else:
+ value = item.get("value")
+ elif item.type == "variable":
+ value = assembleVariable(item)
+ elif item.type == "operation" and item.get("operator") == "SUB":
+ # E.g. "-1" or "-Infinity"
+ value = "-" + getValue(item.getChild("first").getFirstChild())
+ if value == None:
+ value = "[Unsupported item type: " + item.type + "]"
+
+ return value
+
+
+
+def handleMethodDefinition(item, isStatic, classNode):
+ if item.type == "assignment":
+ # This is a "normal" method definition
+ leftItem = item.getFirstListChild("left")
+ name = leftItem.children[len(leftItem.children) - 1].get("name")
+ functionItem = item.getFirstListChild("right")
+ elif item.type == "keyvalue":
+ # This is a method definition of a map-style class (like qx.Const)
+ name = item.get("key")
+ functionItem = item.getFirstListChild("value")
+
+ commentAttributes = comment.parseNode(item)
+
+ node = handleFunction(functionItem, commentAttributes, classNode)
+ node.set("name", name)
+
+ isPublic = name[0] != "_"
+ listName = "methods"
+ if isStatic:
+ node.set("isStatic", True)
+ listName += "-static"
+ if isPublic:
+ listName += "-pub"
+ else:
+ listName += "-prot"
+
+ classNode.addListChild(listName, node)
+
+
+
+def handleConstantDefinition(item, classNode):
+ if (item.type == "assignment"):
+ # This is a "normal" constant definition
+ leftItem = item.getFirstListChild("left")
+ name = leftItem.children[len(leftItem.children) - 1].get("name")
+ elif (item.type == "keyvalue"):
+ # This is a constant definition of a map-style class (like qx.Const)
+ name = item.get("key")
+
+ node = tree.Node("constant")
+ node.set("name", name)
+
+ commentAttributes = comment.parseNode(item)
+ addTypeInfo(node, comment.getAttrib(commentAttributes, "description"), item)
+
+ classNode.addListChild("constants", node)
+
+
+
+def handleFunction(funcItem, commentAttributes, classNode):
+ if funcItem.type != "function":
+ raise DocException("'funcItem' is no function", funcItem)
+
+ node = tree.Node("method")
+
+ # Read the parameters
+ params = funcItem.getChild("params", False)
+ if params and params.hasChildren():
+ for param in params.children:
+ paramNode = tree.Node("param")
+ paramNode.set("name", param.getFirstChild().get("name"))
+ node.addListChild("params", paramNode)
+
+ # Check whether the function is abstract
+ bodyBlockItem = funcItem.getChild("body").getFirstChild();
+ if bodyBlockItem.type == "block" and bodyBlockItem.hasChildren():
+ firstStatement = bodyBlockItem.children[0];
+ if firstStatement.type == "throw":
+ # The first statement of the function is a throw statement
+ # -> The function is abstract
+ node.set("isAbstract", True)
+
+ if len(commentAttributes) == 0:
+ addError(node, "Documentation is missing.", funcItem)
+ return node
+
+ # Read all description, param and return attributes
+ for attrib in commentAttributes:
+ # Add description
+ if attrib["category"] == "description":
+ descNode = tree.Node("desc").set("text", attrib["text"])
+ node.addChild(descNode)
+
+ elif attrib["category"] == "param":
+ if not attrib.has_key("name"):
+ raise DocException("Missing name of parameter.", funcItem)
+
+ # Find the matching param node
+ paramName = attrib["name"]
+ paramNode = node.getListChildByAttribute("params", "name", paramName, False)
+
+ if not paramNode:
+ addError(node, "Contains information for a non-existing parameter <code>%s</code>." % paramName, funcItem)
+ continue
+
+ addTypeInfo(paramNode, attrib, funcItem)
+
+ elif attrib["category"] == "return":
+ returnNode = tree.Node("return")
+ node.addChild(returnNode)
+
+ addTypeInfo(returnNode, attrib, funcItem)
+
+ # Check for documentation errors
+ # Check whether all parameters have been documented
+ if node.hasChild("params"):
+ paramsListNode = node.getChild("params");
+ for paramNode in paramsListNode.children:
+ if not paramNode.getChild("desc", False):
+ addError(node, "Parameter %s is not documented." % paramNode.get("name"), funcItem)
+
+ return node
+
+
+
+def addTypeInfo(node, commentAttrib=None, item=None):
+ if commentAttrib == None:
+ if node.type == "param":
+ addError(node, "Parameter <code>%s</code> in not documented." % commentAttrib.get("name"), item)
+
+ elif node.type == "return":
+ addError(node, "Return value is not documented.", item)
+
+ else:
+ addError(node, "Documentation is missing.", item)
+
+ return
+
+ # add description
+ node.addChild(tree.Node("desc").set("text", commentAttrib["text"]))
+
+ # add types
+ if commentAttrib.has_key("type"):
+ typesNode = tree.Node("types")
+ node.addChild(typesNode)
+
+ for item in commentAttrib["type"]:
+ itemNode = tree.Node("entry")
+ typesNode.addChild(itemNode)
+
+ itemNode.set("type", item["type"])
+
+ if item["dimensions"] != 0:
+ itemNode.set("dimensions", item["dimensions"])
+
+ # add default value
+ if commentAttrib.has_key("default"):
+ defaultValue = commentAttrib["default"]
+ if defaultValue != None:
+ # print "defaultValue: %s" % defaultValue
+ node.set("defaultValue", defaultValue)
+
+
+
+
+
+def addEventNode(classNode, classItem, commentAttrib):
+ node = tree.Node("event")
+
+ node.set("name", commentAttrib["name"])
+ node.addChild(tree.Node("desc").set("text", commentAttrib["text"]))
+
+ # add types
+ if commentAttrib.has_key("type"):
+ typesNode = tree.Node("types")
+ node.addChild(typesNode)
+
+ for item in commentAttrib["type"]:
+ itemNode = tree.Node("entry")
+ typesNode.addChild(itemNode)
+
+ itemNode.set("type", item["type"])
+
+ if item["dimensions"] != 0:
+ itemNode.set("dimensions", item["dimensions"])
+
+ classNode.addListChild("events", node)
+
+
+
+
+def addError(node, msg, syntaxItem):
+ # print ">>> %s" % msg
+
+ errorNode = tree.Node("error")
+ errorNode.set("msg", msg)
+
+ (line, column) = getLineAndColumnFromSyntaxItem(syntaxItem)
+ if line:
+ errorNode.set("line", line)
+
+ if column:
+ errorNode.set("column", column)
+
+ node.addListChild("errors", errorNode)
+ node.set("hasError", True)
+
+
+
+def getLineAndColumnFromSyntaxItem(syntaxItem):
+ line = None
+ column = None
+
+ while line == None and column == None and syntaxItem:
+ line = syntaxItem.get("line", False)
+ column = syntaxItem.get("column", False)
+
+ if syntaxItem.hasParent():
+ syntaxItem = syntaxItem.parent
+ else:
+ syntaxItem = None
+
+ return line, column
+
+
+def getFileFromSyntaxItem(syntaxItem):
+ file = None
+ while file == None and syntaxItem:
+ file = syntaxItem.get("file", False)
+ if hasattr(syntaxItem, "parent"):
+ syntaxItem = syntaxItem.parent
+ else:
+ syntaxItem = None
+ return file
+
+
+def getType(item):
+ if item.type == "constant" and item.get("constantType") == "string":
+ val = item.get("value")
+
+ if val == "object":
+ val = "Object"
+ elif val == "function":
+ val = "Function"
+
+ return val
+ else:
+ raise DocException("Can't gess type. type is neither string nor variable: " + item.type, item)
+
+
+def getClassNode(docTree, className):
+ splits = className.split(".")
+
+ currPackage = docTree
+ length = len(splits)
+ for i in range(length):
+ split = splits[i]
+
+ if (i < length - 1):
+ # This is a package name -> Get the right package
+ childPackage = currPackage.getListChildByAttribute("packages", "name", split, False)
+ if not childPackage:
+ childPackageName = ".".join(splits[:-(length-i-1)])
+
+ # The package does not exist -> Create it
+ childPackage = tree.Node("package")
+ childPackage.set("name", split)
+ childPackage.set("fullName", childPackageName)
+ childPackage.set("packageName", childPackageName.replace("." + split, ""))
+
+ currPackage.addListChild("packages", childPackage)
+
+ # Update current package
+ currPackage = childPackage
+
+ else:
+ # This is a class name -> Get the right class
+ classNode = currPackage.getListChildByAttribute("classes", "name", split, False)
+ if not classNode:
+ # The class does not exist -> Create it
+ classNode = tree.Node("class")
+ classNode.set("name", split)
+ classNode.set("fullName", className)
+ classNode.set("packageName", className.replace("." + split, ""))
+ currPackage.addListChild("classes", classNode)
+
+ return classNode
+
+
+
+def postWorkPackage(docTree, packageNode):
+ childHasError = False
+
+ packages = packageNode.getChild("packages", False)
+ if packages:
+ packages.children.sort(nameComparator)
+ for node in packages.children:
+ hasError = postWorkPackage(docTree, node)
+ if hasError:
+ childHasError = True
+
+ classes = packageNode.getChild("classes", False)
+ if classes:
+ classes.children.sort(nameComparator)
+ for node in classes.children:
+ hasError = postWorkClass(docTree, node)
+ if hasError:
+ childHasError = True
+
+ if childHasError:
+ packageNode.set("hasWarning", True)
+
+ return childHasError
+
+
+
+def postWorkClass(docTree, classNode):
+ # Sort child classes
+ childClasses = classNode.get("childClasses", False)
+ if childClasses:
+ classArr = childClasses.split(",")
+ classArr.sort()
+ childClasses = ",".join(classArr)
+ classNode.set("childClasses", childClasses)
+
+ # Remove the property-modifier-methods
+ removePropertyModifiers(classNode)
+
+ # Mark overridden items
+ postWorkItemList(docTree, classNode, "properties", True)
+ postWorkItemList(docTree, classNode, "events", False)
+ postWorkItemList(docTree, classNode, "methods-pub", True)
+ postWorkItemList(docTree, classNode, "methods-prot", True)
+ postWorkItemList(docTree, classNode, "methods-static-pub", False)
+ postWorkItemList(docTree, classNode, "methods-static-prot", False)
+
+ # Check whether the class is static
+ superClassName = classNode.get("superClass", False)
+ if (superClassName == None or superClassName == "QxObject") \
+ and classNode.getChild("properties", False) == None \
+ and classNode.getChild("methods-pub", False) == None \
+ and classNode.getChild("methods-prot", False) == None:
+ # This class has is static
+ classNode.set("isStatic", True)
+
+ # Check whether the class is abstract
+ if isClassAbstract(docTree, classNode, {}):
+ classNode.set("isAbstract", True)
+
+ # Check for errors
+ childHasError = listHasError(classNode, "constructor") or listHasError(classNode, "properties") \
+ or listHasError(classNode, "methods-pub") or listHasError(classNode, "methods-prot") \
+ or listHasError(classNode, "methods-static-pub") or listHasError(classNode, "methods-static-prot") \
+ or listHasError(classNode, "constants")
+
+ if childHasError:
+ classNode.set("hasWarning", True)
+
+ return childHasError
+
+
+
+def isClassAbstract(docTree, classNode, visitedMethodNames):
+ if containsAbstractMethods(classNode.getChild("methods-pub", False), visitedMethodNames) \
+ or containsAbstractMethods(classNode.getChild("methods-prot", False), visitedMethodNames):
+ # One of the methods is abstract
+ return True
+
+ # No abstract methods found -> Check whether the super class has abstract
+ # methods that haven't been overridden
+ superClassName = classNode.get("superClass", False)
+ if superClassName:
+ superClassNode = getClassNode(docTree, superClassName)
+ return isClassAbstract(docTree, superClassNode, visitedMethodNames)
+
+
+
+def containsAbstractMethods(methodListNode, visitedMethodNames):
+ if methodListNode:
+ for methodNode in methodListNode.children:
+ name = methodNode.get("name")
+ if not name in visitedMethodNames:
+ visitedMethodNames[name] = True
+ if methodNode.get("isAbstract", False):
+ return True
+
+ return False
+
+
+
+def removePropertyModifiers(classNode):
+ propertiesList = classNode.getChild("properties", False)
+ methodsProtList = classNode.getChild("methods-prot", False)
+ if propertiesList and methodsProtList:
+ for propNode in propertiesList.children:
+ name = propNode.get("name")
+ upperName = name[0].upper() + name[1:]
+
+ modifyNode = methodsProtList.getChildByAttribute("name", "_modify" + upperName, False)
+ if modifyNode:
+ methodsProtList.removeChild(modifyNode);
+
+ changeNode = methodsProtList.getChildByAttribute("name", "_change" + upperName, False)
+ if changeNode:
+ methodsProtList.removeChild(changeNode);
+
+ checkNode = methodsProtList.getChildByAttribute("name", "_check" + upperName, False)
+ if checkNode:
+ methodsProtList.removeChild(checkNode);
+
+ if not methodsProtList.hasChildren():
+ classNode.removeChild(methodsProtList)
+
+
+
+def postWorkItemList(docTree, classNode, listName, overridable):
+ """Does the post work for a list of properties or methods."""
+
+ # Sort the list
+ sortByName(classNode, listName)
+
+ # Post work all items
+ listNode = classNode.getChild(listName, False)
+ if listNode:
+ for itemNode in listNode.children:
+ name = itemNode.get("name")
+
+ # Check whether this item is overridden and try to inherit the
+ # documentation from the next matching super class
+ if overridable:
+ superClassName = classNode.get("superClass", False)
+ overriddenFound = False
+ docFound = (itemNode.getChild("desc", False) != None)
+ while superClassName and (not overriddenFound or not docFound):
+ superClassNode = getClassNode(docTree, superClassName)
+ superItemNode = superClassNode.getListChildByAttribute(listName, "name", name, False)
+
+ if superItemNode:
+ if not docFound:
+ # This super item has a description
+ # -> Check whether the parameters match
+ # NOTE: paramsMatch works for properties, too
+ # (Because both compared properties always have no params)
+ if paramsMatch(itemNode, superItemNode):
+ # The parameters match -> We can use the documentation of the super class
+ itemNode.set("docFrom", superClassName)
+ docFound = (superItemNode.getChild("desc", False) != None)
+
+ # Remove previously recorded documentation errors from the item
+ # (Any documentation errors will be recorded in the super class)
+ removeErrors(itemNode)
+ if not overriddenFound:
+ # This super class has the item defined -> Add a overridden attribute
+ itemNode.set("overriddenFrom", superClassName)
+ overriddenFound = True
+
+ # Check the next superclass
+ superClassName = superClassNode.get("superClass", False)
+
+ if not docFound and itemNode.get("overriddenFrom", False):
+ # This item is overridden, but we didn't find any documentation in the
+ # super classes -> Add a warning
+ itemNode.set("hasWarning", True)
+
+
+
+def paramsMatch(methodNode1, methodNode2):
+ params1 = methodNode1.getChild("params1", False)
+ params2 = methodNode1.getChild("params2", False)
+
+ if params1 == None or params2 == None:
+ # One method has no parameters -> The params match if both are None
+ return params1 == params2
+ elif len(params1.children) != len(params2.children):
+ # The param count is different -> The params don't match
+ return False
+ else:
+ for i in range(len(params1.children)):
+ par1 = params1.children[i]
+ par2 = params2.children[i]
+ if (par1.get("name") != par2.get("name")):
+ # These parameters don't match
+ return False
+
+ # All tests passed
+ return True
+
+
+
+def removeErrors(node):
+ errors = node.getChild("errors", False)
+ if errors:
+ node.removeChild(errors)
+ node.remove("hasError")
+
+
+
+def sortByName(node, listName):
+ listNode = node.getChild(listName, False)
+ if listNode:
+ listNode.children.sort(nameComparator)
+
+
+
+def nameComparator(node1, node2):
+ name1 = node1.get("name").lower()
+ name2 = node2.get("name").lower()
+ return cmp(name1, name2)
+
+
+
+def listHasError(node, listName):
+ listNode = node.getChild(listName, False)
+ if listNode:
+ for childNode in listNode.children:
+ if childNode.get("hasError", False):
+ return True
+
+ return False
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.pyc
new file mode 100644
index 0000000000..2bb39fc2cd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/api.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.py
new file mode 100755
index 0000000000..b27a10de30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.py
@@ -0,0 +1,906 @@
+#!/usr/bin/env python
+
+import sys, string, re
+import config, tree, textile
+
+
+
+S_INLINE_COMMENT = "//.*"
+R_INLINE_COMMENT = re.compile("^" + S_INLINE_COMMENT + "$")
+
+R_INLINE_COMMENT_TIGHT = re.compile("^//\S+")
+R_INLINE_COMMENT_PURE = re.compile("^//")
+
+
+
+S_BLOCK_COMMENT = "/\*([^*]|[\n]|(\*+([^*/]|[\n])))*\*+/"
+R_BLOCK_COMMENT = re.compile("^" + S_BLOCK_COMMENT + "$")
+
+R_BLOCK_COMMENT_JAVADOC = re.compile("^/\*\*")
+R_BLOCK_COMMENT_QTDOC = re.compile("^/\*!")
+R_BLOCK_COMMENT_AREA = re.compile("^/\*\n\s*\*\*\*\*\*")
+R_BLOCK_COMMENT_DIVIDER = re.compile("^/\*\n\s*----")
+R_BLOCK_COMMENT_HEADER = re.compile("^/\* \*\*\*\*")
+
+R_BLOCK_COMMENT_TIGHT_START = re.compile("^/\*\S+")
+R_BLOCK_COMMENT_TIGHT_END = re.compile("\S+\*/$")
+R_BLOCK_COMMENT_PURE_START = re.compile("^/\*")
+R_BLOCK_COMMENT_PURE_END = re.compile("\*/$")
+
+R_ATTRIBUTE = re.compile(r'[^{]@(\w+)\s*')
+R_JAVADOC_STARS = re.compile(r'^\s*\*')
+
+
+
+R_NAMED_TYPE = re.compile(r'^\s*(\w+)\s*({([^}]+)})?')
+R_SIMPLE_TYPE = re.compile(r'^\s*({([^}]+)})?')
+
+
+
+
+VARPREFIXES = {
+ "a" : "Array",
+ "b" : "boolean",
+ "d" : "Date",
+ "f" : "Function",
+ "i" : "int",
+ "h" : "Map",
+ "m" : "Map",
+ "n" : "number",
+ "o" : "Object",
+ "r" : "RegExp",
+ "s" : "string",
+ "v" : "var",
+ "w" : "Widget"
+}
+
+VARNAMES = {
+ "a" : "Array",
+ "arr" : "Array",
+
+ "e" : "Event",
+ "ev" : "Event",
+ "evt" : "Event",
+
+ "el" : "Element",
+ "elem" : "Element",
+ "elm" : "Element",
+
+ "ex" : "Exception",
+ "exc" : "Exception",
+
+ "flag" : "boolean",
+ "force" : "boolean",
+
+ "f" : "Function",
+ "func" : "Function",
+
+ "h" : "Map",
+ "hash" : "Map",
+ "map" : "Map",
+
+ "node" : "Node",
+
+ "n" : "number",
+ "num" : "number",
+
+ "o" : "Object",
+ "obj" : "Object",
+
+ "reg" : "RegExp",
+
+ "s" : "string",
+ "str" : "string"
+}
+
+VARDESC = {
+ "propValue" : "Current value",
+ "propOldValue" : "Previous value",
+ "propData" : "Property configuration map"
+}
+
+
+
+
+def outdent(source, indent):
+ return re.compile("\n\s{%s}" % indent).sub("\n", source)
+
+
+
+def indent(source, indent):
+ return re.compile("\n").sub("\n" + (" " * indent), source)
+
+
+
+def correctInline(source):
+ if R_INLINE_COMMENT_TIGHT.match(source):
+ return R_INLINE_COMMENT_PURE.sub("// ", source)
+
+ return source
+
+
+
+def correctBlock(source):
+ if not getFormat(source) in [ "javadoc", "qtdoc" ]:
+ if R_BLOCK_COMMENT_TIGHT_START.search(source):
+ source = R_BLOCK_COMMENT_PURE_START.sub("/* ", source)
+
+ if R_BLOCK_COMMENT_TIGHT_END.search(source):
+ source = R_BLOCK_COMMENT_PURE_END.sub(" */", source)
+
+ return source
+
+
+
+def correct(source):
+ if source.startswith("//"):
+ return correctInline(source)
+ else:
+ return correctBlock(source)
+
+
+
+def isMultiLine(source):
+ return source.find("\n") != -1
+
+
+
+def getFormat(source):
+ if R_BLOCK_COMMENT_JAVADOC.search(source):
+ return "javadoc"
+ elif R_BLOCK_COMMENT_QTDOC.search(source):
+ return "qtdoc"
+ elif R_BLOCK_COMMENT_AREA.search(source):
+ return "area"
+ elif R_BLOCK_COMMENT_DIVIDER.search(source):
+ return "divider"
+ elif R_BLOCK_COMMENT_HEADER.search(source):
+ return "header"
+
+ return "block"
+
+
+
+
+
+
+
+
+def hasThrows(node):
+ if node.type == "throw":
+ return True
+
+ if node.hasChildren():
+ for child in node.children:
+ if hasThrows(child):
+ return True
+
+ return False
+
+
+
+
+def getReturns(node, found):
+ if node.type == "function":
+ pass
+
+ elif node.type == "return":
+ if node.getChildrenLength(True) > 0:
+ val = "var"
+ else:
+ val = "void"
+
+ if node.hasChild("expression"):
+ expr = node.getChild("expression")
+ if expr.hasChild("variable"):
+ var = expr.getChild("variable")
+ if var.getChildrenLength(True) == 1 and var.hasChild("identifier"):
+ val = nameToType(var.getChild("identifier").get("name"))
+ else:
+ val = "var"
+
+ elif expr.hasChild("constant"):
+ val = expr.getChild("constant").get("constantType")
+
+ if val == "number":
+ val = expr.getChild("constant").get("detail")
+
+ elif expr.hasChild("array"):
+ val = "Array"
+
+ elif expr.hasChild("map"):
+ val = "Map"
+
+ elif expr.hasChild("function"):
+ val = "Function"
+
+ elif expr.hasChild("call"):
+ val = "call"
+
+ if not val in found:
+ found.append(val)
+
+ elif node.hasChildren():
+ for child in node.children:
+ getReturns(child, found)
+
+ return found
+
+
+
+def nameToType(name):
+ typ = "var"
+
+ # Evaluate type from name
+ if name in VARNAMES:
+ typ = VARNAMES[name]
+
+ elif len(name) > 1:
+ if name[1].isupper():
+ if name[0] in VARPREFIXES:
+ typ = VARPREFIXES[name[0]]
+
+ return typ
+
+
+
+def nameToDescription(name):
+ desc = "TODOC"
+
+ if name in VARDESC:
+ desc = VARDESC[name]
+
+ return desc
+
+
+
+
+def qt2javadoc(text):
+ attribList = parseText(text, False)
+ res = "/**"
+
+ desc = getAttrib(attribList, "description")["text"]
+
+ if "\n" in desc:
+ res += "\n"
+
+ for line in desc.split("\n"):
+ res += " * %s\n" % line
+
+ res += " "
+
+ else:
+ res += " %s " % desc
+
+ res += "*/"
+
+ return res
+
+
+def parseNode(node):
+ """Takes the last doc comment from the commentsBefore child, parses it and
+ returns a Node representing the doc comment"""
+
+ # Find the last doc comment
+ commentsBefore = node.getChild("commentsBefore", False)
+ if commentsBefore and commentsBefore.hasChildren():
+ for child in commentsBefore.children:
+ if child.type == "comment" and child.get("detail") in [ "javadoc", "qtdoc" ]:
+ return parseText(child.get("text"))
+
+ return []
+
+
+
+def parseText(intext, format=True):
+ # Strip "/**", "/*!" and "*/"
+ intext = intext[3:-2]
+
+ # Strip leading stars in every line
+ text = ""
+ for line in intext.split("\n"):
+ text += R_JAVADOC_STARS.sub("", line).strip() + "\n"
+
+ # Search for attributes
+ desc = { "category" : "description", "text" : "" }
+ attribs = [ desc ]
+ pos = 0
+
+ while True:
+ mtch = R_ATTRIBUTE.search(text, pos)
+
+ if mtch == None:
+ prevText = text[pos:].strip()
+
+ if len(attribs) == 0:
+ desc["text"] = prevText
+ else:
+ attribs[-1]["text"] = prevText
+
+ break
+
+ prevText = text[pos:mtch.start(0)].strip()
+ pos = mtch.end(0)
+
+ if len(attribs) == 0:
+ desc["text"] = prevText
+ else:
+ attribs[-1]["text"] = prevText
+
+ attribs.append({ "category" : mtch.group(1), "text" : "" })
+
+ # parse details
+ for attrib in attribs:
+ parseDetail(attrib, format)
+
+ return attribs
+
+
+
+def parseDetail(attrib, format=True):
+ text = attrib["text"]
+
+ if attrib["category"] in [ "param", "event" ]:
+ mtch = R_NAMED_TYPE.search(text)
+ else:
+ mtch = R_SIMPLE_TYPE.search(text)
+
+ if mtch:
+ text = text[mtch.end(0):]
+
+ if attrib["category"] in [ "param", "event" ]:
+ attrib["name"] = mtch.group(1)
+ # print ">>> NAME: %s" % mtch.group(1)
+ remain = mtch.group(3)
+ else:
+ remain = mtch.group(2)
+
+ if remain != None:
+ defIndex = remain.rfind("?")
+ if defIndex != -1:
+ attrib["default"] = remain[defIndex+1:].strip()
+ remain = remain[0:defIndex].strip()
+ # print ">>> DEFAULT: %s" % attrib["default"]
+
+ typValues = []
+ for typ in remain.split("|"):
+ typValue = typ.strip()
+ arrayIndex = typValue.find("[")
+
+ if arrayIndex != -1:
+ arrayValue = (len(typValue) - arrayIndex) / 2
+ typValue = typValue[0:arrayIndex]
+ else:
+ arrayValue = 0
+
+ typValues.append({ "type" : typValue, "dimensions" : arrayValue })
+
+ if len(typValues) > 0:
+ attrib["type"] = typValues
+ # print ">>> TYPE: %s" % attrib["type"]
+
+ if format:
+ attrib["text"] = formatText(text)
+ else:
+ attrib["text"] = cleanupText(text)
+
+
+
+
+
+
+
+
+def cleanupText(text):
+ #print "============= INTEXT ========================="
+ #print text
+
+ text = text.replace("<p>", "\n")
+ text = text.replace("<br/>", "\n")
+ text = text.replace("<br>", "\n")
+ text = text.replace("</p>", " ")
+
+ newline = False
+ lines = text.split("\n")
+ text = ""
+
+ for line in lines:
+ line = line.strip()
+
+ if line == "":
+ if not newline:
+ newline = True
+
+ else:
+ if text != "":
+ text += "\n"
+
+ if newline:
+ text += "\n"
+ newline = False
+
+ text += line
+
+ #print "============= OUTTEXT ========================="
+ #print text
+
+ return text
+
+
+
+def formatText(text):
+ #print "============= FORMAT:1 ========================="
+ #print text
+
+ # cleanup HTML
+ text = text.replace("<p>", "\n")
+ text = text.replace("<br/>", "\n")
+ text = text.replace("<br>", "\n")
+ text = text.replace("</p>", " ")
+
+ # cleanup wraps
+ text = text.replace("\n\n", "----BREAK----")
+ text = text.replace("\n*", "----UL----")
+ text = text.replace("\n#", "----OL----")
+ text = text.replace("\n", " ")
+ text = text.replace("----BREAK----", "\n\n")
+ text = text.replace("----UL----", "\n*")
+ text = text.replace("----OL----", "\n#")
+
+ #print "============= FORMAT:2 ========================="
+ #print text
+
+ text = textile.textile(unicode(text).encode('utf-8'))
+
+ #print "============= FORMAT:3 ========================="
+ #print text
+
+ return text
+
+
+
+
+
+
+
+
+def getAttrib(attribList, category):
+ for attrib in attribList:
+ if attrib["category"] == category:
+ return attrib
+
+
+
+def getParam(attribList, name):
+ for attrib in attribList:
+ if attrib["category"] == "param":
+ if attrib.has_key("name") and attrib["name"] == name:
+ return attrib
+
+
+
+def attribHas(attrib, key):
+ if attrib != None and attrib.has_key(key) and not attrib[key] in [ "", None ]:
+ return True
+
+ return False
+
+
+
+def splitText(orig, attrib=True):
+ res = ""
+ first = True
+
+ for line in orig.split("\n"):
+ if attrib:
+ if first:
+ res += " %s\n" % line
+ else:
+ res += " * %s\n" % line
+
+ else:
+ res += " * %s\n" % line
+
+ first = False
+
+ if not res.endswith("\n"):
+ res += "\n"
+
+ return res
+
+
+
+def parseType(vtype):
+ typeText = ""
+
+ firstType = True
+ for entry in vtype:
+ if not firstType:
+ typeText += " | "
+
+ typeText += entry["type"]
+
+ if entry.has_key("dimensions") and entry["dimensions"] > 0:
+ typeText += "[]" * entry["dimensions"]
+
+ firstType = False
+
+ return typeText
+
+
+
+
+def fromNode(node, assignType, name, alternative, old=[]):
+ #
+ # description
+ ##############################################################
+ oldDesc = getAttrib(old, "description")
+
+ if attribHas(oldDesc, "text"):
+ newText = oldDesc["text"]
+ else:
+ newText = "{var} TODOC"
+
+ if "\n" in newText:
+ s = "/**\n%s\n-*/" % splitText(newText, False)
+ else:
+ s = "/** %s */" % newText
+
+
+ #
+ # other @attributes
+ ##############################################################
+
+ for attrib in old:
+ cat = attrib["category"]
+
+ if cat != "description":
+ print " * Found unallowed attribute %s in comment for %s" % (cat, name)
+
+ return s
+
+
+
+
+def fromFunction(func, assignType, name, alternative, old=[]):
+ #
+ # open comment
+ ##############################################################
+ s = "/**\n"
+
+
+ #
+ # description
+ ##############################################################
+ oldDesc = getAttrib(old, "description")
+
+ if attribHas(oldDesc, "text"):
+ newText = oldDesc["text"]
+ else:
+ newText = "TODOC"
+
+ s += splitText(newText, False)
+ s += " *\n"
+
+
+
+
+ #
+ # add @type
+ ##############################################################
+ if assignType != None:
+ s += " * @type %s\n" % assignType
+ else:
+ s += " * @type unknown TODOC\n"
+
+
+
+
+ #
+ # add @name
+ ##############################################################
+ if name != None and name != "construct":
+ s += " * @name %s\n" % name
+
+ if name.startswith("__"):
+ s += " * @access private\n"
+ elif name.startswith("_"):
+ s += " * @access protected\n"
+ else:
+ s += " * @access public\n"
+
+
+
+ #
+ # add @alternative
+ ##############################################################
+ oldAlternative = getAttrib(old, "alternative")
+
+ if alternative:
+ if attribHas(oldAlternative, "text"):
+ newText = oldDesc["text"]
+ else:
+ newText = "TODOC"
+
+ s += " * @alternative%s" % splitText(newText)
+
+ if not s.endswith("\n"):
+ s += "\n"
+
+ elif oldAlternative:
+ print " * Removing old @alternative for %s" % name
+
+
+
+
+ #
+ # add @abstract
+ ##############################################################
+ oldAbstract = getAttrib(old, "abstract")
+
+ first = func.getChild("body").getChild("block").getFirstChild(False, True)
+ abstract = first and first.type == "throw"
+
+ if abstract:
+ if attribHas(oldAbstract, "text"):
+ newText = oldDesc["text"]
+ else:
+ newText = ""
+
+ s += " * @abstract%s" % splitText(newText)
+
+ if not s.endswith("\n"):
+ s += "\n"
+
+ elif oldAbstract:
+ print " * Removing old @abstract for %s" % name
+
+
+
+
+
+
+ #
+ # add @param
+ ##############################################################
+ params = func.getChild("params")
+ if params.hasChildren():
+ for child in params.children:
+ if child.type == "variable":
+ newName = child.getChild("identifier").get("name")
+ newType = newTypeText = nameToType(newName)
+ newDefault = ""
+ newText = nameToDescription(newName)
+
+ oldParam = getParam(old, newName)
+
+ # Get type and text from old content
+ if oldParam:
+ if attribHas(oldParam, "type"):
+ newTypeText = parseType(oldParam["type"])
+
+ if attribHas(oldParam, "defaultValue"):
+ newDefault = oldParam["defaultValue"]
+
+ if attribHas(oldParam, "text"):
+ newText = oldParam["text"].strip()
+
+ s += " * @param %s {%s%s}%s" % (newName, newTypeText, newDefault, splitText(newText))
+
+ if not s.endswith("\n"):
+ s += "\n"
+
+
+
+
+
+ #
+ # add @return
+ ##############################################################
+ if name != "construct":
+ oldReturn = getAttrib(old, "return")
+
+ newType = "void"
+ newText = ""
+
+ # Get type and text from old content
+ if oldReturn:
+ if attribHas(oldReturn, "type"):
+ newType = parseType(oldReturn["type"])
+
+ if attribHas(oldReturn, "text"):
+ newText = oldReturn["text"].strip()
+
+ # Try to autodetect the type
+ if newType == "void":
+ returns = getReturns(func.getChild("body"), [])
+
+ if len(returns) > 0:
+ newType = " | ".join(returns)
+ elif name != None and name.startswith("is") and name[3].isupper():
+ newType = "boolean"
+
+ # Add documentation hint in non void cases
+ if newType != "void" and newText == "":
+ newText = "TODOC"
+
+ s += " * @return {%s}%s" % (newType, splitText(newText))
+
+ if not s.endswith("\n"):
+ s += "\n"
+
+
+
+
+
+
+ #
+ # add @throws
+ ##############################################################
+ oldThrows = getAttrib(old, "throws")
+
+ if hasThrows(func):
+ if oldThrows and attribHas(oldThrows, "text"):
+ newText = oldThrows["text"]
+ elif abstract:
+ newText = "the abstract function warning."
+ else:
+ newText = "TODOC"
+
+ s += " * @throws%s" % splitText(newText)
+
+ if not s.endswith("\n"):
+ s += "\n"
+
+ elif oldThrows:
+ print " * Removing old @throw attribute in comment for %s" % name
+
+
+
+
+ #
+ # other @attributes
+ ##############################################################
+
+ for attrib in old:
+ cat = attrib["category"]
+
+ if cat in [ "see", "author", "deprecated", "exception", "since", "version", "abstract", "overridden" ]:
+ s += " * @%s" % cat
+
+ if attribHas(attrib, "text"):
+ s += splitText(attrib["text"])
+
+ if not s.endswith("\n"):
+ s += "\n"
+
+ elif not cat in [ "name", "access", "membership", "alternative", "param", "return", "throws", "description" ]:
+ print " * Found unallowed attribute %s in comment for %s" % (cat, name)
+
+
+
+
+
+ #
+ # close comment
+ ##############################################################
+ s += " */"
+
+ return s
+
+
+
+def fill(node):
+ if node.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ return
+
+ if node.hasParent():
+ target = node
+
+ if node.type == "function":
+ name = node.get("name", False)
+ else:
+ name = ""
+
+ alternative = False
+ assignType = None
+
+ if name != None:
+ assignType = "function"
+
+ # move to hook operation
+ while target.parent.type in [ "first", "second", "third" ] and target.parent.parent.type == "operation" and target.parent.parent.get("operator") == "HOOK":
+ alternative = True
+ target = target.parent.parent
+
+ # move comment to assignment
+ while target.parent.type == "right" and target.parent.parent.type == "assignment":
+ target = target.parent.parent
+ if target.hasChild("left"):
+ left = target.getChild("left")
+ if left and left.hasChild("variable"):
+ var = left.getChild("variable")
+ last = var.getLastChild(False, True)
+ if last and last.type == "identifier":
+ name = last.get("name")
+ assignType = "object"
+
+ for child in var.children:
+ if child.type == "identifier":
+ if child.get("name") in [ "prototype", "Proto" ]:
+ assignType = "member"
+ elif child.get("name") in [ "class", "base", "Class" ]:
+ assignType = "static"
+
+ elif target.parent.type == "definition":
+ name = target.parent.get("identifier")
+ assignType = "definition"
+
+ # move to definition
+ if target.parent.type == "assignment" and target.parent.parent.type == "definition" and target.parent.parent.parent.getChildrenLength(True) == 1:
+ target = target.parent.parent.parent
+ assignType = "function"
+
+
+ # move comment to keyvalue
+ if target.parent.type == "value" and target.parent.parent.type == "keyvalue":
+ target = target.parent.parent
+ name = target.get("key")
+ assignType = "map"
+
+ if name == "construct":
+ assignType = "constructor"
+
+ if target.parent.type == "map" and target.parent.parent.type == "value" and target.parent.parent.parent.type == "keyvalue":
+ paname = target.parent.parent.parent.get("key")
+
+ if paname == "members":
+ assignType = "member"
+
+ elif paname == "statics":
+ assignType = "static"
+
+ # filter stuff, only add comments to member and static values and to all functions
+ if assignType in [ "member", "static" ] or node.type == "function":
+
+ if not hasattr(target, "documentationAdded") and target.parent.type != "params":
+ old = []
+
+ # create commentsBefore
+ if target.hasChild("commentsBefore"):
+ commentsBefore = target.getChild("commentsBefore")
+
+ if commentsBefore.hasChild("comment"):
+ for child in commentsBefore.children:
+ if child.get("detail") in [ "javadoc", "qtdoc" ]:
+ old = parseText(child.get("text"), False)
+ commentsBefore.removeChild(child)
+ break
+
+ else:
+ commentsBefore = tree.Node("commentsBefore")
+ target.addChild(commentsBefore)
+
+ # create comment node
+ commentNode = tree.Node("comment")
+
+ if node.type == "function":
+ commentNode.set("text", fromFunction(node, assignType, name, alternative, old))
+ else:
+ commentNode.set("text", fromNode(node, assignType, name, alternative, old))
+
+ commentNode.set("detail", "javadoc")
+ commentNode.set("multiline", True)
+
+ commentsBefore.addChild(commentNode)
+
+ # in case of alternative methods, use the first one, ignore the others
+ target.documentationAdded = True
+
+
+
+
+
+ if node.hasChildren():
+ for child in node.children:
+ fill(child)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.pyc
new file mode 100644
index 0000000000..6d2ef53cb6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/comment.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.py
new file mode 100755
index 0000000000..91ce48b345
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.py
@@ -0,0 +1,1473 @@
+#!/usr/bin/env python
+
+import sys, string, re, optparse
+import config, tokenizer, filetool, treegenerator, variableoptimizer, comment, tree
+
+KEY = re.compile("^[A-Za-z0-9_]+$")
+INDENTSPACES = 2
+
+
+
+def compileToken(name, compact=False):
+ global pretty
+
+
+ if name in [ "INC", "DEC", "TYPEOF" ]:
+ pass
+
+ elif name in [ "INSTANCEOF", "IN" ]:
+ space()
+
+ elif not compact and pretty:
+ space()
+
+
+
+ if name == None:
+ write("=")
+
+ elif name in [ "TYPEOF", "INSTANCEOF", "IN" ]:
+ write(name.lower())
+
+ else:
+ for key in config.JSTOKENS:
+ if config.JSTOKENS[key] == name:
+ write(key)
+
+
+
+ if name in [ "INC", "DEC" ]:
+ pass
+
+ elif name in [ "TYPEOF", "INSTANCEOF", "IN" ]:
+ space()
+
+ elif not compact and pretty:
+ space()
+
+
+def space(force=True):
+ global indent
+ global result
+ global pretty
+ global afterLine
+ global afterBreak
+
+ if not force and not pretty:
+ return
+
+ if afterBreak or afterLine or result.endswith(" ") or result.endswith("\n"):
+ return
+
+ result += " "
+
+
+def write(txt=""):
+ global indent
+ global result
+ global pretty
+ global breaks
+ global afterLine
+ global afterBreak
+ global afterDivider
+ global afterArea
+
+ # strip remaining whitespaces
+ if (afterLine or afterBreak or afterDivider or afterArea) and result.endswith(" "):
+ result = result.rstrip()
+
+ if pretty:
+ # handle new line wishes
+ if afterArea:
+ nr = 9
+ elif afterDivider:
+ nr = 5
+ elif afterBreak:
+ nr = 2
+ elif afterLine:
+ nr = 1
+ else:
+ nr = 0
+
+ while not result.endswith("\n" * nr):
+ result += "\n"
+
+ elif breaks and not result.endswith("\n"):
+ if afterArea or afterDivider or afterBreak or afterLine:
+ result += "\n"
+
+ # reset
+ afterLine = False
+ afterBreak = False
+ afterDivider = False
+ afterArea = False
+
+ # add indent (if needed)
+ if pretty and result.endswith("\n"):
+ result += (" " * (INDENTSPACES * indent))
+
+ # append given text
+ result += txt
+
+
+def area():
+ global afterArea
+ afterArea = True
+
+
+def divide():
+ global afterDivider
+ afterDivider = True
+
+
+def sep():
+ global afterBreak
+ afterBreak = True
+
+
+def nosep():
+ global afterBreak
+ afterBreak = False
+
+
+def line():
+ global afterLine
+ afterLine = True
+
+
+def noline():
+ global afterLine
+ global afterBreak
+ global afterDivider
+ global afterArea
+
+ afterLine = False
+ afterBreak = False
+ afterDivider = False
+ afterArea = False
+
+
+def plus():
+ global indent
+ indent += 1
+
+
+def minus():
+ global indent
+ indent -= 1
+
+
+def semicolon():
+ global result
+ global breaks
+
+ noline()
+
+ if not (result.endswith("\n") or result.endswith(";")):
+ write(";")
+
+ if breaks:
+ result += "\n"
+
+
+def commentNode(node):
+ global pretty
+
+ if not pretty:
+ return
+
+ commentText = ""
+ commentIsInline = False
+
+ comment = node.getChild("commentsAfter", False)
+
+ if comment and not comment.get("inserted", False):
+ for child in comment.children:
+ if not child.isFirstChild():
+ commentText += " "
+
+ commentText += child.get("text")
+
+ if child.get("detail") == "inline":
+ commentIsInline = True
+
+ if commentText != "":
+ space()
+ write(commentText)
+
+ if commentIsInline:
+ line()
+ else:
+ space()
+
+ comment.set("inserted", True)
+
+
+
+def postProcessMap(m):
+ if m.get("maxKeyLength", False) != None:
+ return
+
+ maxKeyLength = 0
+ alignValues = True
+
+ if m.hasChildren():
+ for keyvalue in m.children:
+ if keyvalue.type != "keyvalue":
+ continue
+
+ currKeyLength = len(keyvalue.get("key"))
+
+ if keyvalue.get("quote", False) != None:
+ currKeyLength += 2
+
+ if currKeyLength > maxKeyLength:
+ maxKeyLength = currKeyLength
+
+ if alignValues and keyvalue.getChild("value").isComplex():
+ alignValues = False
+
+ m.set("maxKeyLength", maxKeyLength)
+ m.set("alignValues", alignValues)
+
+
+
+
+
+def compile(node, enablePretty=True, enableBreaks=False, enableDebug=False):
+ global indent
+ global result
+ global pretty
+ global debug
+ global breaks
+ global afterLine
+ global afterBreak
+ global afterDivider
+ global afterArea
+
+ indent = 0
+ result = u""
+ pretty = enablePretty
+ debug = enableDebug
+ breaks = enableBreaks
+ afterLine = False
+ afterBreak = False
+ afterDivider = False
+ afterArea = False
+
+ if enablePretty:
+ comment.fill(node)
+
+ compileNode(node)
+
+ return result
+
+
+
+
+
+
+
+
+
+
+def compileNode(node):
+
+ global pretty
+ global indent
+
+
+
+
+ #####################################################################################################################
+ # Recover styling
+ #####################################################################################################################
+
+ if pretty:
+ # Recover exclicit breaks
+ if node.get("breakBefore", False) and not node.isFirstChild(True):
+ sep()
+
+ # Additional explicit break before complex blocks
+ if node.hasParent() and not node.isFirstChild(True) and node.parent.type in [ "block", "file"] and node.isComplex():
+ sep()
+
+
+
+ #####################################################################################################################
+ # Insert comments before
+ #####################################################################################################################
+
+ if pretty:
+ if node.getChild("commentsBefore", False) != None:
+ commentCounter = 0
+ commentsBefore = node.getChild("commentsBefore")
+ isFirst = node.isFirstChild()
+ previous = node.getPreviousSibling(False, True)
+
+ if previous and previous.type in [ "case", "default" ]:
+ inCase = True
+ else:
+ inCase = False
+
+ inOperation = node.parent.type in [ "first", "second", "third" ] and node.parent.parent.type == "operation"
+
+ for child in commentsBefore.children:
+ docComment = child.get("detail") in [ "javadoc", "qtdoc" ]
+ headComment = child.get("detail") == "header"
+ areaComment = child.get("detail") == "area"
+ divComment = child.get("detail") == "divider"
+ blockComment = child.get("detail") == "block"
+ singleLineBlock = child.get("detail") != "inline" and child.get("multiline") == False
+
+ if not child.isFirstChild():
+ pass
+
+ elif inCase:
+ pass
+
+ elif singleLineBlock:
+ if child.get("begin"):
+ sep()
+ else:
+ space()
+
+ elif areaComment and not isFirst:
+ area()
+
+ elif divComment and not isFirst:
+ divide()
+
+ elif not isFirst:
+ sep()
+
+ elif inOperation:
+ sep()
+
+ elif not headComment:
+ line()
+
+ # reindenting first
+ text = child.get("text")
+
+ if child.get("detail") == "qtdoc":
+ text = comment.qt2javadoc(text)
+
+ write(comment.indent(text, INDENTSPACES * indent))
+
+ if singleLineBlock:
+ if child.get("detail") in [ "javadoc", "qtdoc" ]:
+ line()
+ elif child.get("end"):
+ sep()
+ else:
+ space()
+
+ # separator after divider/head comments and after block comments which are not for documentation
+ elif headComment or areaComment or divComment or blockComment:
+ sep()
+
+ else:
+ line()
+
+
+
+
+
+
+ #####################################################################################################################
+ # Opening...
+ #####################################################################################################################
+
+ #
+ # OPEN: FINALLY
+ ##################################
+
+ if node.type == "finally":
+ write("finally")
+
+
+ #
+ # OPEN: DELETE
+ ##################################
+
+ elif node.type == "delete":
+ write("delete")
+ space()
+
+
+ #
+ # OPEN: THROW
+ ##################################
+
+ elif node.type == "throw":
+ write("throw")
+ space()
+
+
+ #
+ # OPEN: NEW
+ ##################################
+
+ elif node.type == "instantiation":
+ write("new")
+ space()
+
+
+ #
+ # OPEN: RETURN
+ ##################################
+
+ elif node.type == "return":
+ write("return")
+
+ if node.hasChildren():
+ space()
+
+
+ #
+ # OPEN: DEFINITION LIST
+ ##################################
+
+ elif node.type == "definitionList":
+ write("var")
+ space()
+
+
+ #
+ # OPEN: BREAK
+ ##################################
+
+ elif node.type == "break":
+ write("break")
+
+ if node.get("label", False):
+ space()
+ write(node.get("label", False))
+
+
+ #
+ # OPEN: CONTINUE
+ ##################################
+
+ elif node.type == "continue":
+ write("continue")
+
+ if node.get("label", False):
+ space()
+ write(node.get("label", False))
+
+
+ #
+ # OPEN: FUNCTION
+ ##################################
+
+ elif node.type == "function":
+ write("function")
+
+ functionName = node.get("name", False)
+ if functionName != None:
+ space()
+ write(functionName)
+
+
+ #
+ # OPEN: IDENTIFIER
+ ##################################
+
+ elif node.type == "identifier":
+ name = node.get("name", False)
+ if name != None:
+ write(name)
+
+
+ #
+ # OPEN: DEFINITION
+ ##################################
+
+ elif node.type == "definition":
+ if node.parent.type != "definitionList":
+ write("var")
+ space()
+
+ write(node.get("identifier"))
+
+
+ #
+ # OPEN: CONSTANT
+ ##################################
+
+ elif node.type == "constant":
+ if node.get("constantType") == "string":
+ if node.get("detail") == "singlequotes":
+ write("'")
+ else:
+ write('"')
+
+ write(node.get("value"))
+
+ if node.get("detail") == "singlequotes":
+ write("'")
+ else:
+ write('"')
+
+ else:
+ write(node.get("value"))
+
+
+ #
+ # OPEN: COMMENT
+ ##################################
+
+ elif node.type == "comment":
+ if pretty:
+ # insert a space before and no newline in the case of after comments
+ if node.get("connection") == "after":
+ noline()
+ space()
+
+ write(node.get("text"))
+
+ # new line after inline comment (for example for syntactical reasons)
+ if node.get("detail") == "inline":
+ line()
+
+ else:
+ space()
+
+
+ #
+ # OPEN: RIGHT
+ ##################################
+
+ elif node.type == "right":
+ if node.parent.type == "accessor":
+ write(".")
+
+
+
+
+
+
+ #
+ # OPEN: ASSIGNMENT
+ ##################################
+
+ elif node.type == "assignment":
+ if node.parent.type == "definition":
+ oper = node.get("operator", False)
+
+ realNode = node.parent.parent
+
+ # be compact in for-loops
+ compact = realNode.hasParent() and realNode.parent.type in [ "first", "second", "third" ] and realNode.parent.parent.type == "loop" and realNode.parent.parent.get("loopType") == "FOR"
+ compileToken(oper, compact)
+
+
+
+
+
+ #
+ # OPEN: KEY
+ ##################################
+
+ elif node.type == "key":
+ if node.parent.type == "accessor":
+ write("[")
+
+
+ #
+ # OPEN: GROUP
+ ##################################
+
+ elif node.type == "group":
+ write("(")
+
+
+ #
+ # OPEN: VOID
+ ##################################
+
+ elif node.type == "void":
+ write("void")
+ write("(")
+
+
+ #
+ # OPEN: ARRAY
+ ##################################
+
+ elif node.type == "array":
+ write("[")
+
+ if node.hasChildren(True):
+ space(False)
+
+
+ #
+ # OPEN: PARAMS
+ ##################################
+
+ elif node.type == "params":
+ noline()
+ write("(")
+
+
+
+
+
+
+
+
+ #
+ # OPEN: CASE
+ ##################################
+
+ elif node.type == "case":
+ if pretty:
+ # force double new lines
+ if not node.isFirstChild() and not node.getPreviousSibling(True).type == "case":
+ sep()
+
+ minus()
+ line()
+
+ write("case")
+ space()
+
+
+ #
+ # OPEN: DEFAULT
+ ##################################
+
+ elif node.type == "default":
+ if pretty:
+ minus()
+
+ # force double new lines
+ if not node.getPreviousSibling(True).type == "case":
+ sep()
+
+ write("default")
+ write(":")
+
+ if pretty:
+ plus()
+ line()
+
+
+
+
+
+
+ #
+ # OPEN: TRY
+ ##################################
+
+ elif node.type == "switch":
+ # Additional new line before each switch/try
+ if not node.isFirstChild(True) and not node.getChild("commentsBefore", False):
+ prev = node.getPreviousSibling(False, True)
+
+ # No separation after case statements
+ if prev != None and prev.type in [ "case", "default" ]:
+ pass
+ else:
+ sep()
+
+ if node.get("switchType") == "catch":
+ write("try")
+ elif node.get("switchType") == "case":
+ write("switch")
+
+
+ #
+ # OPEN: CATCH
+ ##################################
+
+ elif node.type == "catch":
+ if pretty:
+ # If this statement block or the previous try were not complex, be not complex here, too
+ if not node.getChild("statement").getChild("block").isComplex() and not node.parent.getChild("statement").getChild("block").isComplex():
+ noline()
+ space()
+
+ write("catch")
+
+
+
+
+
+
+
+ #
+ # OPEN: MAP
+ ##################################
+
+ elif node.type == "map":
+ par = node.parent
+
+ if pretty:
+ postProcessMap(node)
+
+ if pretty:
+ # No break before return statement
+ if node.hasParent() and node.parent.type == "expression" and node.parent.parent.type == "return":
+ pass
+
+ elif node.isComplex():
+ line()
+
+ write("{")
+
+ if pretty:
+ if node.isComplex():
+ line()
+ plus()
+
+ elif node.hasChildren(True):
+ space()
+
+
+ #
+ # OPEN: KEYVALUE
+ ##################################
+
+ elif node.type == "keyvalue":
+ keyString = node.get("key")
+ keyQuote = node.get("quote", False)
+
+ if keyQuote != None:
+ # print "USE QUOTATION"
+ if keyQuote == "doublequotes":
+ keyString = '"' + keyString + '"'
+ else:
+ keyString = "'" + keyString + "'"
+
+ elif keyString in config.JSPROTECTED or not KEY.match(keyString):
+ print "Warning: Auto protect key: %s" % keyString
+ keyString = "\"" + keyString + "\""
+
+ if pretty and not node.isFirstChild(True) and not node.hasChild("commentsBefore") and node.getChild("value").isComplex():
+ sep()
+
+ write(keyString)
+ space(False)
+
+ # Fill with spaces
+ # Do this only if the parent is complex (many entries)
+ # But not if the value itself is complex
+ if pretty and node.parent.isComplex() and node.parent.get("alignValues"):
+ write(" " * (node.parent.get("maxKeyLength") - len(keyString)))
+
+ write(":")
+ space(False)
+
+
+
+
+
+
+
+ #
+ # OPEN: BLOCK
+ ##################################
+
+ elif node.type == "block":
+ if pretty:
+ if node.isComplex():
+ line()
+ else:
+ space()
+
+ write("{")
+
+ if pretty:
+ if node.hasChildren():
+ plus()
+ line()
+
+
+ #
+ # OPEN: LOOP
+ ##################################
+
+ elif node.type == "loop":
+ # Additional new line before each loop
+ if not node.isFirstChild(True) and not node.getChild("commentsBefore", False):
+ prev = node.getPreviousSibling(False, True)
+
+ # No separation after case statements
+ if prev != None and prev.type in [ "case", "default" ]:
+ pass
+ elif node.hasChild("elseStatement") or node.getChild("statement").hasBlockChildren():
+ sep()
+ else:
+ line()
+
+ loopType = node.get("loopType")
+
+ if loopType == "IF":
+ write("if")
+ space(False)
+
+ elif loopType == "WHILE":
+ write("while")
+ space(False)
+
+ elif loopType == "FOR":
+ write("for")
+ space(False)
+
+ elif loopType == "DO":
+ write("do")
+ space(False)
+
+ elif loopType == "WITH":
+ write("with")
+ space(False)
+
+ else:
+ print "Warning: Unknown loop type: %s" % loopType
+
+
+
+ #
+ # OPEN: ELSE
+ ##################################
+
+ elif node.type == "elseStatement":
+ if node.hasChild("commentsBefore"):
+ pass
+
+ elif pretty:
+ if not node.hasChild("block") and not node.hasChild("loop"):
+ pass
+
+ elif not node.isComplex():
+ noline()
+ space()
+
+ write("else")
+
+ # This is a elseStatement without a block around (a set of {})
+ if not node.hasChild("block"):
+ space()
+
+
+ #
+ # OPEN: EXPRESSION
+ ##################################
+
+ elif node.type == "expression":
+ if node.parent.type == "loop":
+ loopType = node.parent.get("loopType")
+
+ # only do-while loops
+ if loopType == "DO":
+ if pretty:
+ stmnt = node.parent.getChild("statement")
+ compact = stmnt.hasChild("block") and not stmnt.getChild("block").isComplex()
+
+ if compact:
+ noline()
+ space()
+
+ write("while")
+
+ if pretty:
+ space()
+
+ # open expression block of IF/WHILE/DO-WHILE/FOR statements
+ write("(")
+
+ elif node.parent.type == "catch":
+ # open expression block of CATCH statement
+ write("(")
+
+ elif node.parent.type == "switch" and node.parent.get("switchType") == "case":
+ # open expression block of SWITCH statement
+ write("(")
+
+
+ #
+ # OPEN: FIRST
+ ##################################
+
+ elif node.type == "first":
+ # for loop
+ if node.parent.type == "loop" and node.parent.get("loopType") == "FOR":
+ write("(")
+
+ # operation
+ elif node.parent.type == "operation":
+ # operation (var a = -1)
+ if node.parent.get("left", False) == True:
+ compileToken(node.parent.get("operator"), True)
+
+
+
+ #
+ # OPEN: SECOND
+ ##################################
+
+ elif node.type == "second":
+ # for loop
+ if node.parent.type == "loop" and node.parent.get("loopType") == "FOR":
+ if not node.parent.hasChild("first"):
+ write("(;")
+
+ # operation
+ elif node.parent.type == "operation":
+ if node.isComplex():
+ # (?: hook operation)
+ if node.parent.get("operator") == "HOOK":
+ sep()
+ else:
+ line()
+
+
+
+
+
+ #
+ # OPEN: THIRD
+ ##################################
+
+ elif node.type == "third":
+ # for loop
+ if node.parent.type == "loop" and node.parent.get("loopType") == "FOR":
+ if not node.parent.hasChild("second"):
+ if node.parent.hasChild("first"):
+ write(";")
+ space(False)
+ else:
+ write("(;;")
+
+ # operation
+ elif node.parent.type == "operation":
+ # (?: hook operation)
+ if node.parent.get("operator") == "HOOK":
+ if node.isComplex():
+ sep()
+
+
+ #
+ # OPEN: STATEMENT
+ ##################################
+
+ elif node.type == "statement":
+ # for loop
+ if node.parent.type == "loop" and node.parent.get("loopType") == "FOR":
+ if node.parent.get("forVariant") == "iter":
+ if not node.parent.hasChild("first") and not node.parent.hasChild("second") and not node.parent.hasChild("third"):
+ write("(;;");
+
+ elif not node.parent.hasChild("second") and not node.parent.hasChild("third"):
+ write(";")
+
+ write(")")
+
+ if not node.hasChild("block"):
+ space(False)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #####################################################################################################################
+ # Children content
+ #####################################################################################################################
+
+ if node.hasChildren():
+ for child in node.children:
+ if not node.type in [ "commentsBefore", "commentsAfter" ]:
+ compileNode(child)
+
+
+
+
+
+
+
+
+
+ #####################################################################################################################
+ # Closing node
+ #####################################################################################################################
+
+ #
+ # CLOSE: IDENTIFIER
+ ##################################
+
+ if node.type == "identifier":
+ if node.hasParent() and node.parent.type == "variable" and not node.isLastChild(True):
+ write(".")
+ elif node.hasParent() and node.parent.type == "label":
+ write(":")
+
+
+ #
+ # CLOSE: ACCESSOR
+ ##################################
+
+ elif node.type == "accessor":
+ if node.hasParent() and node.parent.type == "variable" and not node.isLastChild(True):
+ write(".")
+
+
+ #
+ # CLOSE: KEYVALUE
+ ##################################
+
+ elif node.type == "keyvalue":
+ if node.hasParent() and node.parent.type == "map" and not node.isLastChild(True):
+ noline()
+ write(",")
+
+ if pretty:
+ commentNode(node)
+
+ if node.getChild("value").isComplex():
+ sep()
+ elif node.parent.isComplex():
+ line()
+ else:
+ space()
+
+
+ #
+ # CLOSE: DEFINITION
+ ##################################
+
+ elif node.type == "definition":
+ if node.hasParent() and node.parent.type == "definitionList" and not node.isLastChild(True):
+ write(",")
+
+ if pretty:
+ commentNode(node)
+
+ if node.hasComplexChildren():
+ line()
+ else:
+ space()
+
+
+ #
+ # CLOSE: LEFT
+ ##################################
+
+ elif node.type == "left":
+ if node.hasParent() and node.parent.type == "assignment":
+ oper = node.parent.get("operator", False)
+
+ if node.parent.parent.type == "statementList":
+ realNode = node.parent.parent
+ else:
+ realNode = node.parent
+
+ # be compact in for-loops
+ compact = realNode.hasParent() and realNode.parent.type in [ "first", "second", "third" ] and realNode.parent.parent.type == "loop" and realNode.parent.parent.get("loopType") == "FOR"
+ compileToken(oper, compact)
+
+
+
+
+
+
+ #
+ # CLOSE: KEY
+ ##################################
+
+ elif node.type == "key":
+ if node.hasParent() and node.parent.type == "accessor":
+ write("]")
+
+
+ #
+ # CLOSE: GROUP
+ ##################################
+
+ elif node.type == "group":
+ if node.getChildrenLength(True) == 1:
+ noline()
+
+ write(")")
+
+
+ #
+ # CLOSE: VOID
+ ##################################
+
+ elif node.type == "void":
+ if node.getChildrenLength(True) == 1:
+ noline()
+
+ write(")")
+
+
+ #
+ # CLOSE: ARRAY
+ ##################################
+
+ elif node.type == "array":
+ if node.hasChildren(True):
+ space(False)
+
+ write("]")
+
+
+ #
+ # CLOSE: PARAMS
+ ##################################
+
+ elif node.type == "params":
+ write(")")
+
+
+ #
+ # CLOSE: MAP
+ ##################################
+
+ elif node.type == "map":
+ if pretty:
+ if node.isComplex():
+ line()
+ minus()
+
+ elif node.hasChildren(True):
+ space()
+
+ write("}")
+
+
+
+
+
+
+ #
+ # CLOSE: SWITCH
+ ##################################
+
+ elif node.type == "switch":
+ if node.get("switchType") == "case":
+ if pretty:
+ minus()
+ minus()
+ line()
+
+ write("}")
+
+ if pretty:
+ commentNode(node)
+ line()
+
+ # Force a additinal line feed after each switch/try
+ if pretty and not node.isLastChild():
+ sep()
+
+
+ #
+ # CLOSE: CASE
+ ##################################
+
+ elif node.type == "case":
+ write(":")
+
+ if pretty:
+ commentNode(node)
+ plus()
+ line()
+
+
+
+
+
+
+
+
+ #
+ # CLOSE: BLOCK
+ ##################################
+
+ elif node.type == "block":
+ if pretty and node.hasChildren():
+ minus()
+ line()
+
+ write("}")
+
+ if pretty:
+ commentNode(node)
+
+ if node.hasChildren():
+ # Newline afterwards
+ if node.parent.type == "body" and node.parent.parent.type == "function":
+
+ # But only when this isn't a function block inside a assignment
+ if node.parent.parent.parent.type in [ "right", "params" ]:
+ pass
+
+ elif node.parent.parent.parent.type == "value" and node.parent.parent.parent.parent.type == "keyvalue":
+ pass
+
+ else:
+ line()
+
+ else:
+ line()
+
+
+ #
+ # CLOSE: LOOP
+ ##################################
+
+ elif node.type == "loop":
+ if node.get("loopType") == "DO":
+ semicolon()
+
+ if pretty:
+ commentNode(node)
+
+ # Force a additinal line feed after each loop
+ if not node.isLastChild():
+ if node.hasChild("elseStatement"):
+ sep()
+ elif node.getChild("statement").hasBlockChildren():
+ sep()
+ else:
+ line()
+
+
+ #
+ # CLOSE: FUNCTION
+ ##################################
+
+ elif node.type == "function":
+ if pretty:
+ commentNode(node)
+
+ if not node.isLastChild() and node.hasParent() and node.parent.type in [ "block", "file" ]:
+ sep()
+
+
+ #
+ # CLOSE: EXPRESSION
+ ##################################
+
+ elif node.type == "expression":
+ if node.parent.type == "loop":
+ write(")")
+
+ # e.g. a if-construct without a block {}
+ if node.parent.getChild("statement").hasChild("block"):
+ pass
+
+ elif node.parent.type == "loop" and node.parent.get("loopType") == "DO":
+ pass
+
+ else:
+ space(False)
+
+ elif node.parent.type == "catch":
+ write(")")
+
+ elif node.parent.type == "switch" and node.parent.get("switchType") == "case":
+ write(")")
+
+ if pretty:
+ commentNode(node)
+ line()
+
+ write("{")
+
+ if pretty:
+ plus()
+ plus()
+
+
+ #
+ # CLOSE: FIRST
+ ##################################
+
+ elif node.type == "first":
+ # for loop
+ if node.parent.type == "loop" and node.parent.get("loopType") == "FOR":
+ if node.parent.get("forVariant") == "iter":
+ write(";")
+
+ if node.parent.hasChild("second"):
+ space(False)
+
+ # operation
+ elif node.parent.type == "operation" and node.parent.get("left", False) != True:
+ oper = node.parent.get("operator")
+
+ if node.parent.parent.type == "statementList":
+ realNode = node.parent.parent
+ else:
+ realNode = node.parent
+
+ compact = realNode.hasParent() and realNode.parent.type in [ "first", "second", "third" ] and realNode.parent.parent.type == "loop" and realNode.parent.parent.get("loopType") == "FOR"
+ compileToken(oper, compact)
+
+
+ #
+ # CLOSE: SECOND
+ ##################################
+
+ elif node.type == "second":
+ # for loop
+ if node.parent.type == "loop" and node.parent.get("loopType") == "FOR":
+ write(";")
+
+ if node.parent.hasChild("third"):
+ space(False)
+
+ # operation
+ elif node.parent.type == "operation":
+ # (?: hook operation)
+ if node.parent.get("operator") == "HOOK":
+ noline()
+ space(False)
+ write(":")
+ space(False)
+
+
+
+
+
+
+
+
+
+ #
+ # CLOSE: OTHER
+ ##################################
+
+ if node.hasParent() and not node.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+
+ # Add comma dividers between statements in these parents
+ if node.parent.type in [ "array", "params", "statementList" ]:
+ if not node.isLastChild(True):
+ write(",")
+
+ if pretty:
+ commentNode(node)
+
+ if node.isComplex():
+ line()
+ else:
+ space()
+
+ # Semicolon handling
+ elif node.type in [ "block", "assignment", "call", "operation", "definitionList", "return", "break", "continue", "delete", "accessor", "instantiation", "throw", "variable" ]:
+
+ # Default semicolon handling
+ if node.parent.type in [ "block", "file" ]:
+ semicolon()
+
+ if pretty:
+ commentNode(node)
+ line()
+
+ if node.isComplex() and not node.isLastChild():
+ sep()
+
+ # Special handling for switch statements
+ elif node.parent.type == "statement" and node.parent.parent.type == "switch" and node.parent.parent.get("switchType") == "case":
+ semicolon()
+
+ if pretty:
+ commentNode(node)
+ line()
+
+ if node.isComplex() and not node.isLastChild():
+ sep()
+
+ # Special handling for loops (e.g. if) without blocks {}
+ elif node.parent.type in [ "statement", "elseStatement" ] and not node.parent.hasChild("block") and node.parent.parent.type == "loop":
+ semicolon()
+
+ if pretty:
+ commentNode(node)
+ line()
+
+ if node.isComplex() and not node.isLastChild():
+ sep()
+
+
+ #
+ # CLOSE: OTHER
+ ##################################
+
+ if pretty:
+ # Rest of the after comments (not inserted previously)
+ commentNode(node)
+
+
+
+
+
+
+
+
+
+
+
+def main():
+ parser = optparse.OptionParser()
+
+ parser.add_option("-w", "--write", action="store_true", dest="write", default=False, help="Writes file to incoming fileName + EXTENSION.")
+ parser.add_option("-e", "--extension", dest="extension", metavar="EXTENSION", help="The EXTENSION to use", default=".compiled")
+ parser.add_option("-c", "--compress", action="store_true", dest="compress", help="Enable compression", default=False)
+ parser.add_option("--optimize-variables", action="store_true", dest="optimizeVariables", default=False, help="Optimize variables. Reducing size.")
+ parser.add_option("--encoding", dest="encoding", default="utf-8", metavar="ENCODING", help="Defines the encoding expected for input files.")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) == 0:
+ print "Needs one or more arguments (files) to compile!"
+ sys.exit(1)
+
+ for fileName in args:
+ if options.write:
+ print "Compiling %s => %s%s" % (fileName, fileName, options.extension)
+ else:
+ print "Compiling %s => stdout" % fileName
+
+ restree = treegenerator.createSyntaxTree(tokenizer.parseFile(fileName, "", options.encoding))
+
+ if options.optimizeVariables:
+ variableoptimizer.search(restree, [], 0, "$")
+
+ compiledString = compile(restree, not options.compress)
+ if options.write:
+ filetool.save(fileName + options.extension, compiledString)
+
+ else:
+ try:
+ print compiledString
+
+ except UnicodeEncodeError:
+ print " * Could not encode result to ascii. Use '-w' instead."
+ sys.exit(1)
+
+
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.pyc
new file mode 100644
index 0000000000..371a29bc06
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/compiler.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.py
new file mode 100755
index 0000000000..5ac9b75500
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.py
@@ -0,0 +1,168 @@
+#!/usr/bin/env python
+
+import re
+
+
+
+
+#
+# FILE EXTENSIONS
+#
+
+JSEXT = ".js"
+PYEXT = ".py"
+XMLEXT = ".xml"
+TOKENEXT = ".txt"
+DIRIGNORE = [ ".svn", "CVS" ]
+
+
+
+
+#
+# QOOXDOO HEADER SUPPORT
+#
+
+QXHEAD = {
+ # TODO: Obsolete with 0.7
+ "defineClass" : re.compile('qx.OO.defineClass\(\s*["\']([\.a-zA-Z0-9_-]+)["\'](\s*\,\s*([\.a-zA-Z0-9_-]+))?', re.M),
+
+ # 0.7 API
+ "classDefine" : re.compile('qx.Clazz.define\(\s*["\']([\.a-zA-Z0-9_-]+)["\']?', re.M),
+ "superClass" : re.compile('extend\s*:\s*([\.a-zA-Z0-9_-]+)', re.M),
+
+ "id" : re.compile("#id\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "module" : re.compile("#module\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "require" : re.compile("#require\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "use" : re.compile("#use\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "after" : re.compile("#after\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "load" : re.compile("#load\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "optional" : re.compile("#optional\(\s*([\.a-zA-Z0-9_-]+?)\s*\)", re.M),
+ "resource" : re.compile("#resource\(\s*(.*?)\s*\)", re.M)
+}
+
+
+
+
+
+#
+# JAVASCRIPT SUPPORT
+#
+
+JSBUILTIN = [ "Object", "Array", "RegExp", "Math", "String", "Number", "Error" ]
+
+JSTOKENS = {
+ "." : "DOT",
+ "," : "COMMA",
+ ":" : "COLON",
+ "?" : "HOOK",
+ ";" : "SEMICOLON",
+ "!" : "NOT",
+ "~" : "BITNOT",
+ "\\" : "BACKSLASH",
+
+ "+" : "ADD",
+ "-" : "SUB",
+ "*" : "MUL",
+ "/" : "DIV",
+ "%" : "MOD",
+
+ "{" : "LC",
+ "}" : "RC",
+ "(" : "LP",
+ ")" : "RP",
+ "[" : "LB",
+ "]" : "RB",
+
+ "<" : "LT",
+ "<=" : "LE",
+ ">" : "GT",
+ ">=" : "GE",
+ "==" : "EQ",
+ "!=" : "NE",
+ "===" : "SHEQ",
+ "!==" : "SHNE",
+
+ "=" : "ASSIGN",
+
+ "+=" : "ASSIGN_ADD",
+ "-=" : "ASSIGN_SUB",
+ "*=" : "ASSIGN_MUL",
+ "/=" : "ASSIGN_DIV",
+ "%=" : "ASSIGN_MOD",
+
+ "|=" : "ASSIGN_BITOR",
+ "^=" : "ASSIGN_BITXOR",
+ "&=" : "ASSIGN_BITAND",
+ "<<=" : "ASSIGN_LSH",
+ ">>=" : "ASSIGN_RSH",
+ ">>>=" : "ASSIGN_URSH",
+
+ "&&" : "AND",
+ "||" : "OR",
+
+ "|" : "BITOR",
+ "^|" : "BITXOR",
+ "&" : "BITAND",
+
+ "^" : "POWEROF",
+
+ "<<" : "LSH",
+ ">>" : "RSH",
+ ">>>" : "URSH",
+
+ "++" : "INC",
+ "--" : "DEC",
+
+ "::" : "COLONCOLON",
+ ".." : "DOTDOT",
+
+ "@" : "XMLATTR",
+
+ "//" : "SINGLE_COMMENT",
+ "/*" : "COMMENT_START",
+ "*/" : "COMMENT_STOP",
+ "/*!" : "DOC_START"
+}
+
+JSPROTECTED = {
+ "null" : "NULL",
+ "Infinity" : "INFINITY",
+ "true" : "TRUE",
+ "false" : "FALSE",
+
+ "this" : "THIS",
+ "var" : "VAR",
+ "new" : "NEW",
+ "prototype" : "PROTOTYPE",
+ "return" : "RETURN",
+ "function" : "FUNCTION",
+
+ "while" : "WHILE",
+ "if" : "IF",
+ "else" : "ELSE",
+ "switch" : "SWITCH",
+ "case" : "CASE",
+ "default" : "DEFAULT",
+ "break" : "BREAK",
+ "continue" : "CONTINUE",
+ "goto" : "GOTO",
+ "do" : "DO",
+ "delete" : "DELETE",
+ "for" : "FOR",
+ "in" : "IN",
+ "with" : "WITH",
+ "try" : "TRY",
+ "catch" : "CATCH",
+ "finally" : "FINALLY",
+ "throw" : "THROW",
+ "instanceof" : "INSTANCEOF",
+ "typeof" : "TYPEOF",
+ "void" : "VOID",
+ "call" : "CALL",
+ "apply" : "APPLY"
+}
+
+JSSPACE_BEFORE = [ "INSTANCEOF", "IN" ]
+JSSPACE_AFTER = [ "VAR", "NEW", "GOTO", "INSTANCEOF", "TYPEOF", "DELETE", "IN", "THROW", "CASE" ]
+JSSPACE_AFTER_USAGE = [ "RETURN", "FUNCTION" ]
+JSPARANTHESIS_BEFORE = [ "ELSE", "FINALLY", "CATCH", "WHILE" ]
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.pyc
new file mode 100644
index 0000000000..44a5131104
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/config.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.py
new file mode 100755
index 0000000000..089b33b966
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+import os, codecs, cPickle, sys
+import textutil
+
+def save(filePath, content="", encoding="utf_8"):
+ # Normalize
+ filePath = normalize(filePath)
+
+ # Create directory
+ directory(os.path.dirname(filePath))
+
+ # Writing file
+ try:
+ outputFile = codecs.open(filePath, encoding=encoding, mode="w", errors="replace")
+ outputFile.write(content)
+ except IOError, (errno, strerror):
+ print " * I/O error(%s): %s" % (errno, strerror)
+ sys.exit(1)
+ except UnicodeDecodeError:
+ print " * Could not decode result to %s" % encoding
+ sys.exit(1)
+ except:
+ print " * Unexpected error:", sys.exc_info()[0]
+ sys.exit(1)
+
+ outputFile.flush()
+ outputFile.close()
+
+
+def directory(dirname):
+ # Normalize
+ dirname = normalize(dirname)
+
+ # Check/Create directory
+ if dirname != "" and not os.path.exists(dirname):
+ os.makedirs(dirname)
+
+
+def normalize(filename):
+ return os.path.normcase(os.path.normpath(filename))
+
+
+def read(filePath, encoding="utf_8"):
+ try:
+ ref = codecs.open(filePath, encoding=encoding, mode="r")
+ content = ref.read()
+ ref.close()
+
+ return textutil.any2Unix(unicode(content))
+
+ except IOError, (errno, strerror):
+ print " * I/O error(%s): %s" % (errno, strerror)
+ sys.exit(1)
+
+ except ValueError:
+ print " * Invalid Encoding. Required encoding %s in %s" % (encoding, filePath)
+ sys.exit(1)
+
+ except:
+ print " * Unexpected error:", sys.exc_info()[0]
+ sys.exit(1)
+
+
+def storeCache(cachePath, data):
+ try:
+ cPickle.dump(data, open(cachePath, 'w'), 2)
+
+ except EOFError or PickleError or PicklingError:
+ print " * Could not store cache to %s" % cachePath
+ sys.exit(1)
+
+
+def readCache(cachePath):
+ try:
+ return cPickle.load(open(cachePath))
+
+ except EOFError or PickleError or UnpicklingError:
+ print " * Could not read cache from %s" % cachePath
+ sys.exit(1)
+
+
+def checkCache(filePath, cachePath, internalModTime):
+ fileModTime = os.stat(filePath).st_mtime
+
+ try:
+ cacheModTime = os.stat(cachePath).st_mtime
+ except OSError:
+ cacheModTime = 0
+
+ if internalModTime > cacheModTime:
+ # print "Invalid cache: %s" % filePath
+ # print "%s > %s" % (internalModTime, cacheModTime)
+ return True
+
+ return fileModTime > cacheModTime
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.pyc
new file mode 100644
index 0000000000..3d4a983e3c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/filetool.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.py
new file mode 100755
index 0000000000..4a9209f3e0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.py
@@ -0,0 +1,816 @@
+#!/usr/bin/env python
+
+import sys, string, re, os, random, cPickle, codecs
+import config, tokenizer, treegenerator, filetool, stringoptimizer
+
+internalModTime = 0
+
+
+def validateFiles():
+
+ global internalModTime
+
+ base = os.path.dirname(os.path.abspath(sys.argv[0]))
+ if base.endswith("modules"):
+ path = base
+ else:
+ path = os.path.join(base, "modules")
+
+ maxFileModTime = os.stat(os.path.join(path, ".." + os.path.sep + "generator.py")).st_mtime
+
+ for root, dirs, files in os.walk(path):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for files
+ for fileName in files:
+ if os.path.splitext(fileName)[1] != config.PYEXT:
+ continue
+
+ filePath = os.path.join(root, fileName)
+ fileModTime = os.stat(filePath).st_mtime
+
+ if fileModTime > maxFileModTime:
+ maxFileModTime = fileModTime
+
+
+ internalModTime = maxFileModTime
+
+
+
+def getInternalModTime(options):
+
+ global internalModTime
+
+ if internalModTime == 0 and not options.disableInternalCheck:
+ validateFiles()
+
+ return internalModTime
+
+
+
+def extractFileContentId(data):
+ for item in config.QXHEAD["id"].findall(data):
+ return item
+
+ for item in config.QXHEAD["classDefine"].findall(data):
+ return item
+
+ # TODO: Obsolete with 0.7
+ for item in config.QXHEAD["defineClass"].findall(data):
+ return item[0]
+
+ return None
+
+
+def extractSuperClass(data):
+ for item in config.QXHEAD["superClass"].findall(data):
+ return item
+
+ # TODO: Obsolete with 0.7
+ for item in config.QXHEAD["defineClass"].findall(data):
+ return item[2]
+
+ return None
+
+
+def extractLoadtimeDeps(data, fileId=""):
+ deps = []
+
+ # qooxdoo specific:
+ # store inheritance deps
+ superClass = extractSuperClass(data)
+ if superClass != None and superClass != "" and not superClass in config.JSBUILTIN:
+ deps.append("qx.OO")
+ deps.append(superClass)
+ elif "qx.OO.defineClass(" in data:
+ deps.append("qx.OO")
+
+
+ # Adding explicit requirements
+ for item in config.QXHEAD["require"].findall(data):
+ if item == fileId:
+ print " - Self-referring load dependency: %s" % item
+ elif item in deps:
+ print " - Double definition of load dependency: %s" % item
+ else:
+ deps.append(item)
+
+ return deps
+
+
+def extractAfterDeps(data, fileId=""):
+ deps = []
+
+ # Adding explicit after requirements
+ for item in config.QXHEAD["after"].findall(data):
+ if item == fileId:
+ print " - Self-referring load dependency: %s" % item
+ elif item in deps:
+ print " - Double definition of load dependency: %s" % item
+ else:
+ deps.append(item)
+
+ return deps
+
+
+def extractRuntimeDeps(data, fileId=""):
+ deps = []
+
+ # Adding explicit runtime requirements
+ for item in config.QXHEAD["use"].findall(data):
+ if item == fileId:
+ print " - Self-referring runtime dependency: %s" % item
+ elif item in deps:
+ print " - Double definition of runtime dependency: %s" % item
+ else:
+ deps.append(item)
+
+ return deps
+
+
+def extractLoadDeps(data, fileId=""):
+ deps = []
+
+ # Adding before requirements
+ for item in config.QXHEAD["load"].findall(data):
+ if item == fileId:
+ print " - Self-referring runtime dependency: %s" % item
+ elif item in deps:
+ print " - Double definition of runtime dependency: %s" % item
+ else:
+ deps.append(item)
+
+ return deps
+
+
+def extractOptional(data):
+ deps = []
+
+ # Adding explicit requirements
+ for item in config.QXHEAD["optional"].findall(data):
+ if not item in deps:
+ deps.append(item)
+
+ return deps
+
+
+def extractModules(data):
+ mods = []
+
+ for item in config.QXHEAD["module"].findall(data):
+ if not item in mods:
+ mods.append(item)
+
+ return mods
+
+
+def extractResources(data):
+ res = []
+
+ for item in config.QXHEAD["resource"].findall(data):
+ res.append(item)
+
+ return res
+
+
+
+
+
+
+def getTokens(fileDb, fileId, options):
+ if not fileDb[fileId].has_key("tokens"):
+ if options.verbose:
+ print " - Generating tokens for %s..." % fileId
+
+ useCache = False
+ loadCache = False
+
+ fileEntry = fileDb[fileId]
+
+ filePath = fileEntry["path"]
+ fileEncoding = fileEntry["encoding"]
+
+ if options.cacheDirectory != None:
+ cachePath = os.path.join(filetool.normalize(options.cacheDirectory), fileId + "-tokens.pcl")
+ useCache = True
+
+ if not filetool.checkCache(filePath, cachePath, getInternalModTime(options)):
+ loadCache = True
+
+ if loadCache:
+ tokens = filetool.readCache(cachePath)
+ else:
+ fileContent = filetool.read(filePath, fileEncoding)
+ tokens = tokenizer.parseStream(fileContent, fileId)
+
+ if useCache:
+ if options.verbose:
+ print " - Caching tokens for %s..." % fileId
+
+ filetool.storeCache(cachePath, tokens)
+
+ fileDb[fileId]["tokens"] = tokens
+
+ return fileDb[fileId]["tokens"]
+
+
+
+
+def getTree(fileDb, fileId, options):
+ if not fileDb[fileId].has_key("tree"):
+ if options.verbose:
+ print " - Generating tree for %s..." % fileId
+
+ useCache = False
+ loadCache = False
+
+ fileEntry = fileDb[fileId]
+ filePath = fileEntry["path"]
+
+ if options.cacheDirectory != None:
+ cachePath = os.path.join(filetool.normalize(options.cacheDirectory), fileId + "-tree.pcl")
+ useCache = True
+
+ if not filetool.checkCache(filePath, cachePath, getInternalModTime(options)):
+ loadCache = True
+
+ if loadCache:
+ tree = filetool.readCache(cachePath)
+ else:
+ tree = treegenerator.createSyntaxTree(getTokens(fileDb, fileId, options))
+
+ if useCache:
+ if options.verbose:
+ print " - Caching tree for %s..." % fileId
+
+ filetool.storeCache(cachePath, tree)
+
+ fileDb[fileId]["tree"] = tree
+
+ return fileDb[fileId]["tree"]
+
+
+
+
+
+def getStrings(fileDb, fileId, options):
+ if not fileDb[fileId].has_key("strings"):
+ if options.verbose:
+ print " - Searching for strings in %s..." % fileId
+
+ useCache = False
+ loadCache = False
+
+ fileEntry = fileDb[fileId]
+ filePath = fileEntry["path"]
+
+ if options.cacheDirectory != None:
+ cachePath = os.path.join(filetool.normalize(options.cacheDirectory), fileId + "-strings.pcl")
+ useCache = True
+
+ if not filetool.checkCache(filePath, cachePath, getInternalModTime(options)):
+ loadCache = True
+
+ if loadCache:
+ strings = filetool.readCache(cachePath)
+ else:
+ strings = stringoptimizer.search(getTree(fileDb, fileId, options), options.verbose)
+
+ if useCache:
+ if options.verbose:
+ print " - Caching strings for %s..." % fileId
+
+ filetool.storeCache(cachePath, strings)
+
+ fileDb[fileId]["strings"] = strings
+
+ return fileDb[fileId]["strings"]
+
+
+
+
+
+def resolveAutoDeps(fileDb, options):
+ ######################################################################
+ # DETECTION OF AUTO DEPENDENCIES
+ ######################################################################
+
+ if options.verbose:
+ print " * Resolving dependencies..."
+ else:
+ print " * Resolving dependencies: ",
+
+ knownIds = []
+ depCounter = 0
+ hasMessage = False
+
+ for fileId in fileDb:
+ knownIds.append(fileId)
+
+ for fileId in fileDb:
+ fileEntry = fileDb[fileId]
+
+ if fileEntry["autoDeps"] == True:
+ continue
+
+ if not options.verbose:
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+ hasMessage = False
+
+ fileTokens = getTokens(fileDb, fileId, options)
+ fileDeps = []
+
+ assembledName = ""
+
+ for token in fileTokens:
+ if token["type"] == "name" or token["type"] == "builtin":
+ if assembledName == "":
+ assembledName = token["source"]
+ else:
+ assembledName += ".%s" % token["source"]
+
+ if assembledName in knownIds:
+ if assembledName != fileId and not assembledName in fileDeps:
+ fileDeps.append(assembledName)
+
+ assembledName = ""
+
+ elif not (token["type"] == "token" and token["source"] == "."):
+ if assembledName != "":
+ assembledName = ""
+
+ if token["type"] == "string" and token["source"] in knownIds and token["source"] != fileId and not token["source"] in fileDeps:
+ fileDeps.append(token["source"])
+
+
+ if options.verbose:
+ print " - Analysing %s..." % fileId
+
+ # Updating lists...
+ optionalDeps = fileEntry["optionalDeps"]
+ loadtimeDeps = fileEntry["loadtimeDeps"]
+ runtimeDeps = fileEntry["runtimeDeps"]
+
+ # Removing optional deps from list
+ for dep in optionalDeps:
+ if dep in fileDeps:
+ fileDeps.remove(dep)
+
+ if options.verbose:
+
+ # Checking loadtime dependencies
+ for dep in loadtimeDeps:
+ if not dep in fileDeps:
+ print " - Could not confirm #require(%s) in %s!" % (dep, fileId)
+
+ # Checking runtime dependencies
+ for dep in runtimeDeps:
+ if not dep in fileDeps:
+ print " - Could not confirm #use(%s) in %s!" % (dep, fileId)
+
+ # Adding new content to runtime dependencies
+ for dep in fileDeps:
+ if not dep in runtimeDeps and not dep in loadtimeDeps:
+ if options.verbose:
+ print " - Adding dependency: %s" % dep
+
+ runtimeDeps.append(dep)
+ depCounter += 1
+
+ # store flag to omit it the next run
+ fileEntry["autoDeps"] = True
+
+ if not hasMessage and not options.verbose:
+ print
+
+ print " * Added %s dependencies" % depCounter
+
+
+
+
+def storeEntryCache(fileDb, options):
+ print " * Storing file entries..."
+
+ cacheCounter = 0
+ ignoreDbEntries = [ "tokens", "tree", "path", "pathId", "encoding", "resourceInput", "resourceOutput", "sourceScriptPath", "listIndex", "scriptInput" ]
+
+ for fileId in fileDb:
+ fileEntry = fileDb[fileId]
+
+ if fileEntry["cached"] == True:
+ continue
+
+ # Store flag
+ fileEntry["cached"] = True
+
+ # Copy entries
+ fileEntryCopy = {}
+ for key in fileEntry:
+ if not key in ignoreDbEntries:
+ fileEntryCopy[key] = fileEntry[key]
+
+ filetool.storeCache(fileEntry["cachePath"], fileEntryCopy)
+ cacheCounter += 1
+
+ print " * Updated %s files" % cacheCounter
+
+
+
+
+def indexFile(filePath, filePathId, scriptInput, listIndex, scriptEncoding, sourceScriptPath, resourceInput, resourceOutput, options, fileDb={}, moduleDb={}):
+
+ ########################################
+ # Checking cache
+ ########################################
+
+ useCache = False
+ loadCache = False
+ cachePath = None
+
+ if options.cacheDirectory != None:
+ cachePath = os.path.join(filetool.normalize(options.cacheDirectory), filePathId + "-entry.pcl")
+ useCache = True
+
+ if not filetool.checkCache(filePath, cachePath, getInternalModTime(options)):
+ loadCache = True
+
+
+
+ ########################################
+ # Loading file content / cache
+ ########################################
+
+ if loadCache:
+ fileEntry = filetool.readCache(cachePath)
+ fileId = filePathId
+
+ else:
+ fileContent = filetool.read(filePath, scriptEncoding)
+
+ # Extract ID
+ fileContentId = extractFileContentId(fileContent)
+
+ # Search for valid ID
+ if fileContentId == None:
+ print " - Could not extract ID from file: %s. Using fileName!" % filePath
+ fileId = filePathId
+
+ else:
+ fileId = fileContentId
+
+ if fileId != filePathId:
+ print " - ID mismatch: CONTENT=%s != PATH=%s" % (fileContentId, filePathId)
+ sys.exit(1)
+
+ fileEntry = {
+ "autoDeps" : False,
+ "cached" : False,
+ "cachePath" : cachePath,
+ "optionalDeps" : extractOptional(fileContent),
+ "loadtimeDeps" : extractLoadtimeDeps(fileContent, fileId),
+ "runtimeDeps" : extractRuntimeDeps(fileContent, fileId),
+ "afterDeps" : extractAfterDeps(fileContent, fileId),
+ "loadDeps" : extractLoadDeps(fileContent, fileId),
+ "resources" : extractResources(fileContent),
+ "modules" : extractModules(fileContent)
+ }
+
+
+
+ ########################################
+ # Additional data
+ ########################################
+
+ # We don't want to cache these items
+ fileEntry["path"] = filePath
+ fileEntry["pathId"] = filePathId
+ fileEntry["encoding"] = scriptEncoding
+ fileEntry["resourceInput"] = resourceInput
+ fileEntry["resourceOutput"] = resourceOutput
+ fileEntry["sourceScriptPath"] = sourceScriptPath
+ fileEntry["listIndex"] = listIndex
+ fileEntry["scriptInput"] = scriptInput
+
+
+ ########################################
+ # Registering file
+ ########################################
+
+ # Register to file database
+ fileDb[fileId] = fileEntry
+
+ # Register to module database
+ for moduleId in fileEntry["modules"]:
+ if moduleDb.has_key(moduleId):
+ moduleDb[moduleId].append(fileId)
+ else:
+ moduleDb[moduleId] = [ fileId ]
+
+
+
+
+
+def indexSingleScriptInput(scriptInput, listIndex, options, fileDb={}, moduleDb={}):
+ scriptInput = filetool.normalize(scriptInput)
+
+ # Search for other indexed lists
+ if len(options.scriptEncoding) > listIndex:
+ scriptEncoding = options.scriptEncoding[listIndex]
+ else:
+ scriptEncoding = "utf-8"
+
+ if len(options.sourceScriptPath) > listIndex:
+ sourceScriptPath = options.sourceScriptPath[listIndex]
+ else:
+ sourceScriptPath = None
+
+ if len(options.resourceInput) > listIndex:
+ resourceInput = options.resourceInput[listIndex]
+ else:
+ resourceInput = None
+
+ if len(options.resourceOutput) > listIndex:
+ resourceOutput = options.resourceOutput[listIndex]
+ else:
+ resourceOutput = None
+
+ for root, dirs, files in os.walk(scriptInput):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for files
+ for fileName in files:
+ if os.path.splitext(fileName)[1] == config.JSEXT:
+ filePath = os.path.join(root, fileName)
+ filePathId = filePath.replace(scriptInput + os.sep, "").replace(config.JSEXT, "").replace(os.sep, ".")
+
+ indexFile(filePath, filePathId, scriptInput, listIndex, scriptEncoding, sourceScriptPath, resourceInput, resourceOutput, options, fileDb, moduleDb)
+
+
+def indexScriptInput(options):
+ if options.cacheDirectory != None:
+ filetool.directory(options.cacheDirectory)
+
+ print " * Indexing files... "
+
+ fileDb = {}
+ moduleDb = {}
+ listIndex = 0
+
+ for scriptInput in options.scriptInput:
+ indexSingleScriptInput(scriptInput, listIndex, options, fileDb, moduleDb)
+ listIndex += 1
+
+ print " * %s files were found" % len(fileDb)
+
+ if options.enableAutoDependencies:
+ resolveAutoDeps(fileDb, options)
+
+ if options.cacheDirectory != None:
+ storeEntryCache(fileDb, options)
+
+ return fileDb, moduleDb
+
+
+
+
+
+"""
+Simple resolver, just try to add items and put missing stuff around
+the new one.
+"""
+def addIdWithDepsToSortedList(sortedList, fileDb, fileId):
+ if not fileDb.has_key(fileId):
+ print " * Error: Couldn't find required file: %s" % fileId
+ return False
+
+ # Test if already in
+ if not fileId in sortedList:
+
+ # Including loadtime dependencies
+ for loadtimeDepId in fileDb[fileId]["loadtimeDeps"]:
+ if loadtimeDepId == fileId: break;
+ addIdWithDepsToSortedList(sortedList, fileDb, loadtimeDepId)
+
+ # Including after dependencies
+ for afterDepId in fileDb[fileId]["afterDeps"]:
+ if afterDepId == fileId: break;
+ addIdWithDepsToSortedList(sortedList, fileDb, afterDepId)
+
+ # Add myself
+ if not fileId in sortedList:
+ sortedList.append(fileId)
+
+ # Include runtime dependencies
+ for runtimeDepId in fileDb[fileId]["runtimeDeps"]:
+ addIdWithDepsToSortedList(sortedList, fileDb, runtimeDepId)
+
+ # Include load dependencies
+ for loadDepId in fileDb[fileId]["loadDeps"]:
+ addIdWithDepsToSortedList(sortedList, fileDb, loadDepId)
+
+
+
+
+
+"""
+Search for dependencies, but don't add them. Just use them to put
+the new class after the stuff which is required (if it's included, too)
+"""
+def addIdWithoutDepsToSortedList(sortedList, fileDb, fileId):
+ if not fileDb.has_key(fileId):
+ print " * Error: Couldn't find required file: %s" % fileId
+ return False
+
+ # Test if already in
+ if not fileId in sortedList:
+
+ # Search sortedList for files which needs this one and are already included
+ lowestIndex = None
+ currentIndex = 0
+ for lowId in sortedList:
+ for lowDepId in getResursiveLoadDeps([], fileDb, lowId, lowId):
+ if lowDepId == fileId and (lowestIndex == None or currentIndex < lowestIndex):
+ lowestIndex = currentIndex
+
+ currentIndex += 1
+
+ # Insert at defined index or just append new entry
+ if lowestIndex != None:
+ sortedList.insert(lowestIndex, fileId)
+ else:
+ sortedList.append(fileId)
+
+
+
+
+def getResursiveLoadDeps(deps, fileDb, fileId, ignoreId=None):
+ if fileId in deps:
+ return
+
+ if fileId != ignoreId:
+ deps.append(fileId)
+
+ # Including loadtime dependencies
+ for loadtimeDepId in fileDb[fileId]["loadtimeDeps"]:
+ getResursiveLoadDeps(deps, fileDb, loadtimeDepId)
+
+ # Including after dependencies
+ for afterDepId in fileDb[fileId]["afterDeps"]:
+ getResursiveLoadDeps(deps, fileDb, afterDepId)
+
+ return deps
+
+
+
+
+
+def getSortedList(options, fileDb, moduleDb):
+ includeWithDeps = []
+ excludeWithDeps = []
+ includeWithoutDeps = []
+ excludeWithoutDeps = []
+
+ sortedIncludeList = []
+ sortedExcludeList = []
+
+
+
+ # INCLUDE
+
+ # Add Modules and Files (with deps)
+ if options.includeWithDeps:
+ for include in options.includeWithDeps:
+ if include in moduleDb:
+ includeWithDeps.extend(moduleDb[include])
+
+ elif "*" in include or "?" in include:
+ regstr = "^(" + include.replace('.', '\\.').replace('*', '.*').replace('?', '.?') + ")$"
+ regexp = re.compile(regstr)
+
+ for fileId in fileDb:
+ if regexp.search(fileId):
+ if not fileId in includeWithDeps:
+ includeWithDeps.append(fileId)
+
+ else:
+ if not include in includeWithDeps:
+ includeWithDeps.append(include)
+
+
+ # Add Modules and Files (without deps)
+ if options.includeWithoutDeps:
+ for include in options.includeWithoutDeps:
+ if include in moduleDb:
+ includeWithoutDeps.extend(moduleDb[include])
+
+ elif "*" in include or "?" in include:
+ regstr = "^(" + include.replace('.', '\\.').replace('*', '.*').replace('?', '.?') + ")$"
+ regexp = re.compile(regstr)
+
+ for fileId in fileDb:
+ if regexp.search(fileId):
+ if not fileId in includeWithoutDeps:
+ includeWithoutDeps.append(fileId)
+
+ else:
+ if not include in includeWithoutDeps:
+ includeWithoutDeps.append(include)
+
+
+
+
+
+
+ # Add all if both lists are empty
+ if len(includeWithDeps) == 0 and len(includeWithoutDeps) == 0:
+ for fileId in fileDb:
+ includeWithDeps.append(fileId)
+
+ # Sorting include (with deps)
+ for fileId in includeWithDeps:
+ addIdWithDepsToSortedList(sortedIncludeList, fileDb, fileId)
+
+ # Sorting include (without deps)
+ for fileId in includeWithoutDeps:
+ addIdWithoutDepsToSortedList(sortedIncludeList, fileDb, fileId)
+
+
+
+ # EXCLUDE
+
+ # Add Modules and Files (with deps)
+ if options.excludeWithDeps:
+ for exclude in options.excludeWithDeps:
+ if exclude in moduleDb:
+ excludeWithDeps.extend(moduleDb[exclude])
+
+ elif "*" in exclude or "?" in exclude:
+ regstr = "^(" + exclude.replace('.', '\\.').replace('*', '.*').replace('?', '.?') + ")$"
+ regexp = re.compile(regstr)
+
+ for fileId in fileDb:
+ if regexp.search(fileId):
+ if not fileId in excludeWithDeps:
+ excludeWithDeps.append(fileId)
+
+ else:
+ if not exclude in excludeWithDeps:
+ excludeWithDeps.append(exclude)
+
+
+ # Add Modules and Files (without deps)
+ if options.excludeWithoutDeps:
+ for exclude in options.excludeWithoutDeps:
+ if exclude in moduleDb:
+ excludeWithoutDeps.extend(moduleDb[exclude])
+
+ elif "*" in exclude or "?" in exclude:
+ regstr = "^(" + exclude.replace('.', '\\.').replace('*', '.*').replace('?', '.?') + ")$"
+ regexp = re.compile(regstr)
+
+ for fileId in fileDb:
+ if regexp.search(fileId):
+ if not fileId in excludeWithDeps:
+ excludeWithoutDeps.append(fileId)
+
+ else:
+ if not exclude in excludeWithDeps:
+ excludeWithoutDeps.append(exclude)
+
+
+
+
+
+ # Sorting exclude (with deps)
+ for fileId in excludeWithDeps:
+ addIdWithDepsToSortedList(sortedExcludeList, fileDb, fileId)
+
+ # Sorting exclude (without deps)
+ for fileId in excludeWithoutDeps:
+ addIdWithoutDepsToSortedList(sortedExcludeList, fileDb, fileId)
+
+
+
+
+ # MERGE
+
+ # Remove excluded files from included files list
+ for fileId in sortedExcludeList:
+ if fileId in sortedIncludeList:
+ sortedIncludeList.remove(fileId)
+
+
+
+ # RETURN
+
+ return sortedIncludeList
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.pyc
new file mode 100644
index 0000000000..51d49a8ad2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/loader.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.py
new file mode 100755
index 0000000000..8d34450282
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+
+def convert(current):
+ # Possibilities with each character
+ # 1: 36 = 36
+ # 2: 36*36 = 1296
+ # 3: 36*36*36 = 46656
+
+ res = ""
+ length = len(table) - 1
+
+ if current / length > 0:
+ res += convert(current / length)
+
+ res += table[current % length]
+
+ return res
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.pyc
new file mode 100644
index 0000000000..93f461bc8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/mapper.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.py
new file mode 100755
index 0000000000..520a51fb44
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.py
@@ -0,0 +1,303 @@
+#!/usr/bin/env python
+
+import sys, re, os
+import config, filetool, treegenerator, tokenizer, compiler, textutil
+
+def entryCompiler(line):
+ # protect escaped equal symbols
+ line = line.replace("\=", "----EQUAL----")
+
+ splitLine = line.split("=")
+
+ if len(splitLine) != 2:
+ print " - Malformed entry: %s" % line
+ return
+
+ orig = splitLine[0].strip()
+ repl = splitLine[1].strip()
+
+ #print "%s :: %s" % (orig, value)
+
+ # recover protected equal symbols
+ orig = orig.replace("----EQUAL----", "=")
+ repl = repl.replace("----EQUAL----", "=")
+
+ return {"expr":re.compile(orig), "orig":orig, "repl":repl}
+
+
+
+
+def regtool(content, regs, patch, options):
+ for patchEntry in regs:
+ matches = patchEntry["expr"].findall(content)
+ itercontent = content
+ line = 1
+
+ for fragment in matches:
+ # Search for first match position
+ pos = itercontent.find(fragment)
+ pos = patchEntry["expr"].search(itercontent).start()
+
+ # Update current line
+ line += len((itercontent[:pos] + fragment).split("\n")) - 1
+
+ # Removing leading part til matching part
+ itercontent = itercontent[pos+len(fragment):]
+
+ # Debug
+ if options.verbose:
+ print " - Matches %s in %s" % (patchEntry["orig"], line)
+
+ # Replacing
+ if patch:
+ content = patchEntry["expr"].sub(patchEntry["repl"], content, 1)
+
+ else:
+ print " - line %s : (%s)" % (line, patchEntry["orig"])
+ print " %s" % patchEntry["repl"]
+
+ return content
+
+
+
+
+def getHtmlList(options):
+ htmlList = []
+
+ for htmlDir in options.migrationInput:
+ for root, dirs, files in os.walk(htmlDir):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for files
+ for fileName in files:
+ if os.path.splitext(fileName)[1] in [ ".js", ".html", ".htm", ".php", ".asp", ".jsp" ]:
+ htmlList.append(os.path.join(root, fileName))
+
+ return htmlList
+
+
+
+def handle(fileList, fileDb, options):
+ confPath = os.path.join(os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "migration"), options.migrationTarget)
+
+ infoPath = os.path.join(confPath, "info")
+ patchPath = os.path.join(confPath, "patches")
+
+ importedModule = False
+ infoList = []
+ patchList = []
+ htmlList = getHtmlList(options)
+
+
+
+
+ print " * Number of script input files: %s" % len(fileList)
+ print " * Number of HTML input files: %s" % len(htmlList)
+ print " * Update to version: %s" % options.migrationTarget
+
+
+
+ print " * Searching for patch module..."
+
+ for root, dirs, files in os.walk(confPath):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for files
+ for fileName in files:
+ filePath = os.path.join(root, fileName)
+
+ if os.path.splitext(fileName)[1] != config.PYEXT:
+ continue
+
+ if fileName == "patch.py":
+ print " - Importing..."
+
+ if not root in sys.path:
+ sys.path.insert(0, root)
+
+ import patch
+ importedModule = True
+
+
+
+
+
+
+
+ emptyLine = re.compile("^\s*$")
+
+
+
+ print " * Searching for info expression data..."
+
+ for root, dirs, files in os.walk(infoPath):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for files
+ for fileName in files:
+ filePath = os.path.join(root, fileName)
+
+ fileContent = textutil.any2Unix(filetool.read(filePath, "utf-8"))
+ infoList.append({"path":filePath, "content":fileContent.split("\n")})
+
+ if options.verbose:
+ print " - %s" % filePath
+
+ print " - Number of info files: %s" % len(infoList)
+
+ print " - Compiling expressions..."
+
+ compiledInfos = []
+
+ for infoFile in infoList:
+ print " - %s" % os.path.basename(infoFile["path"])
+ for line in infoFile["content"]:
+ if emptyLine.match(line) or line.startswith("#") or line.startswith("//"):
+ continue
+
+ compiled = entryCompiler(line)
+ if compiled != None:
+ compiledInfos.append(compiled)
+
+ print " - Number of infos: %s" % len(compiledInfos)
+
+
+
+
+ print " * Searching for patch expression data..."
+
+ for root, dirs, files in os.walk(patchPath):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for files
+ for fileName in files:
+ filePath = os.path.join(root, fileName)
+
+ fileContent = textutil.any2Unix(filetool.read(filePath, "utf-8"))
+ patchList.append({"path":filePath, "content":fileContent.split("\n")})
+
+ if options.verbose:
+ print " - %s" % filePath
+
+ print " - Number of patch files: %s" % len(patchList)
+
+ print " - Compiling expressions..."
+
+ compiledPatches = []
+
+ for patchFile in patchList:
+ print " - %s" % os.path.basename(patchFile["path"])
+ for line in patchFile["content"]:
+ if emptyLine.match(line) or line.startswith("#") or line.startswith("//"):
+ continue
+
+ compiled = entryCompiler(line)
+ if compiled != None:
+ compiledPatches.append(compiled)
+
+ print " - Number of patches: %s" % len(compiledPatches)
+
+
+
+
+
+
+
+
+ print
+ print " FILE PROCESSING:"
+ print "----------------------------------------------------------------------------"
+
+ if len(fileList) > 0:
+ print " * Processing script files:"
+
+ for fileId in fileList:
+ fileEntry = fileDb[fileId]
+
+ filePath = fileEntry["path"]
+ fileEncoding = fileEntry["encoding"]
+
+ print " - %s" % fileId
+
+ # Read in original content
+ fileContent = filetool.read(filePath, fileEncoding)
+ patchedContent = fileContent
+
+ # Apply patches
+ if importedModule:
+ tree = treegenerator.createSyntaxTree(tokenizer.parseStream(patchedContent))
+
+ # If there were any changes, compile the result
+ if patch.patch(fileId, tree):
+ patchedContent = compiler.compile(tree, True)
+
+ patchedContent = regtool(patchedContent, compiledPatches, True, options)
+ patchedContent = regtool(patchedContent, compiledInfos, False, options)
+
+ # Write file
+ if patchedContent != fileContent:
+ print " - Store modifications..."
+ filetool.save(filePath, patchedContent, fileEncoding)
+
+ print " * Done"
+
+
+
+ if len(htmlList) > 0:
+ print " * Processing HTML files:"
+
+ for filePath in htmlList:
+ print " - %s" % filePath
+
+ # Read in original content
+ fileContent = filetool.read(filePath)
+
+ patchedContent = fileContent
+ patchedContent = regtool(patchedContent, compiledPatches, True, options)
+ patchedContent = regtool(patchedContent, compiledInfos, False, options)
+
+ # Write file
+ if patchedContent != fileContent:
+ print " - Store modifications..."
+ filetool.save(filePath, patchedContent)
+
+ print " * Done"
+
+
+
+
+
+
+
+
+
+
+
+######################################################################
+# MAIN LOOP
+######################################################################
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.pyc
new file mode 100644
index 0000000000..78885cb200
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/migrator.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.py
new file mode 100755
index 0000000000..f4348b2d26
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.py
@@ -0,0 +1,438 @@
+#!/usr/bin/env python
+
+import tree, mapper
+
+qooxdooStart = [
+ # Properties
+ "_modify", "_check", "_unitDetection",
+
+ # Layout
+ "_applyRuntime",
+
+ # Cache Properties
+ "_resetRuntime", "_compute", "_change", "_invalidate", "_recompute",
+
+ # Property Methods
+ "set", "get", "force", "reset"
+]
+
+qooxdooNames = [
+ # Demos
+ "ROOT_LOGGER", "removeAllAppenders", "addAppender", "DivAppender",
+
+ # qx.ui.core.Widget.initApplyMethods
+ "_style",
+ "setStyleProperty", "removeStyleProperty",
+ "constant", "Core",
+
+ # Inheritance
+ "qx", "Proto", "Class"
+]
+
+systemNames = [
+ # Statement
+ "break","catch","continue","do","for","in","finally","function","if","else","return","switch","case","default",
+ "this","throw","try","var","while","with",
+
+ # Operator
+ "delete","false","instanceof","new","null","true","typeof","void",
+
+ # Function
+ "GetObject","ScriptEngine","ScriptEngineBuildVersion","ScriptEngineMajorVersion","ScriptEngineMinorVersion",
+
+ # Objects
+ "ActiveXObject","Arguments","Array","Boolean","Date","Dictionary","Enumerator","Error","FileSystemObject",
+ "Function","Global","Image","Math","Number","Object","RegExp","String","VBArray",
+
+ # Property
+ "$1","$2","$3","$4","$5",
+ "$6","$7","$8","$9","arguments","arity","callee","caller","constructor","description","E","global","ignoreCase",
+ "index","Infinity","input","lastIndex","leftContext","length","LN2","LN10","LOG2E","LOG10E","MAX_VALUE",
+ "MIN_VALUE","message","multiline","name","NaN","NEGATIVE_INFINITY","number","PI","POSITIVE_INFINITY",
+ "prototype","rightContext","source","SQRT1_2","SQRT2","undefined",
+
+ # Methods
+ "abs","acos","anchor","apply","asin",
+ "atan","atan2","atEnd","big","blink","bold","call","ceil","charAt","charCodeAt","compile","concat","cos",
+ "decodeURI","decodeURIComponent","dimensions","encodeURI","encodeURIComponent","escape","eval","exec",
+ "exp","fixed","floor","fontcolor","fontsize","fromCharCode","getDate","getDay","getFullYear","getHours",
+ "getItem","getMilliseconds","getMinutes","getMonth","getSeconds","getTime","getTimezoneOffset","getUTCDate",
+ "getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds",
+ "getVarDate","getYear","hasOwnProperty","indexOf","isFinite","isNaN","isPrototypeOf","italics","item","join",
+ "lastIndexOf","lastMatch","lastParen","lbound","link","localeCompare","log","match","max","min","moveFirst",
+ "moveNext","parse","parseFloat","parseInt","pop","pow","propertyIsEnumerable","push","random","replace",
+ "reverse","round","search","setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth",
+ "setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes",
+ "setUTCMonth","setUTCSeconds","setYear","shift","sin","slice","small","sort","splice","split","sqrt","strike",
+ "sub","substr","substring","sup","tan","test","toArray","toDateString","toExponential","toFixed","toGMTString",
+ "toLocaleDateString","toLocaleLowerCase","toLocaleString","toLocaleTimeString","toLocaleUpperCase","toLowerCase",
+ "toPrecision","toString","toTimeString","toUpperCase","toUTCString","ubound","unescape","unshift","unwatch","UTC",
+ "valueOf","watch",
+
+ # HTML Entity
+ "nbsp","lt","gt","amp","apos","quot","cent","pound","yen","sect","copy","reg","times","divide",
+
+ # DHTML Constant
+ "ATTRIBUTE_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_FRAGMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE",
+ "ELEMENT_NODE","ENTITY_NODE","ENTITY_REFERENCE_NODE","NOTATION_NODE","PROCESSING_INSTRUCTION_NODE","TEXT_NODE",
+ "NOTATION_FRAGMENT_NODE","DOMSTRING_SIZE_ERR","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","INUSE_ATTRIBUTE_ERR",
+ "INVALID_ACCESS_ERR","INVALID_CHARACTER_ERR","INVALID_MODIFICATION_ERR","INVALID_STATE_ERR","NAMESPACE_ERR",
+ "NOT_FOUND_ERR","NOT_SUPPORTED_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","SYNTAX_ERR",
+ "WRONG_DOCUMENT_ERR","ABORT","BLUR","CLICK","CHANGE","DBLCLICK","DRAGDROP","ERROR","FOCUS","KEYDOWN","KEYPRESS",
+ "KEYUP","LOAD","MOUSEDOWN","MOUSEMOVE","MOUSEOUT","MOUSEOVER","MOUSEUP","MOVE","RESET","RESIZE","SELECT","SUBMIT",
+ "UNLOAD","NODE_BEFORE","NODE_AFTER","NODE_BEFORE_AND_AFTER","NODE_INSIDE","START_TO_START","START_TO_END",
+ "END_TO_END","END_TO_START","BAD_BOUNDARYPOINTS_ERR","INVALID_NODE_TYPE_ERR","UNKNOWN_RULE","STYLE_RULE",
+ "CHARSET_RULE","IMPORT_RULE","MEDIA_RULE","FONT_FACE_RULE","PAGE_RULE","CSS_UNKNOWN","CSS_NUMBER","CSS_PERCENTAGE",
+ "CSS_EMS","CSS_EXS","CSS_PX","CSS_CM","CSS_MM","CSS_IN","CSS_PT","CSS_PC","CSS_DEG","CSS_RAD","CSS_GRAD","CSS_MS",
+ "CSS_S","CSS_HZ","CSS_KHZ","CSS_DIMENSION","CSS_STRING","CSS_URI","CSS_IDENT","CSS_ATTR","CSS_COUNTER","CSS_RECT",
+ "CSS_RGBCOLOR","CSS_INHERIT","CSS_PRIMITIVE_VALUE","CSS_VALUE_LIST","CSS_CUSTOM","STATE_MAXIMIZED","STATE_MINIMIZED",
+ "STATE_NORMAL","DOCUMENT_POSITION_DISCONNECTED","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING",
+ "DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC",
+ "CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","MOUSEDOWN","MOUSEUP","MOUSEOVER","MOUSEOUT","MOUSEMOVE",
+ "MOUSEDRAG","CLICK","DBLCLICK","KEYDOWN","KEYUP","KEYPRESS","DRAGDROP","FOCUS","BLUR","SELECT","CHANGE",
+ "RESET","SUBMIT","SCROLL","LOAD","UNLOAD","XFER_DONE","ABORT","ERROR","LOCATE","MOVE","RESIZE","FORWARD",
+ "HELP","BACK","TEXT","ALT_MASK","CONTROL_MASK","SHIFT_MASK","META_MASK","SCROLL_PAGE_UP","SCROLL_PAGE_DOWN",
+ "DOM_VK_CANCEL","DOM_VK_HELP","DOM_VK_BACK_SPACE","DOM_VK_TAB","DOM_VK_CLEAR","DOM_VK_RETURN","DOM_VK_ENTER",
+ "DOM_VK_SHIFT","DOM_VK_CONTROL","DOM_VK_ALT","DOM_VK_PAUSE","DOM_VK_CAPS_LOCK","DOM_VK_ESCAPE","DOM_VK_SPACE",
+ "DOM_VK_PAGE_UP","DOM_VK_PAGE_DOWN","DOM_VK_END","DOM_VK_HOME","DOM_VK_LEFT","DOM_VK_UP","DOM_VK_RIGHT","DOM_VK_DOWN",
+ "DOM_VK_PRINTSCREEN","DOM_VK_INSERT","DOM_VK_DELETE","DOM_VK_0","DOM_VK_1","DOM_VK_2","DOM_VK_3","DOM_VK_4","DOM_VK_5",
+ "DOM_VK_6","DOM_VK_7","DOM_VK_8","DOM_VK_9","DOM_VK_SEMICOLON","DOM_VK_EQUALS","DOM_VK_A","DOM_VK_B","DOM_VK_C",
+ "DOM_VK_D","DOM_VK_E","DOM_VK_F","DOM_VK_G","DOM_VK_H","DOM_VK_I","DOM_VK_J","DOM_VK_K","DOM_VK_L","DOM_VK_M",
+ "DOM_VK_N","DOM_VK_O","DOM_VK_P","DOM_VK_Q","DOM_VK_R","DOM_VK_S","DOM_VK_T","DOM_VK_U","DOM_VK_V","DOM_VK_W",
+ "DOM_VK_X","DOM_VK_Y","DOM_VK_Z","DOM_VK_CONTEXT_MENU","DOM_VK_NUMPAD0","DOM_VK_NUMPAD1","DOM_VK_NUMPAD2",
+ "DOM_VK_NUMPAD3","DOM_VK_NUMPAD4","DOM_VK_NUMPAD5","DOM_VK_NUMPAD6","DOM_VK_NUMPAD7","DOM_VK_NUMPAD8","DOM_VK_NUMPAD9",
+ "DOM_VK_MULTIPLY","DOM_VK_ADD","DOM_VK_SEPARATOR","DOM_VK_SUBTRACT","DOM_VK_DECIMAL","DOM_VK_DIVIDE","DOM_VK_F1",
+ "DOM_VK_F2","DOM_VK_F3","DOM_VK_F4","DOM_VK_F5","DOM_VK_F6","DOM_VK_F7","DOM_VK_F8","DOM_VK_F9","DOM_VK_F10",
+ "DOM_VK_F11","DOM_VK_F12","DOM_VK_F13","DOM_VK_F14","DOM_VK_F15","DOM_VK_F16","DOM_VK_F17","DOM_VK_F18","DOM_VK_F19",
+ "DOM_VK_F20","DOM_VK_F21","DOM_VK_F22","DOM_VK_F23","DOM_VK_F24","DOM_VK_NUM_LOCK","DOM_VK_SCROLL_LOCK","DOM_VK_COMMA",
+ "DOM_VK_PERIOD","DOM_VK_SLASH","DOM_VK_BACK_QUOTE","DOM_VK_OPEN_BRACKET","DOM_VK_BACK_SLASH","DOM_VK_CLOSE_BRACKET",
+ "DOM_VK_QUOTE","DOM_VK_META","MODIFICATION","ADDITION","REMOVAL","INVALID_EXPRESSION_ERR","TYPE_ERR","ANY_TYPE",
+ "NUMBER_TYPE","STRING_TYPE","BOOLEAN_TYPE","UNORDERED_NODE_ITERATOR_TYPE","ORDERED_NODE_ITERATOR_TYPE",
+ "UNORDERED_NODE_SNAPSHOT_TYPE","ORDERED_NODE_SNAPSHOT_TYPE","ANY_UNORDERED_NODE_TYPE","FIRST_ORDERED_NODE_TYPE",
+ "UNSPECIFIED_EVENT_TYPE_ERR",
+
+ # DHTML Object
+ "a","AbstractView","acronym","address","applet","area","Attr","attribute","b",
+ "BarProp","base","baseFont","bdo","BeforeUnloadEvent","bgSound","big","blockQuote","body","br","button",
+ "CanvasGradient","CanvasPattern","CanvasRenderingContext2D","caption","CDATASection","center","CharacterData",
+ "ChromeWindow","cite","clientInformation","clipboardData","code","col","colGroup","comment","Comment","Counter",
+ "CSS2Properties","CSSCharsetRule","CSSFontFaceRule","CSSImportRule","CSSMediaRule","CSSPageRule","CSSPrimitiveValue",
+ "CSSRGBColor","CSSRule","CSSRuleList","CSSStyleDeclaration","CSSStyleRule","CSSStyleSheet","CSSUnknownRule",
+ "CSSValue","CSSValueList","currentStyle","custom","dataTransfer","dd","defaults","del","dfn","dir","div","dl",
+ "document","Document","DocumentCSS","DocumentEvent","DocumentFragment","DocumentRange","DocumentStyle",
+ "DocumentType","DocumentView","DOMException","DOMImplementation","DOMImplementationCSS","DOMParser",
+ "DOMStringList","dt","Element","ElementCSSInlineStyle","em","embed","Entity","EntityReference","event",
+ "Event","EventException","EventListener","EventTarget","external","fieldSet","font","form","frame","frameSet",
+ "h","head","history","History","hr","html","HTMLAnchorElement","HTMLAppletElement","HTMLAreaElement",
+ "HTMLBRElement","HTMLBaseElement","HTMLBaseFontElement","HTMLBodyElement","HTMLButtonElement","HTMLCanvasElement",
+ "HTMLCollection","HTMLDListElement","HTMLDirectoryElement","HTMLDivElement","HTMLDocument","HTMLDOMImplementation",
+ "HTMLElement","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement",
+ "HTMLFrameSetElement","HTMLHRElement","HTMLHeadElement","HTMLHeadingElement","HTMLHtmlElement","HTMLIFrameElement",
+ "HTMLImageElement","HTMLInputElement","HTMLIsIndexElement","HTMLLIElement","HTMLLabelElement","HTMLLegendElement",
+ "HTMLLinkElement","HTMLMapElement","HTMLMenuElement","HTMLMetaElement","HTMLModElement","HTMLOListElement",
+ "HTMLObjectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOptionsCollection","HTMLParagraphElement",
+ "HTMLParamElement","HTMLPreElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLStyleElement",
+ "HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableElement","HTMLTableRowElement",
+ "HTMLTableSectionElement","HTMLTextAreaElement","HTMLTitleElement","HTMLUListElement","i","iframe","ImageDocument",
+ "img","implementation","IMPORT","input","ins","isIndex","kbd","KeyboardEvent","KeyEvent","label","legend","li",
+ "link","LinkStyle","listing","location","Location","map","marquee","MediaList","menu","meta","MimeType",
+ "MimeTypeArray","MouseEvent","MutationEvent","NamedNodeMap","NameList","namespace","navigator","Navigator",
+ "nextID","noBR","Node","NodeList","noFrames","noScript","Notation","NSDocument","NSEvent","NSHTMLAnchorElement",
+ "NSHTMLAreaElement","NSHTMLButtonElement","NSHTMLDocument","NSHTMLElement","NSHTMLFormElement","NSHTMLFrameElement",
+ "NSHTMLHRElement","NSHTMLImageElement","NSHTMLInputElement","NSHTMLOptionElement","NSHTMLSelectElement",
+ "NSHTMLTextAreaElement","NSRange","NSUIEvent","object","ol","optGroup","option","p","page","PageTransitionEvent",
+ "param","plainText","Plugin","PluginArray","popup","PopupBlockedEvent","pre","ProcessingInstruction","q","Range",
+ "RangeException","Rect","RGBColor","rt","ruby","rule","runtimeStyle","s","samp","SchemaLoader","screen","Screen",
+ "script","select","selection","Selection","small","SmartCardEvent","span","strike","strong","style","styleSheet",
+ "StyleSheet","StyleSheetList","sub","sup","Supports","table","TableSectionElement","tBody","td","Text","textArea",
+ "TextNode","TextRange","TextRectangle","tFoot","th","tHead","title","tr","TreeWalker","tt","u","UIEvent","ul",
+ "userProfile","URI","var","ViewCSS","wbr","WebBrowser","WebNavigation","window","Window","Window2","WindowCollection",
+ "WindowInternal","xml","XMLDocument","XMLHttpRequest","XMLSerializer","xmp","XPathEvaluator","XPathException",
+ "XPathExpression","XPathNSResolver","XPathResult","XPointerResult","XSLTProcessor",
+
+ # DHTML Property
+ "_content","abbr","accelerator",
+ "accept","acceptCharset","accessKey","action","activeElement","additive","align","aLink","alinkColor","allowTransparency",
+ "alt","altHTML","altKey","altLeft","anchorNode","anchorOffset","appCodeName","APPLICATION","appMinorVersion","appName",
+ "appVersion","archive","async","ATOMICSELECTION","attrChange","attrName","autocomplete","availHeight","availLeft",
+ "availTop","availWidth","azimuth","axis","background","backgroundAttachment","backgroundColor","backgroundImage",
+ "backgroundPosition","backgroundPositionX","backgroundPositionY","backgroundRepeat","balance","Banner",
+ "BannerAbstract","BaseHref","baseURI","behavior","bgColor","BGCOLOR","bgProperties","blockDirection","blue",
+ "booleanValue","border","borderBottom","borderBottomColor","borderBottomStyle","borderBottomWidth","borderCollapse",
+ "borderColor","borderColorDark","borderColorLight","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth",
+ "borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop",
+ "borderTopColor","borderTopStyle","borderTopWidth","borderWidth","borderWidths","bottom","bottomMargin","boundingHeight",
+ "boundingLeft","boundingTop","boundingWidth","browserDOMWindow","browserLanguage","bubbles","bufferDepth","button",
+ "cancelable","cancelBubble","canHaveChildren","canHaveHTML","canvas","caption","captionSide","cellIndex","cellPadding",
+ "cellSpacing","ch","channel","charCode","charset","checked","characterSet","chOff","cite","classid","className",
+ "clear","clientHeight","clientLeft","clientTop","clientWidth","clientX","clientY","clip","clipBottom","clipLeft",
+ "clipRight","clipTop","cloneContents","closed","code","codeBase","codeType","collapsed","color","colorDepth","cols",
+ "colSpan","columnNumber","commonAncestorContainer","compact","compatMode","complete","content","contentDocument",
+ "contentEditable","contentOverflow","contentType","contentWindow","cookie","cookieEnabled","coords","Count",
+ "counterIncrement","counterReset","cpuClass","crypto","cssFloat","cssRules","cssText","cssValueType","ctrlKey",
+ "ctrlLeft","cue","cueAfter","cueBefore","current","currentNode","currentTarget","cursor","data","dataFld","DATAFLD",
+ "dataFormatAs","DATAFORMATAS","dataPageSize","dataSrc","DATASRC","dateTime","declare","defaultCharset",
+ "defaultChecked","defaultSelected","defaultStatus","defaultValue","defaultView","defer","description","designMode",
+ "detail","deviceXDPI","deviceYDPI","dialogArguments","dialogHeight","dialogLeft","dialogTop","dialogWidth","dir",
+ "direction","directories","disabled","display","displays","doctype","document","documentElement","documentURI",
+ "domain","domConfig","dropEffect","dynsrc","effectAllowed","elevation","emptyCells","enabledPlugin","encoding",
+ "enctype","endContainer","endOffset","entities","event","eventPhase","expandEntityReferences","expando",
+ "explicitOriginalTarget","face","fgColor","FieldDelim","fileCreatedDate","fileModifiedDate","filename","fileSize",
+ "fileUpdatedDate","fillStyle","filter","firstChild","focusNode","focusOffset","font","fontFamily","fontSize",
+ "fontSizeAdjust","fontSmoothingEnabled","fontStretch","fontStyle","fontVariant","fontWeight","form","formName",
+ "frame","frameBorder","frameElement","frameSpacing","fromElement","fullScreen","galleryImg","globalAlpha",
+ "globalCompositeOperation","green","hash","hasLayout","headers","height","hidden","hideFocus","history","host",
+ "hostname","href","hreflang","hspace","htmlFor","htmlText","httpEquiv","id","identifier","imageIsOverflowing",
+ "imageIsResized","imageRequest","imageResizingEnabled","imeMode","implementation","indeterminate","index","inner",
+ "innerHeight","innerHTML","innerText","innerWidth","inputEncoding","internalSubset","invalidIteratorState","isChar",
+ "isCollapsed","isContentEditable","isDisabled","isMap","isMultiLine","isOpen","isTextEdit","isTrusted","keyCode",
+ "label","lang","language","lastChild","lastModified","layerX","layerY","layoutFlow","layoutGrid","layoutGridChar",
+ "layoutGridLine","layoutGridMode","layoutGridType","left","leftMargin","length","letterSpacing","lineBreak","lineCap",
+ "lineHeight","lineJoin","lineNumber","lineWidth","link","linkColor","listStyle","listStyleImage","listStylePosition",
+ "listStyleType","localName","location","locationbar","logicalXDPI","logicalYDPI","longDesc","loop","loop","lowsrc",
+ "lowSrc","margin","marginBottom","marginHeight","marginLeft","marginRight","margins","marginTop","marginWidth",
+ "markerOffset","marks","maxHeight","maxLength","maxWidth","media","mediaText","menuArguments","menubar","message",
+ "metaKey","method","Methods","minHeight","minWidth","miterLimit","MozAppearance","MozBackgroundClip",
+ "MozBackgroundInlinePolicy","MozBackgroundOrigin","MozBinding","MozBorderBottomColors","MozBorderLeftColors",
+ "MozBorderRadius","MozBorderRadiusBottomleft","MozBorderRadiusBottomright","MozBorderRadiusTopleft",
+ "MozBorderRadiusTopright","MozBorderRightColors","MozBorderTopColors","MozBoxAlign","MozBoxDirection","MozBoxFlex",
+ "MozBoxOrdinalGroup","MozBoxOrient","MozBoxPack","MozBoxSizing","MozColumnCount","MozColumnGap","MozColumnWidth",
+ "MozFloatEdge","MozForceBrokenImageIcon","MozImageRegion","MozMarginEnd","MozMarginStart","MozOpacity","MozOutline",
+ "MozOutlineColor","MozOutlineOffset","MozOutlineRadius","MozOutlineRadiusBottomleft","MozOutlineRadiusBottomright",
+ "MozOutlineRadiusTopleft","MozOutlineRadiusTopright","MozOutlineStyle","MozOutlineWidth","MozPaddingEnd",
+ "MozPaddingStart","MozUserFocus","MozUserInput","MozUserModify","MozUserSelect","multipart","multiple","name",
+ "nameProp","namespaceURI","naturalHeight","naturalWidth","navigator","newValue","next","nextPage","nextSibling",
+ "nodeName","nodeType","nodeValue","noHref","noResize","noShade","notationName","notations","noWrap","numberValue",
+ "object","offscreenBuffering","offsetHeight","offsetLeft","offsetParent","offsetTop","offsetWidth","offsetX",
+ "offsetY","onBefore","onLine","opacity","opener","originalTarget","orphans","oscpu","outerHeight","outerHTML",
+ "outerText","outerWidth","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","overflow","overflowX",
+ "overflowY","ownerDocument","ownerElement","ownerNode","ownerRule","owningElement","padding","paddingBottom",
+ "paddingLeft","paddingRight","paddings","paddingTop","page","pageBreakAfter","pageBreakBefore","pageBreakInside",
+ "pageX","pageXOffset","pageY","pageYOffset","palette","parent","parentElement","parentNode","parentRule",
+ "parentStyleSheet","parentTextEdit","parentWindow","pathname","pause","pauseAfter","pauseBefore","persisted",
+ "personalbar","pitch","pitchRange","pixelBottom","pixelDepth","pixelHeight","pixelLeft","pixelRight","pixelTop",
+ "pixelWidth","pkcs11","platform","playDuring","pluginspage","popupWindowFeatures","popupWindowURI","port","posBottom",
+ "posHeight","position","posLeft","posRight","posTop","posWidth","preferredStylesheetSet","prefix","previous",
+ "previousSibling","prevValue","primitiveType","product","productSub","profile","prompt","prompter","propertyName",
+ "protocol","pseudoClass","publicId","qualifier","quotes","rangeCount","rangeOffset","rangeParent","readOnly",
+ "readyState","reason","recordNumber","recordset","red","referrer","rel","relatedNode","relatedTarget","repeat",
+ "requestingWindowURI","responseText","responseXML","result","resultType","returnValue","rev","richness","right",
+ "rightMargin","root","rowIndex","rows","rowSpan","rubyAlign","rubyOverhang","rubyPosition","rules","saveType",
+ "scheme","scope","scopeName","screen","screenLeft","screenTop","screenX","screenY","scroll","scrollAmount",
+ "scrollbar3dLightColor","scrollbarArrowColor","scrollbarBaseColor","scrollbarDarkShadowColor","scrollbarFaceColor",
+ "scrollbarHighlightColor","scrollbars","scrollbarShadowColor","scrollbarTrackColor","scrollDelay","scrollHeight",
+ "scrolling","scrollLeft","scrollMaxX","scrollMaxY","scrollTop","scrollX","scrollY","scrollWidth","search",
+ "sectionRowIndex","SECURITY","securityPolicy","selected","selectedIndex","selectionEnd","selectionStart","selector",
+ "selectorText","self","separator","shape","sheet","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY",
+ "shiftKey","shiftLeft","sidebar","singleNodeValue","size","snapshotLength","sourceIndex","span","speak","speakHeader",
+ "speakNumeral","speakPunctuation","specified","speechRate","src","srcElement","srcFilter","srcUrn","standby","start",
+ "startContainer","startOffset","status","statusbar","statusText","stress","strictErrorChecking","stringValue",
+ "strokeStyle","style","STYLE","styleFloat","styleSheet","suffixes","summary","systemId","systemLanguage","tabIndex",
+ "tableLayout","tabStop","tagName","tagUrn","target","text","textAlign","textAlignLast","textAutospace","textContent",
+ "textDecoration","textDecorationBlink","textDecorationLineThrough","textDecorationNone","textDecorationOverline",
+ "textDecorationUnderline","textIndent","textJustify","textKashidaSpace","textLength","textOverflow","textShadow",
+ "textTransform","textUnderlinePosition","textZoom","tFoot","tHead","timeStamp","title","tmpRealOriginalTarget",
+ "toElement","tokenName","toolbar","top","topMargin","trueSpeed","type","typeDetail","unicodeBidi","uniqueID","units",
+ "unselectable","UNSELECTABLE","updateInterval","URL","URLUnencoded","urn","useMap","userAgent","userLanguage","vAlign",
+ "value","valueType","vcard_name","vendor","vendorSub","version","verticalAlign","view","viewInheritStyle","viewLink",
+ "viewMasterTab","visibility","visible","vLink","vlinkColor","voiceFamily","volume","vspace","whatToShow","wheelDelta",
+ "which","whiteSpace","widows","width","window","windowRoot","windowState","wordBreak","wordSpacing","wordWrap","wrap",
+ "writingMode","x","XMLDocument","xmlEncoding","XMLNS","xmlStandalone","xmlVersion","XSLDocument","y","zIndex","zoom",
+
+ # DHTML Method
+ "abort","add","addBehavior","addBinding","addColorStop","addEventListener","AddChannel","AddDesktopComponent",
+ "addElement","AddFavorite","addImport","addPageRule","addRange","addReadRequest","addRule","adoptNode","alert",
+ "appendChild","appendData","appendMedium","applyElement","arc","arcTo","assign","atob","attachEvent",
+ "AutoCompleteSaveForm","AutoScan","back","beginPath","bezierCurveTo","blur","btoa","captureEvents","ChooseColorDlg",
+ "clear","clearAttributes","clearData","clearInterval","clearParameters","clearRect","clearRequest","clearTimeout",
+ "click","clip","cloneNode","cloneRange","close","closePath","collapse","collapseToEnd","collapseToStart",
+ "compareBoundaryPoints","compareDocumentPosition","compareEndPoints","compareNode","comparePoint","componentFromPoint",
+ "confirm","contains","containsNode","containsNS","createAttribute","createAttributeNS","createCaption",
+ "createCDATASection","createComment","createContextualFragment","createControlRange","createCSSStyleSheet",
+ "createDocument","createDocumentFragment","createDocumentType","createElement","createElementNS",
+ "createEntityReference","createEvent","createEventObject","createExpression","createLinearGradient",
+ "createHTMLDocument","createNodeIterator","createNSResolver","createPattern","createPopup",
+ "createProcessingInstruction","createRadialGradient","createRange","createRangeCollection","createStyleSheet",
+ "createTextNode","createTextRange","createTFoot","createTHead","createTreeWalker","deleteCaption","deleteCell",
+ "deleteContents","deleteData","deleteFromDocument","deleteMedium","deleteRow","deleteRule","deleteTFoot",
+ "deleteTHead","detach","detachEvent","disableExternalCapture","dispatchEvent","doImport","doReadRequest",
+ "doScroll","dragDrop","drawImage","dump","duplicate","elementFromPoint","enableExternalCapture","empty",
+ "escape","evaluate","evaluateFIXptr","evaluateWithContext","evaluateXPointer","execCommand","execCommandShowHelp",
+ "execScript","expand","extend","extractContents","fill","fillRect","find","findText","fireEvent","firstPage",
+ "focus","forward","getAdjacentText","getAllResponseHeaders","getAnonymousElementByAttribute","getAnonymousNodes",
+ "getAttention","getAttentionWithCycleCount","getAttribute","getAttributeNode","getAttributeNodeNS","getAttributeNS",
+ "getBindingParent","getBookmark","getBoundingClientRect","getBoxObjectFor","getCharset","getClientRects",
+ "getComputedStyle","getContext","getCounterValue","getData","getElementById","getElementsByName","getElementsByTagName",
+ "getElementsByTagNameNS","getExpression","getFeature","getFloatValue","getName","getNamedItem","getNamedItemNS",
+ "getNamespaceURI","getOverrideStyle","getParameter","getPreventDefault","getPropertyCSSValue","getPropertyPriority",
+ "getPropertyValue","getRangeAt","getRectValue","getResponseHeader","getRGBColorValue","getSelection","getStringValue",
+ "getSVGDocument","getUserData","go","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","hasFeature",
+ "hasFocus","hide","home","ImportExportFavorites","importNode","importStylesheet","Init","initEvent","initKeyEvent",
+ "initMouseEvent","initMutationEvent","initPageTransitionEvent","initPopupBlockedEvent","initUIEvent","inRange",
+ "insertNode","insertAdjacentElement","insertAdjacentHTML","insertAdjacentText","insertBefore","insertCell","insertData",
+ "insertRow","insertRule","intersectsNode","isDefaultNamespace","isEqual","isEqualNode","isPointInRange","isSameNode",
+ "IsSubscribed","isSupported","item","Item","iterateNext","javaEnabled","lastPage","lineTo","load","loadAsync",
+ "loadBindingDocument","loadOverlay","lookupNamespaceURI","lookupPrefix","maximize","mergeAttributes","minimize",
+ "move","moveBy","moveEnd","moveRow","moveStart","moveTo","moveToBookmark","moveToElementText","moveToPoint",
+ "namedItem","namedRecordset","navigate","NavigateAndFind","nextNode","nextPage","normalize","normalizeDocument",
+ "nSDetach","open","openDialog","openRequest","overrideMimeType","parentElement","parseFromBuffer","parseFromStream",
+ "parseFromString","pasteHTML","preference","preventBubble","preventCapture","preventDefault","previousNode",
+ "previousPage","print","processSchemaElement","prompt","quadraticCurveTo","queryCommandEnabled","queryCommandIndeterm",
+ "queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","recalc","rect","refresh",
+ "releaseCapture","releaseEvents","reload","remove","removeAllRanges","removeAttribute","removeAttributeNode",
+ "removeAttributeNS","removeBehavior","removeBinding","removeChild","removeEventListener","removeExpression",
+ "removeNamedItem","removeNamedItemNS","removeNode","removeParameter","removeProperty","removeRange","removeRule",
+ "renameNode","replace","replaceAdjacentText","replaceChild","replaceData","replaceNode","reset","resizeBy",
+ "resizeTo","restore","restoreImage","restoreImageTo","rotate","routeEvent","save","scale","scroll","scrollBy",
+ "scrollByLines","scrollByPages","scrollIntoView","scrollTo","select","selectAllChildren","selectionLanguageChange",
+ "selectNode","selectNodeContents","send","serializeToStream","serializeToString","setActive","setAttribute",
+ "setAttributeNode","setAttributeNodeNS","setAttributeNS","setBoxObjectFor","setCapture","setCursor","setData",
+ "setEnd","setEndAfter","setEndBefore","setEndPoint","setExpression","setFloatValue","setInterval","setNamedItem",
+ "setNamedItemNS","setParameter","setProperty","setPropertyPriority","setRequestHeader","setResizable",
+ "setSelectionRange","setStart","setStartAfter","setStartBefore","setStringValue","setTimeout","setUserData",
+ "show","ShowBrowserUI","showHelp","showModalDialog","showModelessDialog","shrinkToFit","sizeToContent",
+ "snapshotItem","splitText","start","stop","stopPropagation","stroke","strokeRect","submit","substringData",
+ "supports","surroundContents","swapNode","tags","taintEnabled","toggleImageSize","transformToDocument",
+ "transformToFragment","translate","unescape","updateCommands","urns","write","writeln",
+
+ # DHTML Event
+ "onabort","onactivate",
+ "onafterprint","onafterupdate","onbeforeactivate","onbeforecopy","onbeforecut","onbeforedeactivate","onbeforeeditfocus",
+ "onbeforepaste","onbeforeprint","onbeforeunload","onbeforeupdate","onblur","onbounce","oncellchange","onchange",
+ "onclick","onclose","oncontextmenu","oncontrolselect","oncopy","oncut","ondataavailable","ondatasetchanged",
+ "ondatasetcomplete","ondblclick","ondeactivate","ondrag","ondragdrop","ondragend","ondragenter","ondragleave",
+ "ondragover","ondragstart","ondrop","onerror","onerrorupdate","onfilterchange","onfinish","onfocus","onfocusin",
+ "onfocusout","onhelp","onkeydown","onkeypress","onkeyup","onlayoutcomplete","onload","onlosecapture","onmousedown",
+ "onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onmove","onmoveend",
+ "onmovestart","onpaint","onpaste","onprogress","onpropertychange","onreadystatechange","onreset","onresize",
+ "onresizeend","onresizestart","onrowenter","onrowexit","onrowsdelete","onrowsinserted","onscroll","onselect",
+ "onselectionchange","onselectstart","onstart","onstop","onsubmit","onunload",
+
+ # DHTML Collection
+ "all","anchors","applets","areas",
+ "attributes","behaviorUrns","blockFormats","bookmarks","boundElements","cells","childNodes","children","classes",
+ "Components","controllers","controlRange","elements","embeds","filters","fonts","forms","frames","ids","images",
+ "imports","interfaces","layers","links","mimeTypes","namespaces","options","pages","plugins","rows","rules","scripts",
+ "styleSheets","tBodies","TextRange","TextRectangle",
+
+ # IE Default Behavior
+ "anchorClick","anim","clientCaps","download","homePage","httpFolder",
+ "mediaBar","saveFavorite","saveHistory","saveSnapshot","userData",
+
+ # IE Default Behavior Object
+ "MediaItem","PlaylistInfo",
+
+ # IE Default Behavior Property
+ "attributeCount",
+ "availHeight","availWidth","bufferDepth","colorDepth","connectionType","cookieEnabled","cpuClass","currentItem",
+ "disabledUI","duration","enabled","expires","folder","hasNextItem","height","image","javaEnabled","name","nextItem",
+ "openState","platform","playlistInfo","playState","sound","sourceURL","statics","systemLanguage","target",
+ "userLanguage","width","XMLDocument",
+
+ # IE Default Behavior Method
+ "addComponentRequest","addDABehavior","clearComponentRequest","compareVersions",
+ "doComponentRequest","getAttribute","getAttributeName","getComponentVersion","getItemInfo","isComponentInstalled",
+ "isHomePage","load","navigate","navigateFrame","navigateHomePage","playNext","playURL","removeAttribute",
+ "removeDABehavior","save","setAttribute","setHomePage","startDownload","stop",
+
+ # IE Default Behavior Event
+ "onhide","onload","onopenstatechange",
+ "onplaystatechange","onsave","onshow",
+
+ # XMLHTTP Object Property
+ "onreadystatechange","readyState","responseBody","responseStream","responseText",
+ "responseXML","status","statusText",
+
+ # XMLHTTP Object Method
+ "abort","getAllResponseHeaders","getResponseHeader","open","send",
+ "setRequestHeader"
+]
+
+
+def search(node, names):
+
+ if node.type == "assignment":
+ left = node.getChild("left", False)
+
+ if left:
+ variable = left.getChild("variable", False)
+
+ if variable:
+ last = variable.getLastChild()
+ first = variable.getFirstChild()
+
+ if last == first:
+ if last.type == "identifier":
+ pass
+
+ elif last.type == "identifier":
+ name = last.get("name")
+
+ ignore = False
+
+ if name in systemNames or name in qooxdooNames:
+ ignore = True
+
+ if not ignore:
+ for item in qooxdooStart:
+ if name.startswith(item):
+ ignore = True
+
+ # only apply to names which starts with an underscore
+ if not name.startswith("_"):
+ ignore = True
+
+ if not ignore:
+ if not names.has_key(name):
+ # print "Add %s" % name
+
+ names[name] = 1
+ else:
+ names[name] += 1
+
+ if node.hasChildren():
+ for child in node.children:
+ search(child, names)
+
+ return names
+
+
+
+
+def update(node, list, prefix):
+ counter = 0
+
+ if node.type == "identifier":
+ idenName = node.get("name", False)
+
+ if idenName != None and idenName in list:
+ replName = "%s%s" % (prefix, mapper.convert(list.index(idenName)))
+ node.set("name", replName)
+ counter += 1
+
+ # print " - Replaced '%s' with '%s'" % (idenName, replName)
+
+ if node.hasChildren():
+ for child in node.children:
+ counter += update(child, list, prefix)
+
+ return counter
+
+
+
+def sort(names):
+ temp = []
+
+ for name in names:
+ temp.append({ "name" : name, "number" : names[name] })
+
+ temp.sort(lambda x, y: y["number"]-x["number"])
+
+ list = []
+
+ for item in temp:
+ list.append(item["name"])
+
+ print " * Found %s names" % len(list)
+
+ return list
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.pyc
new file mode 100644
index 0000000000..5de4c4c0c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/obfuscator.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.py
new file mode 100755
index 0000000000..487277eb29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+from optparse import *
+
+class ExtendAction(Option):
+ ACTIONS = Option.ACTIONS + ("extend",)
+ STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",)
+ TYPED_ACTIONS = Option.TYPED_ACTIONS + ("extend",)
+
+ def take_action(self, action, dest, opt, value, values, parser):
+ if action == "extend":
+ lvalue = value.split(",")
+ values.ensure_value(dest, []).extend(lvalue)
+ else:
+ Option.take_action(
+ self, action, dest, opt, value, values, parser)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.pyc
new file mode 100644
index 0000000000..7f63b3058c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/optparseext.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.py
new file mode 100755
index 0000000000..ce345af26d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+
+import os, shutil
+import config
+
+
+def copy(options, sortedIncludeList, fileDb):
+ print " * Preparing configuration..."
+
+ overrideList = []
+
+ for overrideEntry in options.overrideResourceOutput:
+ # Parse
+ # fileId.resourceId:destinationDirectory
+ targetSplit = overrideEntry.split(":")
+ targetStart = targetSplit.pop(0)
+ targetStartSplit = targetStart.split(".")
+
+ # Store
+ overrideData = {}
+ overrideData["destinationDirectory"] = ":".join(targetSplit)
+ overrideData["resourceId"] = targetStartSplit.pop()
+ overrideData["fileId"] = ".".join(targetStartSplit)
+
+ # Append
+ overrideList.append(overrideData)
+
+ print " * Syncing..."
+
+ for fileId in sortedIncludeList:
+ filePath = fileDb[fileId]["path"]
+ fileResources = fileDb[fileId]["resources"]
+
+ if len(fileResources) > 0:
+ print " - Found %i resources in %s" % (len(fileResources), fileId)
+
+ for fileResource in fileResources:
+ fileResourceSplit = fileResource.split(":")
+
+ resourceId = fileResourceSplit.pop(0)
+ relativeDirectory = ":".join(fileResourceSplit)
+
+ sourceDirectory = os.path.join(fileDb[fileId]["resourceInput"], relativeDirectory)
+ destinationDirectory = os.path.join(fileDb[fileId]["resourceOutput"], relativeDirectory)
+
+ # Searching for overrides
+ for overrideData in overrideList:
+ if overrideData["fileId"] == fileId and overrideData["resourceId"] == resourceId:
+ destinationDirectory = overrideData["destinationDirectory"]
+
+ print " - Copy %s => %s" % (sourceDirectory, destinationDirectory)
+
+ try:
+ os.listdir(sourceDirectory)
+ except OSError:
+ print " - Source directory isn't readable! Ignore resource!"
+ continue
+
+ for root, dirs, files in os.walk(sourceDirectory):
+
+ # Filter ignored directories
+ for ignoredDir in config.DIRIGNORE:
+ if ignoredDir in dirs:
+ dirs.remove(ignoredDir)
+
+ # Searching for items (resource files)
+ for itemName in files:
+
+ # Generate absolute source file path
+ itemSourcePath = os.path.join(root, itemName)
+
+ # Extract relative path and directory
+ itemRelPath = itemSourcePath.replace(sourceDirectory + os.sep, "")
+ itemRelDir = os.path.dirname(itemRelPath)
+
+ # Generate destination directory and file path
+ itemDestDir = os.path.join(destinationDirectory, itemRelDir)
+ itemDestPath = os.path.join(itemDestDir, itemName)
+
+ # Check/Create destination directory
+ if not os.path.exists(itemDestDir):
+ os.makedirs(itemDestDir)
+
+ # Copy file
+ if options.verbose:
+ print " - Copying: %s => %s" % (itemSourcePath, itemDestPath)
+
+ shutil.copyfile(itemSourcePath, itemDestPath) \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.pyc
new file mode 100644
index 0000000000..4c08b8e634
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/resources.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.py
new file mode 100755
index 0000000000..1e17e53567
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+
+import sys, re, os, optparse
+import filetool
+
+
+
+
+def generate(options):
+ if len(options.defineRuntimeSetting) == 0:
+ return ""
+
+ typeFloat = re.compile("^([0-9\-]+\.[0-9]+)$")
+ typeNumber = re.compile("^([0-9\-])$")
+
+ settingsStr = ""
+
+ settingsStr += 'if(!window.qx)qx={};'
+
+ if options.addNewLines:
+ settingsStr += "\n"
+
+ settingsStr += 'if(!qx.Settings)qx.Settings={};'
+
+ if options.addNewLines:
+ settingsStr += "\n"
+
+ settingsStr += 'if(!qx.Settings._customSettings)qx.Settings._customSettings={};'
+
+ if options.addNewLines:
+ settingsStr += "\n"
+
+ for setting in options.defineRuntimeSetting:
+ settingSplit = setting.split(":")
+ settingKey = settingSplit.pop(0)
+ settingValue = ":".join(settingSplit)
+
+ settingKeySplit = settingKey.split(".")
+ settingKeyName = settingKeySplit.pop()
+ settingKeySpace = ".".join(settingKeySplit)
+
+ checkStr = 'if(!qx.Settings._customSettings["%s"])qx.Settings._customSettings["%s"]={};' % (settingKeySpace, settingKeySpace)
+ if not checkStr in settingsStr:
+ settingsStr += checkStr
+
+ if options.addNewLines:
+ settingsStr += "\n"
+
+ settingsStr += 'qx.Settings._customSettings["%s"]["%s"]=' % (settingKeySpace, settingKeyName)
+
+ if settingValue == "false" or settingValue == "true" or typeFloat.match(settingValue) or typeNumber.match(settingValue):
+ settingsStr += '%s' % settingValue
+
+ else:
+ settingsStr += '"%s"' % settingValue.replace("\"", "\\\"")
+
+ settingsStr += ";"
+
+ if options.addNewLines:
+ settingsStr += "\n"
+
+ return settingsStr
+
+
+
+
+def main():
+ parser = optparse.OptionParser()
+
+ parser.add_option("-d", "--define-runtime-setting", action="append", dest="defineRuntimeSetting", metavar="NAMESPACE.KEY:VALUE", default=[], help="Define a setting.")
+ parser.add_option("-s", "--settings-script-file", dest="settingsScriptFile", metavar="FILENAME", help="Name of settings script file.")
+ parser.add_option("-n", "--add-new-lines", action="store_true", dest="addNewLines", default=False, help="Keep newlines in compiled files.")
+
+ (options, args) = parser.parse_args()
+
+ if options.settingsScriptFile == None:
+ print " * Please define the output file!"
+ sys.exit(1)
+
+ if len(options.defineRuntimeSetting) == 0:
+ print " * Please define at least one runtime setting!"
+ sys.exit(1)
+
+ print " * Saving settings to %s" % options.settingsScriptFile
+ filetool.save(options.settingsScriptFile, generate(options))
+
+
+
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.pyc
new file mode 100644
index 0000000000..e6cbe3d3ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/settings.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.py
new file mode 100755
index 0000000000..4c0f3c9782
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.py
@@ -0,0 +1,173 @@
+#!/usr/bin/env python
+
+import tree
+
+
+def search(node, verbose=False):
+ return search_loop(node, {}, verbose)
+
+
+def search_loop(node, stringMap={}, verbose=False):
+ if node.type == "constant" and node.get("constantType") == "string":
+
+ if verbose:
+ print " - Found: %s" % node.get("value")
+
+ if node.get("detail") == "singlequotes":
+ quote = "'"
+ elif node.get("detail") == "doublequotes":
+ quote = '"'
+
+ value = "%s%s%s" % (quote, node.get("value"), quote)
+
+ if value in stringMap:
+ stringMap[value] += 1
+ else:
+ stringMap[value] = 1
+
+ if check(node, verbose):
+ for child in node.children:
+ search_loop(child, stringMap, verbose)
+
+ return stringMap
+
+
+
+def check(node, verbose=False):
+ # Needs children
+ if not node.hasChildren():
+ return False
+
+ # Try to find all output statements
+ if node.type == "call":
+ cu = node
+ nx = cu.getChild("operand", False)
+
+ if nx != None:
+ cu = nx
+
+ all = cu.getAllChildrenOfType("identifier")
+
+ for ch in all:
+ if ch.get("name", False) in [ "Error", "debug", "info", "warning", "error", "alert" ]:
+ if verbose:
+ print " - Ignore output statement at line: %s" % ch.get("line")
+ return False
+
+ # Try to find all constant assignments (ns.UPPER = string)
+ elif node.type == "assignment":
+ left = node.getChild("left", False)
+ if left != None:
+ var = left.getChild("variable", False)
+
+ if var != None:
+ last = var.getLastChild()
+
+ if last.type == "identifier" and last.get("name").isupper():
+ if verbose:
+ print " - Ignore constant assignment at line: %s" % last.get("line")
+ return False
+
+ # Try to find all constant assignments from Maps ({ UPPER : string })
+ elif node.type == "keyvalue":
+ if node.get("key").isupper():
+ if verbose:
+ print " - Ignore constant key value at line: %s" % node.get("line")
+ return False
+
+ return True
+
+
+
+def sort(stringMap):
+ stringList = []
+
+ for value in stringMap:
+ stringList.append({ "value" : value, "number" : stringMap[value] })
+
+ stringList.sort(lambda x, y: y["number"]-x["number"])
+
+ return stringList
+
+
+
+
+def replace(node, stringList, var="$", verbose=False):
+ if node.type == "constant" and node.get("constantType") == "string":
+ if node.get("detail") == "singlequotes":
+ quote = "'"
+ elif node.get("detail") == "doublequotes":
+ quote = '"'
+
+ oldvalue = "%s%s%s" % (quote, node.get("value"), quote)
+
+ pos = 0
+ for item in stringList:
+ if item["value"] == oldvalue:
+ newvalue = "%s[%s]" % (var, pos)
+
+ if verbose:
+ print " - Replace: %s => %s" % (oldvalue, newvalue)
+
+ line = node.get("line")
+
+
+ # GENERATE IDENTIFIER
+
+ newidentifier = tree.Node("identifier")
+ newidentifier.set("line", line)
+
+ childidentifier = tree.Node("identifier")
+ childidentifier.set("line", line)
+ childidentifier.set("name", var)
+
+ newidentifier.addChild(childidentifier)
+
+
+
+ # GENERATE KEY
+
+ newkey = tree.Node("key")
+ newkey.set("line", line)
+
+ newconstant = tree.Node("constant")
+ newconstant.set("line", line)
+ newconstant.set("constantType", "number")
+ newconstant.set("value", "%s" % pos)
+
+ newkey.addChild(newconstant)
+
+
+
+ # COMBINE CHILDREN
+
+ newnode = tree.Node("accessor")
+ newnode.set("line", line)
+ newnode.set("optimized", True)
+ newnode.set("original", oldvalue)
+ newnode.addChild(newidentifier)
+ newnode.addChild(newkey)
+
+
+ # REPLACE NODE
+
+ node.parent.replaceChild(node, newnode)
+ break
+
+ pos += 1
+
+ if check(node, verbose):
+ for child in node.children:
+ replace(child, stringList, var, verbose)
+
+
+
+def replacement(stringList, var="$"):
+ repl = "%s=[" % var
+
+ for item in stringList:
+ repl += "%s," % (item["value"])
+
+ repl = repl[:-1] + "];"
+
+ return repl
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.pyc
new file mode 100644
index 0000000000..57ada1ceb7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/stringoptimizer.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tagtool.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tagtool.py
new file mode 100755
index 0000000000..0313be750c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tagtool.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+import sys, string, re, optparse
+import config, filetool, comment, random
+
+
+R_TAG = re.compile("random\(.*\)")
+
+
+
+def main():
+ parser = optparse.OptionParser()
+
+ parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=False, help="Quiet output mode.")
+ parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="Verbose output mode.")
+ parser.add_option("--encoding", dest="encoding", default="utf-8", metavar="ENCODING", help="Defines the encoding expected for input files.")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) == 0:
+ print "Needs one or more arguments (files) to tag!"
+ sys.exit(1)
+
+ for fileName in args:
+ if options.verbose:
+ print " * Tagging %s" % fileName
+
+ origFileContent = filetool.read(fileName, options.encoding)
+ patchedFileContent = R_TAG.sub("random(%s)" % random.randint(100, 999), origFileContent)
+
+ if patchedFileContent != origFileContent:
+ filetool.save(fileName, patchedFileContent, options.encoding)
+
+
+
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
+ \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.py
new file mode 100755
index 0000000000..a54e89272e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.py
@@ -0,0 +1,2873 @@
+#!/usr/bin/env python
+# _*_ coding: latin1 _*_
+
+"""This is Textile
+A Humane Web Text Generator
+
+TODO:
+* Make it work with Python 2.1.
+* Make it work with Python 1.5.2? Or that's too optimistic?
+
+---
+To get an overview of all PyTextile's features, simply
+type 'tell me about textile.' in a single line.
+"""
+
+__authors__ = ["Roberto A. F. De Almeida (roberto@dealmeida.net)",
+ "Mark Pilgrim (f8dy@diveintomark.org)"]
+__version__ = "2.0.10"
+__date__ = "2004/10/06"
+__copyright__ = """
+Copyright (c) 2004, Roberto A. F. De Almeida, http://dealmeida.net/
+Copyright (c) 2003, Mark Pilgrim, http://diveintomark.org/
+All rights reserved.
+
+Original PHP version:
+Version 1.0
+21 Feb, 2003
+
+Copyright (c) 2003, Dean Allen, www.textism.com
+All rights reserved.
+
+Parts of the documentation and some of the regular expressions are (c) Brad
+Choate, http://bradchoate.com/. Thanks, Brad!
+"""
+__license__ = """
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name Textile nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+"""
+__history__ = """
+1.0 - 2003/03/19 - MAP - initial release
+1.01 - 2003/03/19 - MAP - don't strip whitespace within <pre> tags;
+ map high-bit ASCII to HTML numeric entities
+1.02 - 2003/03/19 - MAP - changed hyperlink qtag expression to only
+ match valid URL characters (per RFC 2396); fixed preg_replace to
+ not match across line breaks (solves lots of problems with
+ mistakenly matching overlapping inline markup); fixed whitespace
+ stripping to only strip whitespace from beginning and end of lines,
+ not immediately before and after HTML tags.
+1.03 - 2003/03/20 - MAP - changed hyperlink qtag again to more
+ closely match original Textile (fixes problems with links
+ immediately followed by punctuation -- somewhere Dean is
+ grinning right now); handle curly apostrophe with "ve"
+ contraction; clean up empty titles at end.
+1.04 - 2003/03/23 - MAP - lstrip input to deal with extra spaces at
+ beginning of first line; tweaked list loop to handle consecutive lists
+1.1 - 2003/06/06 - MAP - created initial test suite for links and images,
+ and fixed a bunch of related bugs to pass them
+1.11 - 2003/07/20 - CL - don't demoronise unicode strings; handle
+ "they're" properly
+1.12 - 2003/07/23 - GW - print debug messages to stderr; handle bq(cite).
+1.13 - 2003/07/23 - MAP - wrap bq. text in <p>...</p>
+2 - 2004/03/26 - RAFA - rewritten from (almost) scratch to include
+ all features from Textile 2 and a little bit more.
+2.0.1 - 2004/04/02 - RAFA - Fixed validating function that uses uTidyLib.
+2.0.2 - 2004/04/02 - RAFA - Fixed problem with caps letters in URLs.
+2.0.3 - 2004/04/19 - RAFA - Multiple classes are allowed, thanks to Dave
+ Anderson. The "lang" attribute is now removed from <code>, to be valid
+ XHTML. Fixed <span class="caps">UCAS</span> problem.
+2.0.4 - 2004/05/20 - RAFA, CLB - Added inline formatting to table cells.
+ Curt Bergmann fixed a bug with the colspan formatting. Added Amazon
+ Associated id.
+2.0.5 - 2004/06/01 - CL - Applied patch from Chris Lawrence to (1) fix
+ that Amazon associates ID was being added to all search URIs, (2)
+ customize the Amazon site used with the AMAZON variable, and (3) added
+ an "isbn" URI type that links directly to an Amazon product by ISBN or
+ Amazon ASIN.
+2.0.6 - 2004/06/02 - RAFA - Fixed CAPS problem, again. I hope this is
+ the last time.
+2.0.7 - 2004/06/04 - RAFA, MW - Fixed bullet macro, thanks to Adam
+ Messinger. Added patch from Michal Wallace changing {}.pop() for
+ compatibility with Python 2.2.x.
+2.0.8 - 2004/06/25 - RAFA - Strip tags when adding the content from a
+ footnote to the reference link. Escaped '<' and '>' in the self-
+ generated documentation.
+2.0.9 - 2004/10/04 - RAFA - In images, if ALT is not defined, add an
+ empty attribute. Added "LaTeX" style open/close quotes. Fixed a bug
+ where the acronym definition was being formatted with inline rules.
+ Handle "broken" lines correctly, removing the <br /> from inside
+ split HTML tags.
+2.0.10 - 2004/10/06 - RAFA, LO - Escape all non-escaped ampersands.
+ Applied "trivial patch" from Ludvig Omholt to remove newline right
+ after the <pre> tag.
+"""
+
+# Set your encoding here.
+ENCODING = 'utf-8'
+
+# Output? Non-ASCII characters will be automatically
+# converted to XML entities if you choose ASCII.
+OUTPUT = 'utf-8'
+
+# PyTextile can optionally validate the generated
+# XHTML code. We can use either mxTidy or uTidyLib.
+# You can change the default behaviour here.
+VALIDATE = 0
+
+# If you want h1. to be translated to something other
+# than <h1>, change this offset. You can also pass it
+# as an argument to textile().
+HEAD_OFFSET = 0
+
+# If you want to use itex2mml, specify the full path
+# to the binary here. You can download it from here:
+# http://golem.ph.utexas.edu/~distler/blog/files/itexToMML.tar.gz
+itex2mml = None
+#itex2mml = '/usr/local/bin/itex2MML'
+#itex2mml = '/usr/people/almeida/bin/itex2MML'
+
+# PyTextile can optionally sanitize the generated XHTML,
+# which is good for weblog comments or if you don't trust
+# yourself.
+SANITIZE = 1
+
+# Turn debug on?
+DEBUGLEVEL = 0
+
+# Amazon associate for links: "keywords":amazon
+# If you don't have one, please consider leaving mine here as
+# a small compensation for writing PyTextile. It's commented
+# off as default.
+#amazon_associate_id = 'bomtempo-21'
+amazon_associate_id = None
+
+#AMAZON = 'www.amazon.co.uk'
+AMAZON = 'www.amazon.com'
+
+import re
+import sys
+import os
+import sgmllib
+import unicodedata
+
+
+def _in_tag(text, tag):
+ """Extracts text from inside a tag.
+
+ This function extracts the text from inside a given tag.
+ It's useful to get the text between <body></body> or
+ <pre></pre> when using the validators or the colorizer.
+ """
+ if text.count('<%s' % tag):
+ text = text.split('<%s' % tag, 1)[1]
+ if text.count('>'):
+ text = text.split('>', 1)[1]
+ if text.count('</%s' % tag):
+ text = text.split('</%s' % tag, 1)[0]
+
+ text = text.strip().replace('\r\n', '\n')
+
+ return text
+
+
+# If you want PyTextile to automatically colorize
+# your Python code, you need the htmlizer module
+# from Twisted. (You can just grab this file from
+# the distribution, it has no other dependencies.)
+try:
+ #from twisted.python import htmlizer
+ import htmlizer
+ from StringIO import StringIO
+
+ def _color(code):
+ """Colorizer Python code.
+
+ This function wraps a text string in a StringIO,
+ and passes it to the htmlizer function from
+ Twisted.
+ """
+ # Fix line continuations.
+ code = preg_replace(r' \\\n', ' \\\\\n', code)
+
+ code_in = StringIO(code)
+ code_out = StringIO()
+
+ htmlizer.filter(code_in, code_out)
+
+ # Remove <pre></pre> from input.
+ code = _in_tag(code_out.getvalue(), 'pre')
+
+ # Fix newlines.
+ code = code.replace('<span class="py-src-newline">\n</span>', '<span class="py-src-newline"></span>\n')
+
+ return code
+
+except ImportError:
+ htmlizer = None
+
+
+# PyTextile can optionally validate the generated
+# XHTML code using either mxTidy or uTidyLib.
+try:
+ # This is mxTidy.
+ from mx.Tidy import Tidy
+
+ def _tidy1(text):
+ """mxTidy's XHTML validator.
+
+ This function is a wrapper to mxTidy's validator.
+ """
+ nerrors, nwarnings, text, errortext = Tidy.tidy(text, output_xhtml=1, numeric_entities=1, wrap=0)
+ return _in_tag(text, 'body')
+
+ _tidy = _tidy1
+
+except ImportError:
+ try:
+ # This is uTidyLib.
+ import tidy
+
+ def _tidy2(text):
+ """uTidyLib's XHTML validator.
+
+ This function is a wrapper to uTidyLib's validator.
+ """
+ text = tidy.parseString(text, output_xhtml=1, add_xml_decl=0, indent=0, tidy_mark=0)
+ return _in_tag(str(text), 'body')
+
+ _tidy = _tidy2
+
+ except ImportError:
+ _tidy = None
+
+
+# This is good for debugging.
+def _debug(s, level=1):
+ """Outputs debug information to sys.stderr.
+
+ This function outputs debug information if DEBUGLEVEL is
+ higher than a given treshold.
+ """
+ if DEBUGLEVEL >= level: print >> sys.stderr, s
+
+
+#############################
+# Useful regular expressions.
+parameters = {
+ # Horizontal alignment.
+ 'align': r'''(?:(?:<>|[<>=]) # Either '<>', '<', '>' or '='
+ (?![^\s]*(?:<>|[<>=]))) # Look-ahead to ensure it happens once
+ ''',
+
+ # Horizontal padding.
+ 'padding': r'''(?:[\(\)]+) # Any number of '(' and/or ')'
+ ''',
+
+ # Class and/or id.
+ 'classid': r'''( #
+ (?:\(\#[\w]+\)) # (#id)
+ | #
+ (?:\((?:[\w]+(?:\s[\w]+)*) #
+ (?:\#[\w]+)?\)) # (class1 class2 ... classn#id) or (class1 class2 ... classn)
+ ) #
+ (?![^\s]*(?:\([\w#]+\))) # must happen once
+ ''',
+
+ # Language.
+ 'lang': r'''(?:\[[\w-]+\]) # [lang]
+ (?![^\s]*(?:\[.*?\])) # must happen once
+ ''',
+
+ # Style.
+ 'style': r'''(?:{[^\}]+}) # {style}
+ (?![^\s]*(?:{.*?})) # must happen once
+ ''',
+}
+
+res = {
+ # Punctuation.
+ 'punct': r'''[\!"#\$%&'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{\|}\~]''',
+
+ # URL regular expression.
+ 'url': r'''(?=[a-zA-Z0-9./#]) # Must start correctly
+ (?: # Match the leading part (proto://hostname, or just hostname)
+ (?:ftp|https?|telnet|nntp) # protocol
+ :// # ://
+ (?: # Optional 'username:password@'
+ \w+ # username
+ (?::\w+)? # optional :password
+ @ # @
+ )? #
+ [-\w]+(?:\.\w[-\w]*)+ # hostname (sub.example.com)
+ | #
+ (?:mailto:)? # Optional mailto:
+ [-\+\w]+ # username
+ \@ # at
+ [-\w]+(?:\.\w[-\w]*)+ # hostname
+ | #
+ (?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+ # domain without protocol
+ (?:com\b # TLD
+ | edu\b #
+ | biz\b #
+ | gov\b #
+ | in(?:t|fo)\b # .int or .info
+ | mil\b #
+ | net\b #
+ | org\b #
+ | museum\b #
+ | aero\b #
+ | coop\b #
+ | name\b #
+ | pro\b #
+ | [a-z][a-z]\b # two-letter country codes
+ ) #
+ )? #
+ (?::\d+)? # Optional port number
+ (?: # Rest of the URL, optional
+ /? # Start with '/'
+ [^.!,?;:"'<>()\[\]{}\s\x7F-\xFF]* # Can't start with these
+ (?: #
+ [.!,?;:]+ # One or more of these
+ [^.!,?;:"'<>()\[\]{}\s\x7F-\xFF]+ # Can't finish with these
+ #'" # # or ' or "
+ )* #
+ )? #
+ ''',
+
+
+ # Block attributes.
+ 'battr': r'''(?P<parameters> #
+ (?: %(align)s # alignment
+ | %(classid)s # class and/or id
+ | %(padding)s # padding tags
+ | %(lang)s # [lang]
+ | %(style)s # {style}
+ )+ #
+ )? #
+ ''' % parameters,
+
+ # (Un)ordered list attributes.
+ 'olattr': r'''(?P<olparameters> #
+ (?: %(align)s # alignment
+ | ((?:\(\#[\w]+\)) # (#id)
+ | #
+ (?:\((?:[\w]+(?:\s[\w]+)*) #
+ (?:\#[\w]+)?\)) # (class1 class2 ... classn#id) or (class1 class2 ... classn)
+ ) #
+ | %(padding)s # padding tags
+ | %(lang)s # [lang]
+ | %(style)s # {style}
+ )+ #
+ )? #
+ ''' % parameters,
+
+ # List item attributes.
+ 'liattr': r'''(?P<liparameters> #
+ (?: %(align)s # alignment
+ | %(classid)s # class and/or id
+ | %(padding)s # padding tags
+ | %(lang)s # [lang]
+ | %(style)s # {style}
+ )+ #
+ )? #
+ ''' % parameters,
+
+ # Qtag attributes.
+ 'qattr': r'''(?P<parameters> #
+ (?: %(classid)s # class and/or id
+ | %(lang)s # [lang]
+ | %(style)s # {style}
+ )+ #
+ )? #
+ ''' % parameters,
+
+ # Link attributes.
+ 'lattr': r'''(?P<parameters> # Links attributes
+ (?: %(align)s # alignment
+ | %(classid)s # class and/or id
+ | %(lang)s # [lang]
+ | %(style)s # {style}
+ )+ #
+ )? #
+ ''' % parameters,
+
+ # Image attributes.
+ 'iattr': r'''(?P<parameters> #
+ (?: #
+ (?: [<>]+ # horizontal alignment tags
+ (?![^\s]*(?:[<>]))) # (must happen once)
+ | #
+ (?: [\-\^~]+ # vertical alignment tags
+ (?![^\s]*(?:[\-\^~]))) # (must happen once)
+ | %(classid)s # class and/or id
+ | %(padding)s # padding tags
+ | %(style)s # {style}
+ )+ #
+ )? #
+ ''' % parameters,
+
+ # Resize attributes.
+ 'resize': r'''(?: #
+ (?:([\d]+%?)x([\d]+%?)) # 20x10
+ | #
+ (?: # or
+ (?:([\d]+)%?w\s([\d]+)%?h) # 10h 20w
+ | # or
+ (?:([\d]+)%?h\s([\d]+)%?w) # 20w 10h
+ ) #
+ )? #
+ ''',
+
+ # Table attributes.
+ 'tattr': r'''(?P<parameters> #
+ (?: #
+ (?: [\^~] # vertical alignment
+ (?![^\s]*(?:[\^~]))) # (must happen once)
+ | %(align)s # alignment
+ | %(lang)s # [lang]
+ | %(style)s # {style}
+ | %(classid)s # class and/or id
+ | %(padding)s # padding
+ | _ # is this a header row/cell?
+ | \\\d+ # colspan
+ | /\d+ # rowspan
+ )+ #
+ )? #
+ ''' % parameters,
+}
+
+
+def preg_replace(pattern, replacement, text):
+ """Alternative re.sub that handles empty groups.
+
+ This acts like re.sub, except it replaces empty groups with ''
+ instead of raising an exception.
+ """
+
+ def replacement_func(matchobj):
+ counter = 1
+ rc = replacement
+ _debug(matchobj.groups())
+ for matchitem in matchobj.groups():
+ if not matchitem:
+ matchitem = ''
+
+ rc = rc.replace(r'\%s' % counter, matchitem)
+ counter += 1
+
+ return rc
+
+ p = re.compile(pattern)
+ _debug(pattern)
+
+ return p.sub(replacement_func, text)
+
+
+def html_replace(pattern, replacement, text):
+ """Replacement outside HTML tags.
+
+ Does a preg_replace only outside HTML tags.
+ """
+ # If there is no html, do a simple search and replace.
+ if not re.search(r'''<.*>''', text):
+ return preg_replace(pattern, replacement, text)
+
+ else:
+ lines = []
+ # Else split the text into an array at <>.
+ for line in re.split('(<.*?>)', text):
+ if not re.match('<.*?>', line):
+ line = preg_replace(pattern, replacement, line)
+
+ lines.append(line)
+
+ return ''.join(lines)
+
+
+# PyTextile can optionally sanitize the generated XHTML,
+# which is good for weblog comments. This code is from
+# Mark Pilgrim's feedparser.
+class _BaseHTMLProcessor(sgmllib.SGMLParser):
+ elements_no_end_tag = ['area', 'base', 'basefont', 'br', 'col', 'frame', 'hr',
+ 'img', 'input', 'isindex', 'link', 'meta', 'param']
+
+ def __init__(self):
+ sgmllib.SGMLParser.__init__(self)
+
+ def reset(self):
+ self.pieces = []
+ sgmllib.SGMLParser.reset(self)
+
+ def normalize_attrs(self, attrs):
+ # utility method to be called by descendants
+ attrs = [(k.lower(), sgmllib.charref.sub(lambda m: unichr(int(m.groups()[0])), v).strip()) for k, v in attrs]
+ attrs = [(k, k in ('rel', 'type') and v.lower() or v) for k, v in attrs]
+ return attrs
+
+ def unknown_starttag(self, tag, attrs):
+ # called for each start tag
+ # attrs is a list of (attr, value) tuples
+ # e.g. for <pre class="screen">, tag="pre", attrs=[("class", "screen")]
+ strattrs = "".join([' %s="%s"' % (key, value) for key, value in attrs])
+ if tag in self.elements_no_end_tag:
+ self.pieces.append("<%(tag)s%(strattrs)s />" % locals())
+ else:
+ self.pieces.append("<%(tag)s%(strattrs)s>" % locals())
+
+ def unknown_endtag(self, tag):
+ # called for each end tag, e.g. for </pre>, tag will be "pre"
+ # Reconstruct the original end tag.
+ if tag not in self.elements_no_end_tag:
+ self.pieces.append("</%(tag)s>" % locals())
+
+ def handle_charref(self, ref):
+ # called for each character reference, e.g. for "&#160;", ref will be "160"
+ # Reconstruct the original character reference.
+ self.pieces.append("&#%(ref)s;" % locals())
+
+ def handle_entityref(self, ref):
+ # called for each entity reference, e.g. for "&copy;", ref will be "copy"
+ # Reconstruct the original entity reference.
+ self.pieces.append("&%(ref)s;" % locals())
+
+ def handle_data(self, text):
+ # called for each block of plain text, i.e. outside of any tag and
+ # not containing any character or entity references
+ # Store the original text verbatim.
+ self.pieces.append(text)
+
+ def handle_comment(self, text):
+ # called for each HTML comment, e.g. <!-- insert Javascript code here -->
+ # Reconstruct the original comment.
+ self.pieces.append("<!--%(text)s-->" % locals())
+
+ def handle_pi(self, text):
+ # called for each processing instruction, e.g. <?instruction>
+ # Reconstruct original processing instruction.
+ self.pieces.append("<?%(text)s>" % locals())
+
+ def handle_decl(self, text):
+ # called for the DOCTYPE, if present, e.g.
+ # <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ # "http://www.w3.org/TR/html4/loose.dtd">
+ # Reconstruct original DOCTYPE
+ self.pieces.append("<!%(text)s>" % locals())
+
+ def output(self):
+ """Return processed HTML as a single string"""
+ return "".join(self.pieces)
+
+
+class _HTMLSanitizer(_BaseHTMLProcessor):
+ acceptable_elements = ['a', 'abbr', 'acronym', 'address', 'area', 'b', 'big',
+ 'blockquote', 'br', 'button', 'caption', 'center', 'cite', 'code', 'col',
+ 'colgroup', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', 'em', 'fieldset',
+ 'font', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'input',
+ 'ins', 'kbd', 'label', 'legend', 'li', 'map', 'menu', 'ol', 'optgroup',
+ 'option', 'p', 'pre', 'q', 's', 'samp', 'select', 'small', 'span', 'strike',
+ 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th',
+ 'thead', 'tr', 'tt', 'u', 'ul', 'var']
+
+ acceptable_attributes = ['abbr', 'accept', 'accept-charset', 'accesskey',
+ 'action', 'align', 'alt', 'axis', 'border', 'cellpadding', 'cellspacing',
+ 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'clear', 'cols',
+ 'colspan', 'color', 'compact', 'coords', 'datetime', 'dir', 'disabled',
+ 'enctype', 'for', 'frame', 'headers', 'height', 'href', 'hreflang', 'hspace',
+ 'id', 'ismap', 'label', 'lang', 'longdesc', 'maxlength', 'media', 'method',
+ 'multiple', 'name', 'nohref', 'noshade', 'nowrap', 'prompt', 'readonly',
+ 'rel', 'rev', 'rows', 'rowspan', 'rules', 'scope', 'selected', 'shape', 'size',
+ 'span', 'src', 'start', 'summary', 'tabindex', 'target', 'title', 'type',
+ 'usemap', 'valign', 'value', 'vspace', 'width']
+
+ unacceptable_elements_with_end_tag = ['script', 'applet']
+
+ # This if for MathML.
+ mathml_elements = ['math', 'mi', 'mn', 'mo', 'mrow', 'msup']
+ mathml_attributes = ['mode', 'xmlns']
+
+ acceptable_elements = acceptable_elements + mathml_elements
+ acceptable_attributes = acceptable_attributes + mathml_attributes
+
+ def reset(self):
+ _BaseHTMLProcessor.reset(self)
+ self.unacceptablestack = 0
+
+ def unknown_starttag(self, tag, attrs):
+ if not tag in self.acceptable_elements:
+ if tag in self.unacceptable_elements_with_end_tag:
+ self.unacceptablestack += 1
+ return
+ attrs = self.normalize_attrs(attrs)
+ attrs = [(key, value) for key, value in attrs if key in self.acceptable_attributes]
+ _BaseHTMLProcessor.unknown_starttag(self, tag, attrs)
+
+ def unknown_endtag(self, tag):
+ if not tag in self.acceptable_elements:
+ if tag in self.unacceptable_elements_with_end_tag:
+ self.unacceptablestack -= 1
+ return
+ _BaseHTMLProcessor.unknown_endtag(self, tag)
+
+ def handle_pi(self, text):
+ pass
+
+ def handle_decl(self, text):
+ pass
+
+ def handle_data(self, text):
+ if not self.unacceptablestack:
+ _BaseHTMLProcessor.handle_data(self, text)
+
+
+class Textiler:
+ """Textile formatter.
+
+ This is the base class for the PyTextile text processor.
+ """
+ def __init__(self, text=''):
+ """Instantiate the class, passing the text to be formatted.
+
+ Here we pre-process the text and collect all the link
+ lookups for later.
+ """
+ self.text = text
+
+ # Basic regular expressions.
+ self.res = res
+
+ # Smart searches.
+ self.searches = {}
+ self.searches['imdb'] = 'http://www.imdb.com/Find?for=%s'
+ self.searches['google'] = 'http://www.google.com/search?q=%s'
+ self.searches['python'] = 'http://www.python.org/doc/current/lib/module-%s.html'
+ if amazon_associate_id:
+ self.searches['isbn'] = ''.join(['http://', AMAZON, '/exec/obidos/ASIN/%s/', amazon_associate_id])
+ self.searches['amazon'] = ''.join(['http://', AMAZON, '/exec/obidos/external-search?mode=blended&keyword=%s&tag=', amazon_associate_id])
+ else:
+ self.searches['isbn'] = ''.join(['http://', AMAZON, '/exec/obidos/ASIN/%s'])
+ self.searches['amazon'] = ''.join(['http://', AMAZON, '/exec/obidos/external-search?mode=blended&keyword=%s'])
+
+ # These are the blocks we know.
+ self.signatures = [
+ # Paragraph.
+ (r'''^p # Paragraph signature
+ %(battr)s # Paragraph attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended paragraph denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.paragraph),
+
+ # Pre-formatted text.
+ (r'''^pre # Pre signature
+ %(battr)s # Pre attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended pre denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.pre),
+
+ # Block code.
+ (r'''^bc # Blockcode signature
+ %(battr)s # Blockcode attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended blockcode denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.bc),
+
+ # Blockquote.
+ (r'''^bq # Blockquote signature
+ %(battr)s # Blockquote attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended blockquote denoted by a second dot
+ (:(?P<cite> # Optional cite attribute
+ ( #
+ %(url)s # URL
+ | "[\w]+(?:\s[\w]+)*" # "Name inside quotes"
+ )) #
+ )? #
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.blockquote),
+
+ # Header.
+ (r'''^h # Header signature
+ (?P<header>\d) # Header number
+ %(battr)s # Header attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended header denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.header),
+
+ # Footnote.
+ (r'''^fn # Footnote signature
+ (?P<footnote>[\d]+) # Footnote number
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended footnote denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''', self.footnote),
+
+ # Definition list.
+ (r'''^dl # Definition list signature
+ %(battr)s # Definition list attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended definition list denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.dl),
+
+ # Ordered list (attributes to first <li>).
+ (r'''^%(olattr)s # Ordered list attributes
+ \# # Ordered list signature
+ %(liattr)s # List item attributes
+ (?P<dot>\.)? # .
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.ol),
+
+ # Unordered list (attributes to first <li>).
+ (r'''^%(olattr)s # Unrdered list attributes
+ \* # Unordered list signature
+ %(liattr)s # Unordered list attributes
+ (?P<dot>\.)? # .
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.ul),
+
+ # Escaped text.
+ (r'''^==?(?P<text>.*?)(==)?$ # Escaped text
+ ''', self.escape),
+
+ (r'''^(?P<text><.*)$ # XHTML tag
+ ''', self.escape),
+
+ # itex code.
+ (r'''^(?P<text> # itex code
+ \\\[ # starts with \[
+ .*? # complicated mathematical equations go here
+ \\\]) # ends with \]
+ ''', self.itex),
+
+ # Tables.
+ (r'''^table # Table signature
+ %(tattr)s # Table attributes
+ (?P<dot>\.) # .
+ (?P<extend>\.)? # Extended blockcode denoted by a second dot
+ \s # whitespace
+ (?P<text>.*) # text
+ ''' % self.res, self.table),
+
+ # Simple tables.
+ (r'''^(?P<text>
+ \|
+ .*)
+ ''', self.table),
+
+ # About.
+ (r'''^(?P<text>tell\sme\sabout\stextile\.)$''', self.about),
+ ]
+
+
+ def preprocess(self):
+ """Pre-processing of the text.
+
+ Remove whitespace, fix carriage returns.
+ """
+ # Remove whitespace.
+ self.text = self.text.strip()
+
+ # Zap carriage returns.
+ self.text = self.text.replace("\r\n", "\n")
+ self.text = self.text.replace("\r", "\n")
+
+ # Minor sanitizing.
+ self.text = self.sanitize(self.text)
+
+
+ def grab_links(self):
+ """Grab link lookups.
+
+ Check the text for link lookups, store them in a
+ dictionary, and clean them up.
+ """
+ # Grab links like this: '[id]example.com'
+ links = {}
+ p = re.compile(r'''(?:^|\n)\[([\w]+?)\](%(url)s)(?:$|\n)''' % self.res, re.VERBOSE)
+ for key, link in p.findall(self.text):
+ links[key] = link
+
+ # And clear them from the text.
+ self.text = p.sub('', self.text)
+
+ return links
+
+
+ def process(self, head_offset=HEAD_OFFSET, validate=VALIDATE, sanitize=SANITIZE, output=OUTPUT, encoding=ENCODING):
+ """Process the text.
+
+ Here we actually process the text, splitting the text in
+ blocks and applying the corresponding function to each
+ one of them.
+ """
+ # Basic global changes.
+ self.preprocess()
+
+ # Grab lookup links and clean them from the text.
+ self._links = self.grab_links()
+
+ # Offset for the headers.
+ self.head_offset = head_offset
+
+ # Process each block.
+ self.blocks = self.split_text()
+
+ text = []
+ for [function, captures] in self.blocks:
+ text.append(function(**captures))
+
+ text = '\n\n'.join(text)
+
+ # Add titles to footnotes.
+ text = self.footnotes(text)
+
+ # Convert to desired output.
+ text = unicode(text, encoding)
+ text = text.encode(output, 'xmlcharrefreplace')
+
+ # Sanitize?
+ if sanitize:
+ p = _HTMLSanitizer()
+ p.feed(text)
+ text = p.output()
+
+ # Validate output.
+ if _tidy and validate:
+ text = _tidy(text)
+
+ return text
+
+
+ def sanitize(self, text):
+ """Fix single tags.
+
+ Fix tags like <img />, <br /> and <hr />.
+
+ ---
+ h1. Sanitizing
+
+ Textile can help you generate valid XHTML(eXtensible HyperText Markup Language).
+ It will fix any single tags that are not properly closed, like
+ @<img />@, @<br />@ and @<hr />@.
+
+ If you have "mx.Tidy":http://www.egenix.com/files/python/mxTidy.html
+ and/or "&micro;TidyLib":http://utidylib.sourceforge.net/ installed,
+ it also can optionally validade the generated code with these wrappers
+ to ensure 100% valid XHTML(eXtensible HyperText Markup Language).
+ """
+ # Fix single tags like <img /> and <br />.
+ text = preg_replace(r'''<(img|br|hr)(.*?)(?:\s*/?\s*)?>''', r'''<\1\2 />''', text)
+
+ # Remove ampersands.
+ text = preg_replace(r'''&(?!#?[xX]?(?:[0-9a-fA-F]+|\w{1,8});)''', r'''&amp;''', text)
+
+ return text
+
+
+ def split_text(self):
+ """Process the blocks from the text.
+
+ Split the blocks according to the signatures, join extended
+ blocks and associate each one of them with a function to
+ process them.
+
+ ---
+ h1. Blocks
+
+ Textile process your text by dividing it in blocks. Each block
+ is identified by a signature and separated from other blocks by
+ an empty line.
+
+ All signatures should end with a period followed by a space. A
+ header @<h1></h1>@ can be done this way:
+
+ pre. h1. This is a header 1.
+
+ Blocks may continue for multiple paragraphs of text. If you want
+ a block signature to stay "active", use two periods after the
+ signature instead of one. For example:
+
+ pre.. bq.. This is paragraph one of a block quote.
+
+ This is paragraph two of a block quote.
+
+ =p. Now we're back to a regular paragraph.
+
+ p. Becomes:
+
+ pre.. <blockquote>
+ <p>This is paragraph one of a block quote.</p>
+
+ <p>This is paragraph two of a block quote.</p>
+ </blockquote>
+
+ <p>Now we&#8217;re back to a regular paragraph.</p>
+
+ p. The blocks can be customised by adding parameters between the
+ signature and the period. These include:
+
+ dl. {style rule}:A CSS(Cascading Style Sheets) style rule.
+ [ll]:A language identifier (for a "lang" attribute).
+ (class) or (#id) or (class#id):For CSS(Cascading Style Sheets) class and id attributes.
+ &gt;, &lt;, =, &lt;&gt;:Modifier characters for alignment. Right-justification, left-justification, centered, and full-justification. The paragraph will also receive the class names "right", "left", "center" and "justify", respectively.
+ ( (one or more):Adds padding on the left. 1em per "(" character is applied. When combined with the align-left or align-right modifier, it makes the block float.
+ ) (one or more):Adds padding on the right. 1em per ")" character is applied. When combined with the align-left or align-right modifier, it makes the block float.
+
+ Here's an overloaded example:
+
+ pre. p(())>(class#id)[en]{color:red}. A simple paragraph.
+
+ Becomes:
+
+ pre. <p lang="en" style="color:red;padding-left:2em;padding-right:2em;float:right;" class="class right" id="id">A simple paragraph.</p>
+ """
+ # Clear signature.
+ clear_sig = r'''^clear(?P<alignment>[<>])?\.$'''
+ clear = None
+
+ extending = 0
+
+ # We capture the \n's because they are important inside "pre..".
+ blocks = re.split(r'''((\n\s*){2,})''', self.text)
+ output = []
+ for block in blocks:
+ # Check for the clear signature.
+ m = re.match(clear_sig, block)
+ if m:
+ clear = m.group('alignment')
+ if clear:
+ clear = {'<': 'clear:left;', '>': 'clear:right;'}[clear]
+ else:
+ clear = 'clear:both;'
+
+ else:
+ # Check each of the code signatures.
+ for regexp, function in self.signatures:
+ p = re.compile(regexp, (re.VERBOSE | re.DOTALL))
+ m = p.match(block)
+ if m:
+ # Put everything in a dictionary.
+ captures = m.groupdict()
+
+ # If we are extending a block, we require a dot to
+ # break it, so we can start lines with '#' inside
+ # an extended <pre> without matching an ordered list.
+ if extending and not captures.get('dot', None):
+ output[-1][1]['text'] += block
+ break
+ elif captures.has_key('dot'):
+ del captures['dot']
+
+ # If a signature matches, we are not extending a block.
+ extending = 0
+
+ # Check if we should extend this block.
+ if captures.has_key('extend'):
+ extending = captures['extend']
+ del captures['extend']
+
+ # Apply head_offset.
+ if captures.has_key('header'):
+ captures['header'] = int(captures['header']) + self.head_offset
+
+ # Apply clear.
+ if clear:
+ captures['clear'] = clear
+ clear = None
+
+ # Save the block to be processed later.
+ output.append([function, captures])
+
+ break
+
+ else:
+ if extending:
+ # Append the text to the last block.
+ output[-1][1]['text'] += block
+ elif block.strip():
+ output.append([self.paragraph, {'text': block}])
+
+ return output
+
+
+ def parse_params(self, parameters, clear=None, align_type='block'):
+ """Parse the parameters from a block signature.
+
+ This function parses the parameters from a block signature,
+ splitting the information about class, id, language and
+ style. The positioning (indentation and alignment) is parsed
+ and stored in the style.
+
+ A paragraph like:
+
+ p>(class#id){color:red}[en]. Paragraph.
+
+ or:
+
+ p{color:red}[en](class#id)>. Paragraph.
+
+ will have its parameters parsed to:
+
+ output = {'lang' : 'en',
+ 'class': 'class',
+ 'id' : 'id',
+ 'style': 'color:red;text-align:right;'}
+
+ Note that order is not important.
+ """
+ if not parameters:
+ if clear:
+ return {'style': clear}
+ else:
+ return {}
+
+ output = {}
+
+ # Match class from (class) or (class#id).
+ m = re.search(r'''\((?P<class>[\w]+(\s[\w]+)*)(\#[\w]+)?\)''', parameters)
+ if m: output['class'] = m.group('class')
+
+ # Match id from (#id) or (class#id).
+ m = re.search(r'''\([\w]*(\s[\w]+)*\#(?P<id>[\w]+)\)''', parameters)
+ if m: output['id'] = m.group('id')
+
+ # Match [language].
+ m = re.search(r'''\[(?P<lang>[\w-]+)\]''', parameters)
+ if m: output['lang'] = m.group('lang')
+
+ # Match {style}.
+ m = re.search(r'''{(?P<style>[^\}]+)}''', parameters)
+ if m:
+ output['style'] = m.group('style').replace('\n', '')
+
+ # If necessary, apppend a semi-comma to the style.
+ if not output['style'].endswith(';'):
+ output['style'] += ';'
+
+ # Clear the block?
+ if clear:
+ output['style'] = output.get('style', '') + clear
+
+ # Remove classes, ids, langs and styles. This makes the
+ # regular expression for the positioning much easier.
+ parameters = preg_replace(r'''\([\#\w\s]+\)''', '', parameters)
+ parameters = preg_replace(r'''\[[\w-]+\]''', '', parameters)
+ parameters = preg_replace(r'''{[\w:;#%-]+}''', '', parameters)
+
+ style = []
+
+ # Count the left indentation.
+ l_indent = parameters.count('(')
+ if l_indent: style.append('padding-left:%dem;' % l_indent)
+
+ # Count the right indentation.
+ r_indent = parameters.count(')')
+ if r_indent: style.append('padding-right:%dem;' % r_indent)
+
+ # Add alignment.
+ if align_type == 'image':
+ align = [('<', 'float:left;', ' left'),
+ ('>', 'float:right;', ' right')]
+
+ valign = [('^', 'vertical-align:text-top;', ' top'),
+ ('-', 'vertical-align:middle;', ' middle'),
+ ('~', 'vertical-align:text-bottom;', ' bottom')]
+
+ # Images can have both a vertical and a horizontal alignment.
+ for alignments in [align, valign]:
+ for _align, _style, _class in alignments:
+ if parameters.count(_align):
+ style.append(_style)
+
+ # Append a class name related to the alignment.
+ output['class'] = output.get('class', '') + _class
+ break
+
+ elif align_type == 'table':
+ align = [('<', 'left'),
+ ('>', 'right'),
+ ('=', 'center'),
+ ('<>', 'justify')]
+
+ valign = [('^', 'top'),
+ ('~', 'bottom')]
+
+ # Horizontal alignment.
+ for _align, _style, in align:
+ if parameters.count(_align):
+ output['align'] = _style
+
+ # Vertical alignment.
+ for _align, _style, in valign:
+ if parameters.count(_align):
+ output['valign'] = _style
+
+ # Colspan and rowspan.
+ m = re.search(r'''\\(\d+)''', parameters)
+ if m:
+ #output['colspan'] = m.groups()
+ output['colspan'] = int(m.groups()[0])
+
+ m = re.search(r'''/(\d+)''', parameters)
+ if m:
+ output['rowspan'] = int(m.groups()[0])
+
+ else:
+ if l_indent or r_indent:
+ alignments = [('<>', 'text-align:justify;', ' justify'),
+ ('=', 'text-align:center;', ' center'),
+ ('<', 'float:left;', ' left'),
+ ('>', 'float:right;', ' right')]
+ else:
+ alignments = [('<>', 'text-align:justify;', ' justify'),
+ ('=', 'text-align:center;', ' center'),
+ ('<', 'text-align:left;', ' left'),
+ ('>', 'text-align:right;', ' right')]
+
+ for _align, _style, _class in alignments:
+ if parameters.count(_align):
+ style.append(_style)
+
+ # Append a class name related to the alignment.
+ output['class'] = output.get('class', '') + _class
+ break
+
+ # Join all the styles.
+ output['style'] = output.get('style', '') + ''.join(style)
+
+ # Remove excess whitespace.
+ if output.has_key('class'):
+ output['class'] = output['class'].strip()
+
+ return output
+
+
+ def build_open_tag(self, tag, attributes={}, single=0):
+ """Build the open tag with specified attributes.
+
+ This function is used by all block builders to
+ generate the opening tags with the attributes of
+ the block.
+ """
+ # Open tag.
+ open_tag = ['<%s' % tag]
+ for k,v in attributes.items():
+ # The ALT attribute can be empty.
+ if k == 'alt' or v: open_tag.append(' %s="%s"' % (k, v))
+
+ if single:
+ open_tag.append(' /')
+
+ # Close tag.
+ open_tag.append('>')
+
+ return ''.join(open_tag)
+
+
+ def paragraph(self, text, parameters=None, attributes=None, clear=None):
+ """Process a paragraph.
+
+ This function processes the paragraphs, enclosing the text in a
+ <p> tag and breaking lines with <br />. Paragraphs are formatted
+ with all the inline rules.
+
+ ---
+ h1. Paragraph
+
+ This is how you write a paragraph:
+
+ pre. p. This is a paragraph, although a short one.
+
+ Since the paragraph is the default block, you can safely omit its
+ signature ([@p@]). Simply write:
+
+ pre. This is a paragraph, although a short one.
+
+ Text in a paragraph block is wrapped in @<p></p>@ tags, and
+ newlines receive a <br /> tag. In both cases Textile will process
+ the text to:
+
+ pre. <p>This is a paragraph, although a short one.</p>
+
+ Text in a paragraph block is processed with all the inline rules.
+ """
+ # Split the lines.
+ lines = re.split('\n{2,}', text)
+
+ # Get the attributes.
+ attributes = attributes or self.parse_params(parameters, clear)
+
+ output = []
+ for line in lines:
+ if line:
+ # Clean the line.
+ line = line.strip()
+
+ # Build the tag.
+ open_tag = self.build_open_tag('p', attributes)
+ close_tag = '</p>'
+
+ # Pop the id because it must be unique.
+ if attributes.has_key('id'): del attributes['id']
+
+ # Break lines.
+ line = preg_replace(r'(<br />|\n)+', '<br />\n', line)
+
+ # Remove <br /> from inside broken HTML tags.
+ line = preg_replace(r'(<[^>]*)<br />\n(.*?>)', r'\1 \2', line)
+
+ # Inline formatting.
+ line = self.inline(line)
+
+ output.append(open_tag + line + close_tag)
+
+ return '\n\n'.join(output)
+
+
+ def pre(self, text, parameters=None, clear=None):
+ """Process pre-formatted text.
+
+ This function processes pre-formatted text into a <pre> tag.
+ No HTML is added for the lines, but @<@ and @>@ are translated into
+ HTML entities.
+
+ ---
+ h1. Pre-formatted text
+
+ Pre-formatted text can be specified using the @pre@ signature.
+ Inside a "pre" block, whitespace is preserved and @<@ and @>@ are
+ translated into HTML(HyperText Markup Language) entities
+ automatically.
+
+ Text in a "pre" block is _not processed_ with any inline rule.
+
+ Here's a simple example:
+
+ pre. pre. This text is pre-formatted.
+ Nothing interesting happens inside here...
+
+ Will become:
+
+ pre. <pre>
+ This text is pre-formatted.
+ Nothing interesting happens inside here...
+ </pre>
+ """
+
+ # Remove trailing whitespace.
+ text = text.rstrip()
+
+ # Get the attributes.
+ attributes = self.parse_params(parameters, clear)
+
+ # Build the tag.
+ #open_tag = self.build_open_tag('pre', attributes) + '\n'
+ open_tag = self.build_open_tag('pre', attributes)
+ close_tag = '\n</pre>'
+
+ # Replace < and >.
+ text = text.replace('<', '&lt;')
+ text = text.replace('>', '&gt;')
+
+ return open_tag + text + close_tag
+
+
+ def bc(self, text, parameters=None, clear=None):
+ """Process block code.
+
+ This function processes block code into a <code> tag inside a
+ <pre>. No HTML is added for the lines, but @<@ and @>@ are translated
+ into HTML entities.
+
+ ---
+ h1. Block code
+
+ A block code, specified by the @bc@ signature, is a block of
+ pre-formatted text which also receives a @<code></code>@ tag. As
+ with "pre", whitespace is preserved and @<@ and @>@ are translated
+ into HTML(HyperText Markup Language) entities automatically.
+
+ Text in a "bc" code is _not processed_ with the inline rules.
+
+ If you have "Twisted":http://www.twistedmatrix.com/ installed,
+ Textile can automatically colorize your Python code if you
+ specify its language as "Python":
+
+ pre. bc[python]. from twisted.python import htmlizer
+
+ This will become:
+
+ pre. <pre>
+ <code lang="python">
+ <span class="py-src-keyword">from</span> <span class="py-src-variable">twisted</span><span class="py-src-op">.</span><span class="py-src-variable">python</span> <span class="py-src-keyword">import</span> <span class="py-src-variable">htmlizer</span>
+ </code>
+ </pre>
+
+ The colors can be specified in your CSS(Cascading Style Sheets)
+ file. If you don't want to install Twisted, you can download just
+ the @htmlizer@ module "independently":http://dealmeida.net/code/htmlizer.py.txt.
+ """
+
+ # Get the attributes.
+ attributes = self.parse_params(parameters, clear)
+
+ # XHTML <code> can't have the attribute lang.
+ if attributes.has_key('lang'):
+ lang = attributes['lang']
+ del attributes['lang']
+ else:
+ lang = None
+
+ # Build the tag.
+ open_tag = '<pre>\n' + self.build_open_tag('code', attributes) + '\n'
+ close_tag = '\n</code>\n</pre>'
+
+ # Colorize Python code?
+ if htmlizer and lang == 'python':
+ text = _color(text)
+ else:
+ # Replace < and >.
+ text = text.replace('<', '&lt;')
+ text = text.replace('>', '&gt;')
+
+ return open_tag + text + close_tag
+
+
+ def dl(self, text, parameters=None, clear=None):
+ """Process definition list.
+
+ This function process definition lists. The text inside
+ the <dt> and <dd> tags is processed for inline formatting.
+
+ ---
+ h1. Definition list
+
+ A definition list starts with the signature @dl@, and has
+ its items separated by a @:@. Here's a simple example:
+
+ pre. dl. name:Sir Lancelot of Camelot.
+ quest:To seek the Holy Grail.
+ color:Blue.
+
+ Becomes:
+
+ pre. <dl>
+ <dt>name</dt>
+ <dd>Sir Lancelot of Camelot.</dd>
+ <dt>quest</dt>
+ <dd>To seek the Holy Grail.</dd>
+ <dt>color</dt>
+ <dd>Blue.</dd>
+ </dl>
+ """
+ # Get the attributes.
+ attributes = self.parse_params(parameters, clear)
+
+ # Build the tag.
+ open_tag = self.build_open_tag('dl', attributes) + '\n'
+ close_tag = '\n</dl>'
+
+ lines = text.split('\n')
+ output = []
+ for line in lines:
+ if line.count(':'):
+ [dt, dd] = line.split(':', 1)
+ else:
+ dt,dd = line, ''
+
+ if dt: output.append('<dt>%s</dt>\n<dd>%s</dd>' % (dt, dd))
+
+ text = '\n'.join(output)
+
+ text = self.inline(text)
+
+ return open_tag + text + close_tag
+
+
+ def blockquote(self, text, parameters=None, cite=None, clear=None):
+ """Process block quote.
+
+ The block quote is inserted into a <blockquote> tag, and
+ processed as a paragraph. An optional cite attribute can
+ be appended on the last line after two dashes (--), or
+ after the period following ':' for compatibility with the
+ Perl version.
+
+ ---
+ h1. Blockquote
+
+ A blockquote is denoted by the signature @bq@. The text in this
+ block will be enclosed in @<blockquote></blockquote>@ and @<p></p>@,
+ receiving the same formatting as a paragraph. For example:
+
+ pre. bq. This is a blockquote.
+
+ Becomes:
+
+ pre. <blockquote>
+ <p>This is a blockquote.</p>
+ </blockquote>
+
+ You can optionally specify the @cite@ attribute of the blockquote,
+ using the following syntax:
+
+ pre. bq.:http://example.com Some text.
+
+ pre. bq.:"John Doe" Some other text.
+
+ Becomes:
+
+ pre. <blockquote cite="http://example.com">
+ <p>Some text.</p>
+ </blockquote>
+
+ pre. <blockquote cite="John Doe">
+ <p>Some other text.</p>
+ </blockquote>
+
+ You can also specify the @cite@ using a pair of dashes on the
+ last line of the blockquote:
+
+ pre. bq. Some text.
+ -- http://example.com
+ """
+
+ # Get the attributes.
+ attributes = self.parse_params(parameters, clear)
+
+ if cite:
+ # Remove the quotes?
+ cite = cite.strip('"')
+ attributes['cite'] = cite
+ else:
+ # The citation should be on the last line.
+ text = text.split('\n')
+ if text[-1].startswith('-- '):
+ attributes['cite'] = text.pop()[3:]
+
+ text = '\n'.join(text)
+
+ # Build the tag.
+ open_tag = self.build_open_tag('blockquote', attributes) + '\n'
+ close_tag = '\n</blockquote>'
+
+ # Process the paragraph, passing the attributes.
+ # Does it make sense to pass the id, class, etc. to
+ # the paragraph instead of applying it to the
+ # blockquote tag?
+ text = self.paragraph(text)
+
+ return open_tag + text + close_tag
+
+
+ def header(self, text, parameters=None, header=1, clear=None):
+ """Process a header.
+
+ The header number is captured by the regular
+ expression and lives in header. If head_offset is
+ set, it is adjusted accordingly.
+
+ ---
+ h1. Header
+
+ A header is produced by the signature @hn@, where @n@ goes
+ from 1 to 6. You can adjust the relative output of the headers
+ passing a @head_offset@ attribute when calling @textile()@.
+
+ To make a header:
+
+ pre. h1. This is a header.
+
+ Becomes:
+
+ pre. <h1>This is a header.</h1>
+ """
+ # Get the attributes.
+ attributes = self.parse_params(parameters, clear)
+
+ # Get the header number and limit it between 1 and 6.
+ n = header
+ n = min(n,6)
+ n = max(n,1)
+
+ # Build the tag.
+ open_tag = self.build_open_tag('h%d' % n, attributes)
+ close_tag = '</h%d>' % n
+
+ text = self.inline(text)
+
+ return open_tag + text + close_tag
+
+
+ def footnote(self, text, parameters=None, footnote=1, clear=None):
+ """Process a footnote.
+
+ A footnote is formatted as a paragraph of class
+ 'footnote' and id 'fn%d', starting with the footnote
+ number in a <sup> tag. Here we just build the
+ attributes and pass them directly to self.paragraph().
+
+ ---
+ h1. Footnote
+
+ A footnote is produced by the signature @fn@ followed by
+ a number. Footnotes are paragraphs of a special CSS(Cascading Style Sheets)
+ class. An example:
+
+ pre. fn1. This is footnote number one.
+
+ Will produce this:
+
+ pre. <p class="footnote" id="fn1"><sup>1</sup> This is footnote number one.</p>
+
+ This footnote can be referenced anywhere on the text by the
+ following way:
+
+ pre. This is a reference[1] to footnote number one.
+
+ Which becomes:
+
+ pre. <p>This is a reference<sup class="footnote"><a href="#fn1" title="This is footnote number one.">1</a></sup> to footnote number 1.</p>
+
+ Note that the text from the footnote appears in the @title@ of the
+ link pointing to it.
+ """
+ # Get the number.
+ n = int(footnote)
+
+ # Build the attributes to the paragraph.
+ attributes = self.parse_params(parameters, clear)
+ attributes['class'] = 'footnote'
+ attributes['id'] = 'fn%d' % n
+
+ # Build the paragraph text.
+ text = ('<sup>%d</sup> ' % n) + text
+
+ # And return the paragraph.
+ return self.paragraph(text=text, attributes=attributes)
+
+
+ def build_li(self, items, liattributes):
+ """Build the list item.
+
+ This function build the list item of an (un)ordered list. It
+ works by peeking at the next list item, and searching for a
+ multi-list. If a multi-list is found, it is processed and
+ appended inside the list item tags, as it should be.
+ """
+ lines = []
+ while len(items):
+ item = items.pop(0)
+
+ # Clean the line.
+ item = item.lstrip()
+ item = item.replace('\n', '<br />\n')
+
+ # Get list item attributes.
+ p = re.compile(r'''^%(liattr)s\s''' % self.res, re.VERBOSE)
+ m = p.match(item)
+ if m:
+ c = m.groupdict('')
+ liparameters = c['liparameters']
+ item = p.sub('', item)
+ else:
+ liparameters = ''
+
+ liattributes = liattributes or self.parse_params(liparameters)
+
+ # Build the item tag.
+ open_tag_li = self.build_open_tag('li', liattributes)
+
+ # Reset the attributes, which should be applied
+ # only to the first <li>.
+ liattributes = {}
+
+ # Build the closing tag.
+ close_tag_li = '</li>'
+
+ # Multi-list recursive routine.
+ # Here we check the _next_ items for a multi-list. If we
+ # find one, we extract all items of the multi-list and
+ # process them recursively.
+ if len(items):
+ inlist = []
+
+ # Grab all the items that start with # or *.
+ n_item = items.pop(0)
+
+ # Grab the <ol> parameters.
+ p = re.compile(r'''^%(olattr)s''' % self.res, re.VERBOSE)
+ m = p.match(n_item)
+ if m:
+ c = m.groupdict('')
+ olparameters = c['olparameters']
+ tmp = p.sub('', n_item)
+ else:
+ olparameters = ''
+
+ # Check for an ordered list inside this one.
+ if tmp.startswith('#'):
+ n_item = tmp
+ inlist.append(n_item)
+ while len(items):
+ # Peek into the next item.
+ n_item = items.pop(0)
+ if n_item.startswith('#'):
+ inlist.append(n_item)
+ else:
+ items.insert(0, n_item)
+ break
+
+ inlist = self.ol('\n'.join(inlist), olparameters=olparameters)
+ item = item + '\n' + inlist + '\n'
+
+ # Check for an unordered list inside this one.
+ elif tmp.startswith('*'):
+ n_item = tmp
+ inlist.append(n_item)
+ while len(items):
+ # Peek into the next item.
+ n_item = items.pop(0)
+ if n_item.startswith('*'):
+ inlist.append(n_item)
+ else:
+ items.insert(0, n_item)
+ break
+
+ inlist = self.ul('\n'.join(inlist), olparameters=olparameters)
+ item = item + '\n' + inlist + '\n'
+
+ # Otherwise we just put it back in the list.
+ else:
+ items.insert(0, n_item)
+
+ item = self.inline(item)
+
+ item = open_tag_li + item + close_tag_li
+ lines.append(item)
+
+ return '\n'.join(lines)
+
+
+ def ol(self, text, liparameters=None, olparameters=None, clear=None):
+ """Build an ordered list.
+
+ This function basically just sets the <ol></ol> with the
+ right attributes, and then pass everything inside to
+ _build_li, which does the real tough recursive job.
+
+ ---
+ h1. Ordered lists
+
+ Ordered lists can be constructed this way:
+
+ pre. # Item number 1.
+ # Item number 2.
+ # Item number 3.
+
+ And you get:
+
+ pre. <ol>
+ <li>Item number 1.</li>
+ <li>Item number 2.</li>
+ <li>Item number 3.</li>
+ </ol>
+
+ If you want a list to "break" an extended block, you should
+ add a period after the hash. This is useful for writing
+ Python code:
+
+ pre.. bc[python].. #!/usr/bin/env python
+
+ # This is a comment, not an ordered list!
+ # So this won't break the extended "bc".
+
+ p. Lists can be nested:
+
+ pre. # Item number 1.
+ ## Item number 1a.
+ ## Item number 1b.
+ # Item number 2.
+ ## Item number 2a.
+
+ Textile will transform this to:
+
+ pre. <ol>
+ <li>Item number 1.
+ <ol>
+ <li>Item number 1a.</li>
+ <li>Item number 1b.</li>
+ </ol>
+ </li>
+ <li>Item number 2.
+ <ol>
+ <li>Item number 2a.</li>
+ </ol>
+ </li>
+ </ol>
+
+ You can also mix ordered and unordered lists:
+
+ pre. * To write well you need:
+ *# to read every day
+ *# to write every day
+ *# and X
+
+ You'll get this:
+
+ pre. <ul>
+ <li>To write well you need:
+ <ol>
+ <li>to read every day</li>
+ <li>to write every day</li>
+ <li>and X</li>
+ </ol>
+ </li>
+ </ul>
+
+ To style a list, the parameters should go before the hash if you want
+ to set the attributes on the @<ol>@ tag:
+
+ pre. (class#id)# one
+ # two
+ # three
+
+ If you want to customize the firsr @<li>@ tag, apply the parameters
+ after the hash:
+
+ pre. #(class#id) one
+ # two
+ # three
+ """
+ # Get the attributes.
+ olattributes = self.parse_params(olparameters, clear)
+ liattributes = self.parse_params(liparameters)
+
+ # Remove list depth.
+ if text.startswith('#'):
+ text = text[1:]
+
+ items = text.split('\n#')
+
+ # Build the open tag.
+ open_tag = self.build_open_tag('ol', olattributes) + '\n'
+
+ close_tag = '\n</ol>'
+
+ # Build the list items.
+ text = self.build_li(items, liattributes)
+
+ return open_tag + text + close_tag
+
+
+ def ul(self, text, liparameters=None, olparameters=None, clear=None):
+ """Build an unordered list.
+
+ This function basically just sets the <ul></ul> with the
+ right attributes, and then pass everything inside to
+ _build_li, which does the real tough recursive job.
+
+ ---
+ h1. Unordered lists
+
+ Unordered lists behave exactly like the ordered lists, and are
+ defined using a star:
+
+ pre. * Python
+ * Perl
+ * PHP
+
+ Becomes:
+
+ pre. <ul>
+ <li>Python</li>
+ <li>Perl</li>
+ <li><span class="caps">PHP</span></li>
+ </ul>
+ """
+ # Get the attributes.
+ olattributes = self.parse_params(olparameters, clear)
+ liattributes = self.parse_params(liparameters)
+
+ # Remove list depth.
+ if text.startswith('*'):
+ text = text[1:]
+
+ items = text.split('\n*')
+
+ # Build the open tag.
+ open_tag = self.build_open_tag('ul', olattributes) + '\n'
+
+ close_tag = '\n</ul>'
+
+ # Build the list items.
+ text = self.build_li(items, liattributes)
+
+ return open_tag + text + close_tag
+
+
+ def table(self, text, parameters=None, clear=None):
+ """Build a table.
+
+ To build a table we split the text in lines to get the
+ rows, and split the rows between '|' to get the individual
+ cells.
+
+ ---
+ h1. Tables
+
+ Making a simple table is as easy as possible:
+
+ pre. |a|b|c|
+ |1|2|3|
+
+ Will be processed into:
+
+ pre. <table>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ <td>c</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>2</td>
+ <td>3</td>
+ </tr>
+ </table>
+
+ If you want to customize the @<table>@ tag, you must use the
+ @table@ signature:
+
+ pre. table(class#id)[en]. |a|b|c|
+ |1|2|3|
+
+ To customize a row, apply the modifier _before_ the first @|@:
+
+ pre. table. (class)<>|a|b|c|
+ |1|2|3|
+
+ Individual cells can by customized by adding the parameters _after_
+ the @|@, proceded by a period and a space:
+
+ pre. |(#id). a|b|c|
+ |1|2|3|
+
+ The allowed modifiers are:
+
+ dl. {style rule}:A CSS(Cascading Style Sheets) style rule.
+ (class) or (#id) or (class#id):A CSS(Cascading Style Sheets) class and/or id attribute.
+ ( (one or more):Adds 1em of padding to the left for each '(' character.
+ ) (one or more):Adds 1em of padding to the right for each ')' character.
+ &lt;:Aligns to the left (floats to left for tables if combined with the ')' modifier).
+ &gt;:Aligns to the right (floats to right for tables if combined with the '(' modifier).
+ =:Aligns to center (sets left, right margins to 'auto' for tables).
+ &lt;&gt;:For cells only. Justifies text.
+ ^:For rows and cells only. Aligns to the top.
+ ~ (tilde):For rows and cells only. Aligns to the bottom.
+ _ (underscore):Can be applied to a table row or cell to indicate a header row or cell.
+ \\2 or \\3 or \\4, etc.:Used within cells to indicate a colspan of 2, 3, 4, etc. columns. When you see "\\", think "push forward".
+ /2 or /3 or /4, etc.:Used within cells to indicate a rowspan of 2, 3, 4, etc. rows. When you see "/", think "push downward".
+
+ When a cell is identified as a header cell and an alignment is
+ specified, that becomes the default alignment for cells below it.
+ You can always override this behavior by specifying an alignment
+ for one of the lower cells.
+ """
+ attributes = self.parse_params(parameters, clear, align_type='table')
+ #attributes['cellspacing'] = '0'
+
+ # Build the <table>.
+ open_tag = self.build_open_tag('table', attributes) + '\n'
+ close_tag = '</table>'
+
+ output = []
+ default_align = {}
+ rows = re.split(r'''\n+''', text)
+ for row in rows:
+ # Get the columns.
+ columns = row.split('|')
+
+ # Build the <tr>.
+ parameters = columns.pop(0)
+
+ rowattr = self.parse_params(parameters, align_type='table')
+ open_tr = self.build_open_tag('tr', rowattr) + '\n'
+ output.append(open_tr)
+
+ # Does the row define headers?
+ if parameters.count('_'):
+ td_tag = 'th'
+ else:
+ td_tag = 'td'
+
+ col = 0
+ for cell in columns[:-1]:
+ p = re.compile(r'''(?:%(tattr)s\.\s)?(?P<text>.*)''' % self.res, re.VERBOSE)
+ m = p.match(cell)
+ if m:
+ c = m.groupdict('')
+ cellattr = self.parse_params(c['parameters'], align_type='table')
+
+ # Get the width of this cell.
+ width = cellattr.get('colspan', 1)
+
+ # Is this a header?
+ if c['parameters'].count('_'):
+ td_tag = 'th'
+
+ # If it is a header, let's set the default alignment.
+ if td_tag == 'th':
+ # Set the default aligment for all cells below this one.
+ # This is a little tricky because this header can have
+ # a colspan set.
+ for i in range(col, col+width):
+ default_align[i] = cellattr.get('align', None)
+
+ else:
+ # Apply the default align, if any.
+ cellattr['align'] = cellattr.get('align', default_align.get(col, None))
+
+ open_td = self.build_open_tag(td_tag, cellattr)
+ close_td = '</%s>\n' % td_tag
+
+ #output.append(open_td + c['text'].strip() + close_td)
+ output.append(open_td + self.inline(c['text'].strip()) + close_td)
+
+ col += width
+
+ output.append('</tr>\n')
+
+ text = open_tag + ''.join(output) + close_tag
+
+ return text
+
+
+ def escape(self, text):
+ """Do nothing.
+
+ This is used to match escaped text. Nothing to see here!
+
+ ---
+ h1. Escaping
+
+ If you don't want Textile processing a block, you can simply
+ enclose it inside @==@:
+
+ pre. p. Regular paragraph
+
+ pre. ==
+ Escaped portion -- will not be formatted
+ by Textile at all
+ ==
+
+ pre. p. Back to normal.
+
+ This can also be used inline, disabling the formatting temporarily:
+
+ pre. p. This is ==*a test*== of escaping.
+ """
+ return text
+
+
+ def itex(self, text):
+ """Convert itex to MathML.
+
+ If the itex2mml binary is set, we use it to convert the
+ itex to MathML. Otherwise, the text is unprocessed and
+ return as is.
+
+ ---
+ h1. itex
+
+ Textile can automatically convert itex code to MathML(Mathematical Markup Language)
+ for you, if you have the itex2MML binary (you can download it
+ from the "Movable Type plugin":http://golem.ph.utexas.edu/~distler/blog/files/itexToMML.tar.gz).
+
+ Block equations should be enclosed inbetween @\[@ and @\]@:
+
+ pre. \[ e^{i\pi} + 1 = 0 \]
+
+ Will be translated to:
+
+ pre. <math xmlns='http://www.w3.org/1998/Math/MathML' mode='display'>
+ <msup><mi>e</mi> <mrow><mi>i</mi>
+ <mi>&amp;pi;</mi></mrow></msup>
+ <mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn>
+ </math>
+
+ Equations can also be displayed inline:
+
+ pre. Euler's formula, $e^{i\pi}+1=0$, ...
+
+ (Note that if you want to display MathML(Mathematical Markup Language)
+ your content must be served as @application/xhtml+xml@, which is not
+ accepted by all browsers.)
+ """
+ if itex2mml:
+ try:
+ text = os.popen("echo '%s' | %s" % (text, itex2mml)).read()
+ except:
+ pass
+
+ return text
+
+
+ def about(self, text=None):
+ """Show PyTextile's functionalities.
+
+ An introduction to PyTextile. Can be called when running the
+ main script or if you write the following line:
+
+ 'tell me about textile.'
+
+ But keep it a secret!
+ """
+
+ about = []
+ about.append(textile('h1. This is Textile', head_offset=self.head_offset))
+ about.append(textile(__doc__.split('---', 1)[1], head_offset=self.head_offset))
+
+ functions = [(self.split_text, 1),
+ (self.paragraph, 2),
+ (self.pre, 2),
+ (self.bc, 2),
+ (self.blockquote, 2),
+ (self.dl, 2),
+ (self.header, 2),
+ (self.footnote, 2),
+ (self.escape, 2),
+ (self.itex, 2),
+ (self.ol, 2),
+ (self.ul, 2),
+ (self.table, 2),
+ (self.inline, 1),
+ (self.qtags, 2),
+ (self.glyphs, 2),
+ (self.macros, 2),
+ (self.acronym, 2),
+ (self.images, 1),
+ (self.links, 1),
+ (self.sanitize, 1),
+ ]
+
+ for function, offset in functions:
+ doc = function.__doc__.split('---', 1)[1]
+ doc = doc.split('\n')
+ lines = []
+ for line in doc:
+ line = line.strip()
+ lines.append(line)
+
+ doc = '\n'.join(lines)
+ about.append(textile(doc, head_offset=self.head_offset+offset))
+
+ about = '\n'.join(about)
+ about = about.replace('<br />', '')
+
+ return about
+
+
+ def acronym(self, text):
+ """Process acronyms.
+
+ Acronyms can have letters in upper and lower caps, or even numbers,
+ provided that the numbers and upper caps are the same in the
+ abbreviation and in the description. For example:
+
+ XHTML(eXtensible HyperText Markup Language)
+ OPeNDAP(Open source Project for a Network Data Access Protocol)
+ L94(Levitus 94)
+
+ are all valid acronyms.
+
+ ---
+ h1. Acronyms
+
+ You can define acronyms in your text the following way:
+
+ pre. This is XHTML(eXtensible HyperText Markup Language).
+
+ The resulting code is:
+
+ pre. <p><acronym title="eXtensible HyperText Markup Language"><span class="caps">XHTML</span></acronym></p>
+
+ Acronyms can have letters in upper and lower caps, or even numbers,
+ provided that the numbers and upper caps are the same in the
+ abbreviation and in the description. For example:
+
+ pre. XHTML(eXtensible HyperText Markup Language)
+ OPeNDAP(Open source Project for a Network Data Access Protocol)
+ L94(Levitus 94)
+
+ are all valid acronyms.
+ """
+ # Find the acronyms.
+ acronyms = r'''(?P<acronym>[\w]+)\((?P<definition>[^\(\)]+?)\)'''
+
+ # Check all acronyms.
+ for acronym, definition in re.findall(acronyms, text):
+ caps_acronym = ''.join(re.findall('[A-Z\d]+', acronym))
+ caps_definition = ''.join(re.findall('[A-Z\d]+', definition))
+ if caps_acronym and caps_acronym == caps_definition:
+ text = text.replace('%s(%s)' % (acronym, definition), '<acronym title="%s">%s</acronym>' % (definition, acronym))
+
+ text = html_replace(r'''(^|\s)([A-Z]{3,})\b(?!\()''', r'''\1<span class="caps">\2</span>''', text)
+
+ return text
+
+
+ def footnotes(self, text):
+ """Add titles to footnotes references.
+
+ This function searches for footnotes references like this [1], and
+ adds a title to the link containing the first paragraph of the
+ footnote.
+ """
+ # Search for footnotes.
+ p = re.compile(r'''<p class="footnote" id="fn(?P<n>\d+)"><sup>(?P=n)</sup>(?P<note>.*)</p>''')
+ for m in p.finditer(text):
+ n = m.group('n')
+ note = m.group('note').strip()
+
+ # Strip HTML from note.
+ note = re.sub('<.*?>', '', note)
+
+ # Add the title.
+ text = text.replace('<a href="#fn%s">' % n, '<a href="#fn%s" title="%s">' % (n, note))
+
+ return text
+
+
+ def macros(self, m):
+ """Quick macros.
+
+ This function replaces macros inside brackets using a built-in
+ dictionary, and also unicode names if the key doesn't exist.
+
+ ---
+ h1. Macros
+
+ Textile has support for character macros, which should be enclosed
+ in curly braces. A few useful ones are:
+
+ pre. {C=} or {=C}: euro sign
+ {+-} or {-+}: plus-minus sign
+ {L-} or {-L}: pound sign.
+
+ You can also make accented characters:
+
+ pre. Expos{e'}
+
+ Becomes:
+
+ pre. <p>Expos&amp;#233;</p>
+
+ You can also specify Unicode names like:
+
+ pre. {umbrella}
+ {white smiling face}
+ """
+ entity = m.group(1)
+
+ macros = {'c|': '&#162;', # cent sign
+ '|c': '&#162;', # cent sign
+ 'L-': '&#163;', # pound sign
+ '-L': '&#163;', # pound sign
+ 'Y=': '&#165;', # yen sign
+ '=Y': '&#165;', # yen sign
+ '(c)': '&#169;', # copyright sign
+ '<<': '&#171;', # left-pointing double angle quotation
+ '(r)': '&#174;', # registered sign
+ '+_': '&#177;', # plus-minus sign
+ '_+': '&#177;', # plus-minus sign
+ '>>': '&#187;', # right-pointing double angle quotation
+ '1/4': '&#188;', # vulgar fraction one quarter
+ '1/2': '&#189;', # vulgar fraction one half
+ '3/4': '&#190;', # vulgar fraction three quarters
+ 'A`': '&#192;', # latin capital letter a with grave
+ '`A': '&#192;', # latin capital letter a with grave
+ 'A\'': '&#193;', # latin capital letter a with acute
+ '\'A': '&#193;', # latin capital letter a with acute
+ 'A^': '&#194;', # latin capital letter a with circumflex
+ '^A': '&#194;', # latin capital letter a with circumflex
+ 'A~': '&#195;', # latin capital letter a with tilde
+ '~A': '&#195;', # latin capital letter a with tilde
+ 'A"': '&#196;', # latin capital letter a with diaeresis
+ '"A': '&#196;', # latin capital letter a with diaeresis
+ 'Ao': '&#197;', # latin capital letter a with ring above
+ 'oA': '&#197;', # latin capital letter a with ring above
+ 'AE': '&#198;', # latin capital letter ae
+ 'C,': '&#199;', # latin capital letter c with cedilla
+ ',C': '&#199;', # latin capital letter c with cedilla
+ 'E`': '&#200;', # latin capital letter e with grave
+ '`E': '&#200;', # latin capital letter e with grave
+ 'E\'': '&#201;', # latin capital letter e with acute
+ '\'E': '&#201;', # latin capital letter e with acute
+ 'E^': '&#202;', # latin capital letter e with circumflex
+ '^E': '&#202;', # latin capital letter e with circumflex
+ 'E"': '&#203;', # latin capital letter e with diaeresis
+ '"E': '&#203;', # latin capital letter e with diaeresis
+ 'I`': '&#204;', # latin capital letter i with grave
+ '`I': '&#204;', # latin capital letter i with grave
+ 'I\'': '&#205;', # latin capital letter i with acute
+ '\'I': '&#205;', # latin capital letter i with acute
+ 'I^': '&#206;', # latin capital letter i with circumflex
+ '^I': '&#206;', # latin capital letter i with circumflex
+ 'I"': '&#207;', # latin capital letter i with diaeresis
+ '"I': '&#207;', # latin capital letter i with diaeresis
+ 'D-': '&#208;', # latin capital letter eth
+ '-D': '&#208;', # latin capital letter eth
+ 'N~': '&#209;', # latin capital letter n with tilde
+ '~N': '&#209;', # latin capital letter n with tilde
+ 'O`': '&#210;', # latin capital letter o with grave
+ '`O': '&#210;', # latin capital letter o with grave
+ 'O\'': '&#211;', # latin capital letter o with acute
+ '\'O': '&#211;', # latin capital letter o with acute
+ 'O^': '&#212;', # latin capital letter o with circumflex
+ '^O': '&#212;', # latin capital letter o with circumflex
+ 'O~': '&#213;', # latin capital letter o with tilde
+ '~O': '&#213;', # latin capital letter o with tilde
+ 'O"': '&#214;', # latin capital letter o with diaeresis
+ '"O': '&#214;', # latin capital letter o with diaeresis
+ 'O/': '&#216;', # latin capital letter o with stroke
+ '/O': '&#216;', # latin capital letter o with stroke
+ 'U`': '&#217;', # latin capital letter u with grave
+ '`U': '&#217;', # latin capital letter u with grave
+ 'U\'': '&#218;', # latin capital letter u with acute
+ '\'U': '&#218;', # latin capital letter u with acute
+ 'U^': '&#219;', # latin capital letter u with circumflex
+ '^U': '&#219;', # latin capital letter u with circumflex
+ 'U"': '&#220;', # latin capital letter u with diaeresis
+ '"U': '&#220;', # latin capital letter u with diaeresis
+ 'Y\'': '&#221;', # latin capital letter y with acute
+ '\'Y': '&#221;', # latin capital letter y with acute
+ 'a`': '&#224;', # latin small letter a with grave
+ '`a': '&#224;', # latin small letter a with grave
+ 'a\'': '&#225;', # latin small letter a with acute
+ '\'a': '&#225;', # latin small letter a with acute
+ 'a^': '&#226;', # latin small letter a with circumflex
+ '^a': '&#226;', # latin small letter a with circumflex
+ 'a~': '&#227;', # latin small letter a with tilde
+ '~a': '&#227;', # latin small letter a with tilde
+ 'a"': '&#228;', # latin small letter a with diaeresis
+ '"a': '&#228;', # latin small letter a with diaeresis
+ 'ao': '&#229;', # latin small letter a with ring above
+ 'oa': '&#229;', # latin small letter a with ring above
+ 'ae': '&#230;', # latin small letter ae
+ 'c,': '&#231;', # latin small letter c with cedilla
+ ',c': '&#231;', # latin small letter c with cedilla
+ 'e`': '&#232;', # latin small letter e with grave
+ '`e': '&#232;', # latin small letter e with grave
+ 'e\'': '&#233;', # latin small letter e with acute
+ '\'e': '&#233;', # latin small letter e with acute
+ 'e^': '&#234;', # latin small letter e with circumflex
+ '^e': '&#234;', # latin small letter e with circumflex
+ 'e"': '&#235;', # latin small letter e with diaeresis
+ '"e': '&#235;', # latin small letter e with diaeresis
+ 'i`': '&#236;', # latin small letter i with grave
+ '`i': '&#236;', # latin small letter i with grave
+ 'i\'': '&#237;', # latin small letter i with acute
+ '\'i': '&#237;', # latin small letter i with acute
+ 'i^': '&#238;', # latin small letter i with circumflex
+ '^i': '&#238;', # latin small letter i with circumflex
+ 'i"': '&#239;', # latin small letter i with diaeresis
+ '"i': '&#239;', # latin small letter i with diaeresis
+ 'n~': '&#241;', # latin small letter n with tilde
+ '~n': '&#241;', # latin small letter n with tilde
+ 'o`': '&#242;', # latin small letter o with grave
+ '`o': '&#242;', # latin small letter o with grave
+ 'o\'': '&#243;', # latin small letter o with acute
+ '\'o': '&#243;', # latin small letter o with acute
+ 'o^': '&#244;', # latin small letter o with circumflex
+ '^o': '&#244;', # latin small letter o with circumflex
+ 'o~': '&#245;', # latin small letter o with tilde
+ '~o': '&#245;', # latin small letter o with tilde
+ 'o"': '&#246;', # latin small letter o with diaeresis
+ '"o': '&#246;', # latin small letter o with diaeresis
+ ':-': '&#247;', # division sign
+ '-:': '&#247;', # division sign
+ 'o/': '&#248;', # latin small letter o with stroke
+ '/o': '&#248;', # latin small letter o with stroke
+ 'u`': '&#249;', # latin small letter u with grave
+ '`u': '&#249;', # latin small letter u with grave
+ 'u\'': '&#250;', # latin small letter u with acute
+ '\'u': '&#250;', # latin small letter u with acute
+ 'u^': '&#251;', # latin small letter u with circumflex
+ '^u': '&#251;', # latin small letter u with circumflex
+ 'u"': '&#252;', # latin small letter u with diaeresis
+ '"u': '&#252;', # latin small letter u with diaeresis
+ 'y\'': '&#253;', # latin small letter y with acute
+ '\'y': '&#253;', # latin small letter y with acute
+ 'y"': '&#255', # latin small letter y with diaeresis
+ '"y': '&#255', # latin small letter y with diaeresis
+ 'OE': '&#338;', # latin capital ligature oe
+ 'oe': '&#339;', # latin small ligature oe
+ '*': '&#8226;', # bullet
+ 'Fr': '&#8355;', # french franc sign
+ 'L=': '&#8356;', # lira sign
+ '=L': '&#8356;', # lira sign
+ 'Rs': '&#8360;', # rupee sign
+ 'C=': '&#8364;', # euro sign
+ '=C': '&#8364;', # euro sign
+ 'tm': '&#8482;', # trade mark sign
+ '<-': '&#8592;', # leftwards arrow
+ '->': '&#8594;', # rightwards arrow
+ '<=': '&#8656;', # leftwards double arrow
+ '=>': '&#8658;', # rightwards double arrow
+ '=/': '&#8800;', # not equal to
+ '/=': '&#8800;', # not equal to
+ '<_': '&#8804;', # less-than or equal to
+ '_<': '&#8804;', # less-than or equal to
+ '>_': '&#8805;', # greater-than or equal to
+ '_>': '&#8805;', # greater-than or equal to
+ ':(': '&#9785;', # white frowning face
+ ':)': '&#9786;', # white smiling face
+ 'spade': '&#9824;', # black spade suit
+ 'club': '&#9827;', # black club suit
+ 'heart': '&#9829;', # black heart suit
+ 'diamond': '&#9830;', # black diamond suit
+ }
+
+ try:
+ # Try the key.
+ entity = macros[entity]
+ except KeyError:
+ try:
+ # Try a unicode entity.
+ entity = unicodedata.lookup(entity)
+ entity = entity.encode('ascii', 'xmlcharrefreplace')
+ except:
+ # Return the unmodified entity.
+ entity = '{%s}' % entity
+
+ return entity
+
+
+ def glyphs(self, text):
+ """Glyph formatting.
+
+ This function replaces quotations marks, dashes and a few other
+ symbol for numerical entities. The em/en dashes use definitions
+ comes from http://alistapart.com/articles/emen/.
+
+ ---
+ h1. Glyphs
+
+ Textile replaces some of the characters in your text with their
+ equivalent numerical entities. These include:
+
+ * Replace single and double primes used as quotation marks with HTML(HyperText Markup Language) entities for opening and closing quotation marks in readable text, while leaving untouched the primes required within HTML(HyperText Markup Language) tags.
+ * Replace double hyphens (==--==) with an em-dash (&#8212;) entity.
+ * Replace triple hyphens (==---==) with two em-dash (&#8212;&#8212;) entities.
+ * Replace single hyphens surrounded by spaces with an en-dash (&#8211;) entity.
+ * Replace triplets of periods (==...==) with an ellipsis (&#8230;) entity.
+ * Convert many nonstandard characters to browser-safe entities corresponding to keyboard input.
+ * Convert ==(TM)==, ==(R)==, and ==(C)== to &#8482;, &#174;, and &#169;.
+ * Convert the letter x to a dimension sign: 2==x==4 to 2x4 and 8 ==x== 10 to 8x10.
+ """
+ glyphs = [(r'''"(?<!\w)\b''', r'''&#8220;'''), # double quotes
+ (r'''"''', r'''&#8221;'''), # double quotes
+ (r"""\b'""", r'''&#8217;'''), # single quotes
+ (r"""'(?<!\w)\b""", r'''&#8216;'''), # single quotes
+ (r"""'""", r'''&#8217;'''), # single single quote
+ (r'''(\b|^)( )?\.{3}''', r'''\1&#8230;'''), # ellipsis
+ (r'''\b---\b''', r'''&#8212;&#8212;'''), # double em dash
+ (r'''\s?--\s?''', r'''&#8212;'''), # em dash
+ (r'''(\d+)-(\d+)''', r'''\1&#8211;\2'''), # en dash (1954-1999)
+ (r'''(\d+)-(\W)''', r'''\1&#8212;\2'''), # em dash (1954--)
+ (r'''\s-\s''', r''' &#8211; '''), # en dash
+ (r'''(\d+) ?x ?(\d+)''', r'''\1&#215;\2'''), # dimension sign
+ (r'''\b ?(\((tm|TM)\))''', r'''&#8482;'''), # trademark
+ (r'''\b ?(\([rR]\))''', r'''&#174;'''), # registered
+ (r'''\b ?(\([cC]\))''', r'''&#169;'''), # copyright
+ (r'''([^\s])\[(\d+)\]''', #
+ r'''\1<sup class="footnote"><a href="#fn\2">\2</a></sup>'''),# footnote
+ ]
+
+ # Apply macros.
+ text = re.sub(r'''{([^}]+)}''', self.macros, text)
+
+ # LaTeX style quotes.
+ text = text.replace('\x60\x60', '&#8220;')
+ text = text.replace('\xb4\xb4', '&#8221;')
+
+ # Linkify URL and emails.
+ url = r'''(?=[a-zA-Z0-9./#]) # Must start correctly
+ ((?: # Match the leading part (proto://hostname, or just hostname)
+ (?:ftp|https?|telnet|nntp) # protocol
+ :// # ://
+ (?: # Optional 'username:password@'
+ \w+ # username
+ (?::\w+)? # optional :password
+ @ # @
+ )? #
+ [-\w]+(?:\.\w[-\w]*)+ # hostname (sub.example.com)
+ ) #
+ (?::\d+)? # Optional port number
+ (?: # Rest of the URL, optional
+ /? # Start with '/'
+ [^.!,?;:"'<>()\[\]{}\s\x7F-\xFF]* # Can't start with these
+ (?: #
+ [.!,?;:]+ # One or more of these
+ [^.!,?;:"'<>()\[\]{}\s\x7F-\xFF]+ # Can't finish with these
+ #'" # # or ' or "
+ )* #
+ )?) #
+ '''
+
+ email = r'''(?:mailto:)? # Optional mailto:
+ ([-\+\w]+ # username
+ \@ # at
+ [-\w]+(?:\.\w[-\w]*)+) # hostname
+ '''
+
+ # If there is no html, do a simple search and replace.
+ if not re.search(r'''<.*>''', text):
+ for glyph_search, glyph_replace in glyphs:
+ text = preg_replace(glyph_search, glyph_replace, text)
+
+ # Linkify.
+ text = re.sub(re.compile(url, re.VERBOSE), r'''<a href="\1">\1</a>''', text)
+ text = re.sub(re.compile(email, re.VERBOSE), r'''<a href="mailto:\1">\1</a>''', text)
+
+ else:
+ lines = []
+ # Else split the text into an array at <>.
+ for line in re.split('(<.*?>)', text):
+ if not re.match('<.*?>', line):
+ for glyph_search, glyph_replace in glyphs:
+ line = preg_replace(glyph_search, glyph_replace, line)
+
+ # Linkify.
+ line = re.sub(re.compile(url, re.VERBOSE), r'''<a href="\1">\1</a>''', line)
+ line = re.sub(re.compile(email, re.VERBOSE), r'''<a href="mailto:\1">\1</a>''', line)
+
+ lines.append(line)
+
+ text = ''.join(lines)
+
+ return text
+
+
+ def qtags(self, text):
+ """Quick tags formatting.
+
+ This function does the inline formatting of text, like
+ bold, italic, strong and also itex code.
+
+ ---
+ h1. Quick tags
+
+ Quick tags allow you to format your text, making it bold,
+ emphasized or small, for example. The quick tags operators
+ include:
+
+ dl. ==*strong*==:Translates into @<strong>strong</strong>@.
+ ==_emphasis_==:Translates into @<em>emphasis</em>@.
+ ==**bold**==:Translates into @<b>bold</b>@.
+ ==__italics__==:Translates into @<i>italics</i>@.
+ ==++bigger++==:Translates into @<big>bigger</big>@.
+ ==--smaller--==:Translates into: @<small>smaller</small>@.
+ ==-deleted text-==:Translates into @<del>deleted text</del>@.
+ ==+inserted text+==:Translates into @<ins>inserted text</ins>@.
+ ==^superscript^==:Translates into @<sup>superscript</sup>@.
+ ==~subscript~==:Translates into @<sub>subscript</sub>@.
+ ==%span%==:Translates into @<span>span</span>@.
+ ==@code@==:Translates into @<code>code</code>@.
+
+ Note that within a "==@==...==@==" section, @<@ and @>@ are
+ translated into HTML entities automatically.
+
+ Inline formatting operators accept the following modifiers:
+
+ dl. {style rule}:A CSS(Cascading Style Sheets) style rule.
+ [ll]:A language identifier (for a "lang" attribute).
+ (class) or (#id) or (class#id):For CSS(Cascading Style Sheets) class and id attributes.
+ """
+ # itex2mml.
+ text = re.sub('\$(.*?)\$', lambda m: self.itex(m.group()), text)
+
+ # Add span tags to upper-case words which don't have a description.
+ #text = preg_replace(r'''(^|\s)([A-Z]{3,})\b(?!\()''', r'''\1<span class="caps">\2</span>''', text)
+
+ # Quick tags.
+ qtags = [('**', 'b', {'qf': '(?<!\*)\*\*(?!\*)', 'cls': '\*'}),
+ ('__', 'i', {'qf': '(?<!_)__(?!_)', 'cls': '_'}),
+ ('??', 'cite', {'qf': '\?\?(?!\?)', 'cls': '\?'}),
+ ('-', 'del', {'qf': '(?<!\-)\-(?!\-)', 'cls': '-'}),
+ ('+', 'ins', {'qf': '(?<!\+)\+(?!\+)', 'cls': '\+'}),
+ ('*', 'strong', {'qf': '(?<!\*)\*(?!\*)', 'cls': '\*'}),
+ ('_', 'em', {'qf': '(?<!_)_(?!_)', 'cls': '_'}),
+ ('++', 'big', {'qf': '(?<!\+)\+\+(?!\+)', 'cls': '\+\+'}),
+ ('--', 'small', {'qf': '(?<!\-)\-\-(?!\-)', 'cls': '\-\-'}),
+ ('~', 'sub', {'qf': '(?<!\~)\~(?!(\\\/~))', 'cls': '\~'}),
+ ('@', 'code', {'qf': '(?<!@)@(?!@)', 'cls': '@'}),
+ ('%', 'span', {'qf': '(?<!%)%(?!%)', 'cls': '%'}),
+ ]
+
+ # Superscript.
+ text = re.sub(r'''(?<!\^)\^(?!\^)(.+?)(?<!\^)\^(?!\^)''', r'''<sup>\1</sup>''', text)
+
+ # This is from the perl version of Textile.
+ for qtag, htmltag, redict in qtags:
+ self.res.update(redict)
+ p = re.compile(r'''(?: #
+ ^ # Start of string
+ | #
+ (?<=[\s>'"]) # Whitespace, end of tag, quotes
+ | #
+ (?P<pre>[{[]) # Surrounded by [ or {
+ | #
+ (?<=%(punct)s) # Punctuation
+ ) #
+ %(qf)s # opening tag
+ %(qattr)s # attributes
+ (?P<text>[^%(cls)s\s].*?) # text
+ (?<=\S) # non-whitespace
+ %(qf)s #
+ (?: #
+ $ # End of string
+ | #
+ (?P<post>[\]}]) # Surrounded by ] or }
+ | #
+ (?=%(punct)s{1,2}|\s) # punctuation
+ ) #
+ ''' % self.res, re.VERBOSE)
+
+ def _replace(m):
+ c = m.groupdict('')
+
+ attributes = self.parse_params(c['parameters'])
+ open_tag = self.build_open_tag(htmltag, attributes)
+ close_tag = '</%s>' % htmltag
+
+ # Replace < and > inside <code></code>.
+ if htmltag == 'code':
+ c['text'] = c['text'].replace('<', '&lt;')
+ c['text'] = c['text'].replace('>', '&gt;')
+
+ return open_tag + c['text'] + close_tag
+
+ text = p.sub(_replace, text)
+
+ return text
+
+
+ def images(self, text):
+ """Process images.
+
+ This function process images tags, with or without links. Images
+ can have vertical and/or horizontal alignment, and can be resized
+ unefficiently using width and height tags.
+
+ ---
+ h1. Images
+
+ An image is generated by enclosing the image source in @!@:
+
+ pre. !/path/to/image!
+
+ You may optionally specify an alternative text for the image, which
+ will also be used as its title:
+
+ pre. !image.jpg (Nice picture)!
+
+ Becomes:
+
+ pre. <p><img src="image.jpg" alt="Nice picture" title="Nice picture" /></p>
+
+ If you want to make the image point to a link, simply append a
+ comma and the URL(Universal Republic of Love) to the image:
+
+ pre. !image.jpg!:http://diveintopython.org
+
+ Images can also be resized. These are all equivalent:
+
+ pre. !image.jpg 10x20!
+ !image.jpg 10w 20h!
+ !image.jpg 20h 10w!
+
+ The image @image.jpg@ will be resized to width 10 and height 20.
+
+ Modifiers to the @<img>@ tag go after the opening @!@:
+
+ pre. !(class#id)^image.jpg!
+
+ Allowed modifiers include:
+
+ dl. &lt;:Align the image to the left (causes the image to float if CSS options are enabled).
+ &gt;:Align the image to the right (causes the image to float if CSS options are enabled).
+ - (dash):Aligns the image to the middle.
+ ^:Aligns the image to the top.
+ ~ (tilde):Aligns the image to the bottom.
+ {style rule}:Applies a CSS style rule to the image.
+ (class) or (#id) or (class#id):Applies a CSS class and/or id to the image.
+ ( (one or more):Pads 1em on the left for each '(' character.
+ ) (one or more):Pads 1em on the right for each ')' character.
+
+ Images receive the class "top" when using top alignment, "bottom"
+ for bottom alignment and "middle" for middle alignment.
+ """
+ # Compile the beast.
+ p = re.compile(r'''\! # Opening !
+ %(iattr)s # Image attributes
+ (?P<src>%(url)s) # Image src
+ \s? # Optional whitesapce
+ ( #
+ \( #
+ (?P<alt>.*?) # Optional (alt) attribute
+ \) #
+ )? #
+ \s? # Optional whitespace
+ %(resize)s # Resize parameters
+ \! # Closing !
+ ( # Optional link
+ : # starts with ':'
+ (?P<link> #
+ %(url)s # link HREF
+ ) #
+ )? #
+ ''' % self.res, re.VERBOSE)
+
+ for m in p.finditer(text):
+ c = m.groupdict('')
+
+ # Build the parameters for the <img /> tag.
+ attributes = self.parse_params(c['parameters'], align_type='image')
+ attributes.update(c)
+ if attributes['alt']:
+ attributes['title'] = attributes['alt']
+
+ # Append height and width.
+ attributes['width'] = m.groups()[5] or m.groups()[7] or m.groups()[10]
+ attributes['height'] = m.groups()[6] or m.groups()[8] or m.groups()[9]
+
+ # Create the image tag.
+ tag = self.image(attributes)
+
+ text = text.replace(m.group(), tag)
+
+ return text
+
+
+ def image(self, attributes):
+ """Process each image.
+
+ This method builds the <img> tag for each image in the text. It's
+ separated from the 'images' method so it can be easily overriden when
+ subclassing Textiler. Useful if you want to download and/or process
+ the images, for example.
+ """
+ link = attributes['link']
+ del attributes['link']
+ del attributes['parameters']
+
+ # Build the tag.
+ tag = self.build_open_tag('img', attributes, single=1)
+
+ if link:
+ href = preg_replace('&(?!(#|amp))', '&amp;', link)
+ tag = '<a href="%s">%s</a>' % (href, tag)
+
+ return tag
+
+
+ def links(self, text):
+ """Process links.
+
+ This function is responsible for processing links. It has
+ some nice shortcuts to Google, Amazon and IMDB queries.
+
+ ---
+ h1. Links
+
+ A links is done the following way:
+
+ pre. "This is the text link":http://example.com
+
+ The result from this markup is:
+
+ pre. <p><a href="http://example.com">This is the text link</a></p>
+
+ You can add an optional @title@ attribute:
+
+ pre. "This is the text link(This is the title)":http://example.com
+
+ The link can be customised as well:
+
+ pre. "(nospam)E-mail me please":mailto:someone@example.com
+
+ You can use either single or double quotes. They must be enclosed in
+ whitespace, punctuation or brackets:
+
+ pre. You["gotta":http://example.com]seethis!
+
+ If you are going to reference the same link a couple of times, you
+ can define a lookup list anywhere on your document:
+
+ pre. [python]http://www.python.org
+
+ Links to the Python website can then be defined the following way:
+
+ pre. "Check this":python
+
+ There are also shortcuts for Amazon, IMDB(Internet Movie DataBase) and
+ Google queries:
+
+ pre. "Has anyone seen this guy?":imdb:Stephen+Fry
+ "Really nice book":amazon:Goedel+Escher+Bach
+ "PyBlosxom":google
+ ["Using Textile and Blosxom with Python":google:python blosxom textile]
+
+ Becomes:
+
+ pre. <a href="http://www.imdb.com/Find?for=Stephen+Fry">Has anyone seen this guy?</a>
+ <a href="http://www.amazon.com/exec/obidos/external-search?index=blended&amp;keyword=Goedel+Escher+Bach">Really nice book</a>
+ <a href="http://www.google.com/search?q=PyBlosxom">PyBlosxom</a>
+ <a href="http://www.google.com/search?q=python+blosxom+textile">Using Textile and Blosxom with Python</a>
+ """
+ linkres = [r'''\[ # [
+ (?P<quote>"|') # Opening quotes
+ %(lattr)s # Link attributes
+ (?P<text>[^"]+?) # Link text
+ \s? # Optional whitespace
+ (?:\((?P<title>[^\)]+?)\))? # Optional (title)
+ (?P=quote) # Closing quotes
+ : # :
+ (?P<href>[^\]]+) # HREF
+ \] # ]
+ ''' % self.res,
+ r'''(?P<quote>"|') # Opening quotes
+ %(lattr)s # Link attributes
+ (?P<text>[^"]+?) # Link text
+ \s? # Optional whitespace
+ (?:\((?P<title>[^\)]+?)\))? # Optional (title)
+ (?P=quote) # Closing quotes
+ : # :
+ (?P<href>%(url)s) # HREF
+ ''' % self.res]
+
+ for linkre in linkres:
+ p = re.compile(linkre, re.VERBOSE)
+ for m in p.finditer(text):
+ c = m.groupdict('')
+
+ attributes = self.parse_params(c['parameters'])
+ attributes['title'] = c['title'].replace('"', '&quot;')
+
+ # Search lookup list.
+ link = self._links.get(c['href'], None) or c['href']
+
+ # Hyperlinks for Amazon, IMDB and Google searches.
+ parts = link.split(':', 1)
+ proto = parts[0]
+ if len(parts) == 2:
+ query = parts[1]
+ else:
+ query = c['text']
+
+ query = query.replace(' ', '+')
+
+ # Look for smart search.
+ if self.searches.has_key(proto):
+ link = self.searches[proto] % query
+
+ # Fix URL.
+ attributes['href'] = preg_replace('&(?!(#|amp))', '&amp;', link)
+
+ open_tag = self.build_open_tag('a', attributes)
+ close_tag = '</a>'
+
+ repl = open_tag + c['text'] + close_tag
+
+ text = text.replace(m.group(), repl)
+
+ return text
+
+
+ def format(self, text):
+ """Text formatting.
+
+ This function basically defines the order on which the
+ formatting is applied.
+ """
+ text = self.qtags(text)
+ text = self.images(text)
+ text = self.links(text)
+ text = self.acronym(text)
+ text = self.glyphs(text)
+
+ return text
+
+
+ def inline(self, text):
+ """Inline formatting.
+
+ This function calls the formatting on the inline text,
+ taking care to avoid the escaped parts.
+
+ ---
+ h1. Inline
+
+ Inline formatting is applied within a block of text.
+ """
+ if not re.search(r'''==(.*?)==''', text):
+ text = self.format(text)
+
+ else:
+ lines = []
+ # Else split the text into an array at <>.
+ for line in re.split('(==.*?==)', text):
+ if not re.match('==.*?==', line):
+ line = self.format(line)
+ else:
+ line = line[2:-2]
+
+ lines.append(line)
+
+ text = ''.join(lines)
+
+ return text
+
+
+def textile(text, **args):
+ """This is Textile.
+
+ Generates XHTML from a simple markup developed by Dean Allen.
+
+ This function should be called like this:
+
+ textile(text, head_offset=0, validate=0, sanitize=0,
+ encoding='latin-1', output='ASCII')
+ """
+ return Textiler(text).process(**args)
+
+
+if __name__ == '__main__':
+ print textile('tell me about textile.', head_offset=1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.pyc
new file mode 100644
index 0000000000..baba6254d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textile.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.py
new file mode 100755
index 0000000000..edb2a5652d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.py
@@ -0,0 +1,143 @@
+#!/usr/bin/env python
+
+import sys, string, re, optparse
+import config, filetool, comment
+
+
+
+
+def convertMac2Unix(content):
+ return content.replace("\r", "\n")
+
+def convertMac2Dos(content):
+ return content.replace("\r", "\r\n")
+
+def convertDos2Unix(content):
+ return content.replace("\r\n", "\n")
+
+def convertDos2Mac(content):
+ return content.replace("\r\n", "\r")
+
+def convertUnix2Dos(content):
+ return content.replace("\n", "\r\n")
+
+def convertUnix2Mac(content):
+ return content.replace("\n", "\r")
+
+
+
+
+def any2Unix(content):
+ # DOS must be first, because it is a combination of Unix & Mac
+ return convertMac2Unix(convertDos2Unix(content))
+
+def any2Dos(content):
+ # to protect old DOS breaks first, we need to convert to
+ # a line ending with single character first e.g. Unix
+ return convertUnix2Dos(any2Unix(content))
+
+def any2Mac(content):
+ # to protect old DOS breaks first, we need to convert to
+ # a line ending with single character first e.g. Unix
+ return convertUnix2Mac(any2Unix(content))
+
+
+
+def getLineEndingName(content):
+ if "\r\n" in content:
+ return "dos"
+
+ if "\r" in content:
+ return "mac"
+
+ # defaults to unix
+ return "unix"
+
+def getLineEndingSequence(content):
+ if "\r\n" in content:
+ return "\r\n"
+
+ if "\r" in content:
+ return "\r"
+
+ # defaults to unix
+ return "\n"
+
+
+
+def tab2Space(content, spaces=2):
+ return content.replace("\t", " " * spaces)
+
+def spaces2Tab(content, spaces=2):
+ return content.replace(" " * spaces, "\t")
+
+
+
+def removeTrailingSpaces(content):
+ ending = getLineEndingSequence(content)
+ lines = content.split(ending)
+ length = len(lines)
+ pos = 0
+
+ while pos < length:
+ lines[pos] = lines[pos].rstrip()
+ pos += 1
+
+ return ending.join(lines)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def main():
+ allowed = [ "any2Dos", "any2Mac", "any2Unix", "convertDos2Mac", "convertDos2Unix", "convertMac2Dos", "convertMac2Unix", "convertUnix2Dos", "convertUnix2Mac", "spaces2Tab", "tab2Space" ]
+
+ parser = optparse.OptionParser()
+
+ parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=False, help="Quiet output mode.")
+ parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="Verbose output mode.")
+ parser.add_option("-c", "--command", dest="command", default="normalize", help="Normalize a file")
+ parser.add_option("--encoding", dest="encoding", default="utf-8", metavar="ENCODING", help="Defines the encoding expected for input files.")
+
+ (options, args) = parser.parse_args()
+
+ if not options.command in allowed:
+ print "Unallowed command: %s" % options.command
+ sys.exit(1)
+
+ if len(args) == 0:
+ print "Needs one or more arguments (files) to modify!"
+ sys.exit(1)
+
+ for fileName in args:
+ if options.verbose:
+ print " * Running %s on: %s" % (options.command, fileName)
+
+ origFileContent = filetool.read(fileName, options.encoding)
+ patchedFileContent = eval(options.command + "(origFileContent)")
+
+ if patchedFileContent != origFileContent:
+ filetool.save(fileName, patchedFileContent, options.encoding)
+
+
+
+
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
+ \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.pyc
new file mode 100644
index 0000000000..7df9a3c20a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/textutil.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.py
new file mode 100755
index 0000000000..2f8e40436b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.py
@@ -0,0 +1,349 @@
+#!/usr/bin/env python
+
+import sys, string, re, optparse
+import config, filetool, comment
+
+R_WHITESPACE = re.compile(r"(\s+)")
+R_NONWHITESPACE = re.compile("\S+")
+R_NUMBER = re.compile("^[0-9]+")
+R_NEWLINE = re.compile(r"(\n)")
+
+# Ideas from: http://www.regular-expressions.info/examplesprogrammer.html
+# Multicomment RegExp inspired by: http://ostermiller.org/findcomment.html
+
+# builds regexp strings
+S_STRING_A = "'[^'\\\n]*(\\.|\n[^'\\\n]*)*'"
+S_STRING_B = '"[^"\\\n]*(\\.|\n[^"\\\n]*)*"'
+
+S_FLOAT = "([0-9]+\.[0-9]+)"
+
+S_OPERATORS_2 = r"(==)|(!=)|(\+\+)|(--)|(-=)|(\+=)|(\*=)|(/=)|(%=)|(&&)|(\|\|)|(\>=)|(\<=)|(>>)|(<<)|(\^\|)|(\|=)|(\^=)|(&=)|(::)|(\.\.)"
+S_OPERATORS_3 = r"(===)|(!==)|(\<\<=)|(\>\>=)|(\>\>\>)"
+S_OPERATORS_4 = r"(\>\>\>=)"
+S_OPERATORS = "(" + S_OPERATORS_4 + "|" + S_OPERATORS_3 + "|" + S_OPERATORS_2 + ")"
+
+S_REGEXP = "(\/[^\t\n\r\f\v\/]+?\/[mgi]*)"
+S_REGEXP_A = "\.(match|search|split)\s*\(\s*\(*\s*" + S_REGEXP + "\s*\)*\s*\)"
+S_REGEXP_B = "\.(replace)\s*\(\s*\(*\s*" + S_REGEXP + "\s*\)*\s*?,?"
+S_REGEXP_C = "\s*\(*\s*" + S_REGEXP + "\)*\.(test|exec)\s*\(\s*"
+S_REGEXP_D = "(:|=|\?)\s*\(*\s*" + S_REGEXP + "\s*\)*"
+S_REGEXP_ALL = S_REGEXP_A + "|" + S_REGEXP_B + "|" + S_REGEXP_C + "|" + S_REGEXP_D
+
+S_ALL = "(" + comment.S_BLOCK_COMMENT + "|" + comment.S_INLINE_COMMENT + "|" + S_STRING_A + "|" + S_STRING_B + "|" + S_REGEXP_ALL + "|" + S_FLOAT + "|" + S_OPERATORS + ")"
+
+# compile regexp strings
+R_STRING_A = re.compile("^" + S_STRING_A + "$")
+R_STRING_B = re.compile("^" + S_STRING_B + "$")
+R_FLOAT = re.compile("^" + S_FLOAT + "$")
+R_OPERATORS = re.compile(S_OPERATORS)
+R_REGEXP = re.compile(S_REGEXP)
+R_REGEXP_A = re.compile(S_REGEXP_A)
+R_REGEXP_B = re.compile(S_REGEXP_B)
+R_REGEXP_C = re.compile(S_REGEXP_C)
+R_REGEXP_D = re.compile(S_REGEXP_D)
+R_ALL = re.compile(S_ALL)
+
+
+
+
+parseLine = 1
+parseColumn = 1
+parseUniqueId = ""
+
+
+
+def protectEscape(s):
+ return s.replace("\\\\", "__$ESCAPE0$__").replace("\\\"", "__$ESCAPE1$__").replace("\\\'", "__$ESCAPE2__").replace("\/", "__$ESCAPE3__").replace("\!", "__$ESCAPE4__")
+
+
+
+def recoverEscape(s):
+ return s.replace("__$ESCAPE0$__", "\\\\").replace("__$ESCAPE1$__", "\\\"").replace("__$ESCAPE2__", "\\'").replace("__$ESCAPE3__", "\/").replace("__$ESCAPE4__", "\!")
+
+
+
+def parseElement(element):
+ global parseUniqueId
+ global parseLine
+ global parseColumn
+
+ if config.JSPROTECTED.has_key(element):
+ # print "PROTECTED: %s" % PROTECTED[content]
+ obj = { "type" : "protected", "detail" : config.JSPROTECTED[element], "source" : element, "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId }
+
+ elif element in config.JSBUILTIN:
+ # print "BUILTIN: %s" % content
+ obj = { "type" : "builtin", "detail" : "", "source" : element, "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId }
+
+ elif R_NUMBER.search(element):
+ # print "NUMBER: %s" % content
+ obj = { "type" : "number", "detail" : "int", "source" : element, "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId }
+
+ elif element.startswith("_"):
+ # print "PRIVATE NAME: %s" % content
+ obj = { "type" : "name", "detail" : "private", "source" : element, "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId }
+
+ elif len(element) > 0:
+ # print "PUBLIC NAME: %s" % content
+ obj = { "type" : "name", "detail" : "public", "source" : element, "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId }
+
+ parseColumn += len(element)
+
+ return obj
+
+
+def parsePart(part):
+ global parseUniqueId
+ global parseLine
+ global parseColumn
+
+ tokens = []
+ element = ""
+
+ for line in R_NEWLINE.split(part):
+ if line == "\n":
+ tokens.append({ "type" : "eol", "source" : "", "detail" : "", "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId })
+ parseColumn = 1
+ parseLine += 1
+
+ else:
+ for item in R_WHITESPACE.split(line):
+ if item == "":
+ continue
+
+ if not R_NONWHITESPACE.search(item):
+ parseColumn += len(item)
+ continue
+
+ # print "ITEM: '%s'" % item
+
+ for char in item:
+ # work on single character tokens, otherwise concat to a bigger element
+ if config.JSTOKENS.has_key(char):
+ # convert existing element
+ if element != "":
+ if R_NONWHITESPACE.search(element):
+ tokens.append(parseElement(element))
+
+ element = ""
+
+ # add character to token list
+ tokens.append({ "type" : "token", "detail" : config.JSTOKENS[char], "source" : char, "line" : parseLine, "column" : parseColumn, "id" : parseUniqueId })
+ parseColumn += 1
+
+ else:
+ element += char
+
+ # convert remaining stuff to tokens
+ if element != "":
+ if R_NONWHITESPACE.search(element):
+ tokens.append(parseElement(element))
+
+ element = ""
+
+ return tokens
+
+
+
+def parseFragmentLead(content, fragment, tokens):
+ pos = content.find(fragment)
+
+ if pos > 0:
+ tokens.extend(parsePart(recoverEscape(content[0:pos])))
+
+ return content[pos+len(fragment):]
+
+
+
+def hasLeadingContent(tokens):
+ pos = len(tokens) - 1
+ while pos > 0:
+ if tokens[pos]["type"] == "eol":
+ break
+
+ else:
+ return True
+
+ return False
+
+
+
+
+
+def parseStream(content, uniqueId=""):
+ # make global variables available
+ global parseLine
+ global parseColumn
+ global parseUniqueId
+
+ # reset global stuff
+ parseColumn = 1
+ parseLine = 1
+ parseUniqueId = uniqueId
+
+ # prepare storage
+ tokens = []
+ content = protectEscape(content)
+
+ # print " * searching for patterns..."
+ all = R_ALL.findall(content)
+
+ # print " * structuring..."
+ for item in all:
+ fragment = item[0]
+
+ # print "Found: '%s'" % fragment
+
+ if comment.R_BLOCK_COMMENT.match(fragment):
+ source = recoverEscape(fragment)
+ format = comment.getFormat(source)
+ multiline = comment.isMultiLine(source)
+
+ # print "Type:MultiComment"
+ content = parseFragmentLead(content, fragment, tokens)
+
+ atBegin = not hasLeadingContent(tokens)
+ if re.compile("^\s*\n").search(content):
+ atEnd = True
+ else:
+ atEnd = False
+
+ # print "Begin: %s, End: %s" % (atBegin, atEnd)
+
+ # Fixing source content
+ if atBegin:
+ source = comment.outdent(source, parseColumn - 1)
+
+ source = comment.correct(source)
+
+ connection = "before"
+
+ if atEnd and not atBegin:
+ connection = "after"
+ else:
+ connection = "before"
+
+ tokens.append({ "type" : "comment", "detail" : format, "multiline" : multiline, "connection" : connection, "source" : source, "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn, "begin" : atBegin, "end" : atEnd })
+ parseLine += len(fragment.split("\n")) - 1
+
+ elif comment.R_INLINE_COMMENT.match(fragment):
+ # print "Type:SingleComment"
+ source = recoverEscape(fragment)
+ content = parseFragmentLead(content, fragment, tokens)
+
+ atBegin = hasLeadingContent(tokens)
+ atEnd = True
+
+ if atBegin:
+ connection = "after"
+ else:
+ connection = "before"
+
+ source = comment.correct(source)
+
+ tokens.append({ "type" : "comment", "detail" : "inline", "multiline" : False, "connection" : connection, "source" : source, "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn, "begin" : atBegin, "end" : atEnd })
+
+ elif R_STRING_A.match(fragment):
+ # print "Type:StringA: %s" % fragment
+ content = parseFragmentLead(content, fragment, tokens)
+ tokens.append({ "type" : "string", "detail" : "singlequotes", "source" : recoverEscape(fragment)[1:-1].replace("\\\n",""), "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn })
+
+ elif R_STRING_B.match(fragment):
+ # print "Type:StringB: %s" % fragment
+ content = parseFragmentLead(content, fragment, tokens)
+ tokens.append({ "type" : "string", "detail" : "doublequotes", "source" : recoverEscape(fragment)[1:-1].replace("\\\n",""), "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn })
+
+ elif R_FLOAT.match(fragment):
+ # print "Type:Float: %s" % fragment
+ content = parseFragmentLead(content, fragment, tokens)
+ tokens.append({ "type" : "number", "detail" : "float", "source" : fragment, "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn })
+
+ elif R_OPERATORS.match(fragment):
+ # print "Type:Operator: %s" % fragment
+ content = parseFragmentLead(content, fragment, tokens)
+ tokens.append({ "type" : "token", "detail" : config.JSTOKENS[fragment], "source" : fragment, "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn })
+
+ else:
+ fragresult = R_REGEXP.search(fragment)
+
+ if fragresult:
+ # print "Type:RegExp: %s" % fragresult.group(0)
+
+ if R_REGEXP_A.match(fragment) or R_REGEXP_B.match(fragment) or R_REGEXP_C.match(fragment) or R_REGEXP_D.match(fragment):
+ content = parseFragmentLead(content, fragresult.group(0), tokens)
+ tokens.append({ "type" : "regexp", "detail" : "", "source" : recoverEscape(fragresult.group(0)), "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn })
+
+ else:
+ print "Bad regular expression: %s" % fragresult.group(0)
+
+ else:
+ print "Type:None!"
+
+ tokens.extend(parsePart(recoverEscape(content)))
+ tokens.append({ "type" : "eof", "source" : "", "detail" : "", "id" : parseUniqueId, "line" : parseLine, "column" : parseColumn })
+
+ return tokens
+
+
+
+def parseFile(fileName, uniqueId="", encoding="utf-8"):
+ return parseStream(filetool.read(fileName, encoding), uniqueId)
+
+
+
+
+def convertTokensToString(tokens):
+ tokenizedString = ""
+
+ for token in tokens:
+ tokenizedString += "%s%s" % (token, "\n")
+
+ return tokenizedString
+
+
+
+
+
+def main():
+ parser = optparse.OptionParser()
+
+ parser.add_option("-w", "--write", action="store_true", dest="write", default=False, help="Writes file to incoming fileName + EXTENSION.")
+ parser.add_option("-e", "--extension", dest="extension", metavar="EXTENSION", help="The EXTENSION to use", default=".tokenized")
+ parser.add_option("--encoding", dest="encoding", default="utf-8", metavar="ENCODING", help="Defines the encoding expected for input files.")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) == 0:
+ print "Needs one or more arguments (files) to tokenize!"
+ sys.exit(1)
+
+ for fileName in args:
+ if options.write:
+ print "Compiling %s => %s%s" % (fileName, fileName, options.extension)
+ else:
+ print "Compiling %s => stdout" % fileName
+
+ tokenString = convertTokensToString(parseFile(fileName, "", options.encoding))
+
+ if options.write:
+ filetool.save(fileName + options.extension, tokenString, options.encoding)
+
+ else:
+ try:
+ print tokenString
+
+ except UnicodeEncodeError:
+ print " * Could not encode result to ascii. Use '-w' instead."
+ sys.exit(1)
+
+
+
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.pyc
new file mode 100644
index 0000000000..b4b81bd063
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tokenizer.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.py
new file mode 100755
index 0000000000..c6147a18b3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.py
@@ -0,0 +1,563 @@
+#!/usr/bin/env python
+
+class NodeAccessException (Exception):
+ def __init__ (self, msg, node):
+ Exception.__init__(self, msg)
+ self.node = node
+
+
+class Node:
+ def __init__ (self, type):
+ self.type = type
+
+
+
+
+
+ def hasAttributes(self):
+ return hasattr(self, "attributes")
+
+ def set(self, key, value):
+ """Sets an attribute"""
+ if not isinstance(value, (basestring, int, long, float, complex, bool)):
+ raise NodeAccessException("'value' is no string or number: " + str(value), self)
+ if not self.hasAttributes():
+ self.attributes = {}
+ self.attributes[key] = value
+ return self
+
+ def get(self, key, mandatory = True):
+ value = None
+ if hasattr(self, "attributes") and key in self.attributes:
+ value = self.attributes[key]
+
+ if value != None:
+ return value
+ elif mandatory:
+ raise NodeAccessException("Node " + self.type + " has no attribute " + key, self)
+
+ def remove(self, key):
+ del self.attributes[key]
+ if len(self.attributes) == 0:
+ del self.attributes
+
+
+
+
+
+
+
+ def hasParent(self):
+ return hasattr(self, "parent") and self.parent != None
+
+ def hasChildren(self, ignoreComments = False):
+ if not ignoreComments:
+ return hasattr(self, "children") and len(self.children) > 0
+ else:
+ if not hasattr(self, "children"):
+ return False
+
+ for child in self.children:
+ if child.type != "comment" and child.type != "commentsBefore" and child.type != "commentsAfter":
+ return True
+
+ def addChild(self, childNode, index = None):
+ if childNode:
+ if not self.hasChildren():
+ self.children = []
+
+ if childNode.hasParent():
+ childNode.parent.removeChild(childNode)
+
+ if index != None:
+ self.children.insert(index, childNode)
+ else:
+ self.children.append(childNode)
+ childNode.parent = self
+ return self
+
+ def removeChild(self, childNode):
+ if self.hasChildren():
+ self.children.remove(childNode)
+ childNode.parent = None
+ if len(self.children) == 0:
+ del self.children
+
+ def replaceChild(self, oldChild, newChild):
+ if self.hasChildren():
+ if newChild.hasParent():
+ newChild.parent.removeChild(newChild)
+
+ self.children.insert(self.children.index(oldChild), newChild)
+ newChild.parent = self
+ self.children.remove(oldChild)
+
+
+
+
+
+
+ def getChild(self, type, mandatory = True):
+ if self.hasChildren():
+ for child in self.children:
+ if child.type == type:
+ return child
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no child with type " + type, self)
+
+ def hasChildRecursive(self, type):
+ if isinstance(type, basestring):
+ if self.type == type:
+ return True
+ elif isinstance(type, list):
+ if self.type in type:
+ return True
+
+ if self.hasChildren():
+ for child in self.children:
+ if child.hasChildRecursive(type):
+ return True
+
+ return False
+
+ def hasChild(self, type):
+ if self.hasChildren():
+ for child in self.children:
+ if isinstance(type, basestring):
+ if child.type == type:
+ return True
+ elif isinstance(type, list):
+ if child.type in type:
+ return True
+
+ return False
+
+ def getChildrenLength(self, ignoreComments=False):
+ if self.hasChildren():
+ if ignoreComments:
+ counter = 0
+ for child in self.children:
+ if not child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ counter += 1
+ return counter
+
+ else:
+ return len(self.children)
+
+ return 0
+
+
+
+ def makeComplex(self):
+ makeComplex = self.get("makeComplex", False)
+
+ if makeComplex != None:
+ return makeComplex
+
+ else:
+ makeComplex = False
+
+
+
+ if self.type == "comment":
+ makeComplex = True
+
+ elif self.type == "block":
+ if self.hasChildren():
+ counter = 0
+ for child in self.children:
+ if child.type != "commentsAfter":
+ counter += 1
+ if counter > 1:
+ makeComplex = True
+
+ elif self.type == "loop":
+ if self.get("loopType") == "IF" and self.hasParent() and self.parent.type == "elseStatement":
+ pass
+ else:
+ makeComplex = True
+
+ elif self.type == "function":
+ makeComplex = self.getChild("body").hasChild("block") and self.getChild("body").getChild("block").getChildrenLength() > 0
+
+ elif self.type in [ "loop", "switch" ]:
+ makeComplex = True
+
+ elif self.hasChild("commentsBefore"):
+ makeComplex = True
+
+
+
+ # Final test: Ask the children (slower)
+ if not makeComplex and not self.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ makeComplex = self.isComplex()
+
+
+ self.set("makeComplex", makeComplex)
+
+ # print "makeComplex: %s = %s" % (self.type, makeComplex)
+
+ return makeComplex
+
+
+
+ def isComplex(self):
+ isComplex = self.get("isComplex", False)
+
+ if isComplex != None:
+ return isComplex
+
+ else:
+ isComplex = False
+
+
+
+ if not self.hasChildren():
+ isComplex = False
+
+ elif self.type == "block":
+ counter = 0
+ if self.hasChildren():
+ for child in self.children:
+ if child.type != "commentsAfter":
+ counter += 1
+
+ if child.hasChild("commentsBefore"):
+ counter += 1
+
+ if counter > 1:
+ break
+
+ if counter > 1:
+ isComplex = True
+
+ else:
+ if self.getChildrenLength() == 0:
+ isComplex = False
+
+ # in else, try to find the mode of the previous if first
+ elif self.hasParent() and self.parent.type == "elseStatement":
+ isComplex = self.parent.parent.getChild("statement").hasComplexBlock()
+
+ # in if, try to find the mode of the parent if (if existent)
+ elif self.hasParent() and self.parent.type == "statement" and self.parent.parent.type == "loop" and self.parent.parent.get("loopType") == "IF":
+ if self.parent.parent.hasParent() and self.parent.parent.parent.hasParent():
+ if self.parent.parent.parent.parent.type == "loop":
+ isComplex = self.parent.parent.parent.parent.getChild("statement").hasComplexBlock()
+
+ # in catch/finally, try to find the mode of the try statement
+ elif self.hasParent() and self.parent.hasParent() and self.parent.parent.type in [ "catch", "finally" ]:
+ isComplex = self.parent.parent.parent.getChild("statement").hasComplexBlock()
+
+ elif self.type == "elseStatement":
+ if self.hasComplexBlock():
+ isComplex = True
+ elif self.hasChild("loop") and self.getChild("loop").getChild("statement").hasComplexBlock():
+ isComplex = True
+
+ elif self.type == "array" :
+ if self.getChildrenLength(True) > 5:
+ isComplex = True
+
+ elif self.type == "map" :
+ ml = self.getChildrenLength(True)
+ if ml > 1:
+ isComplex = True
+
+ # Final test: Ask the children (slower)
+ if not (self.type == "elseStatement" and self.hasChild("loop")):
+ if not isComplex and self.hasComplexChildren():
+ isComplex = True
+
+ # print self.type + " :: %s" % isComplex
+ self.set("isComplex", isComplex)
+
+ # print "isComplex: %s = %s" % (self.type, isComplex)
+
+ return isComplex
+
+
+
+ def hasComplexChildren(self):
+ if self.hasChildren():
+ for child in self.children:
+ if child.makeComplex():
+ return True
+
+ return False
+
+
+ def hasComplexBlock(self):
+ if self.hasChild("block"):
+ return self.getChild("block").isComplex()
+
+ return False
+
+
+ def hasBlockChildren(self):
+ if self.hasChild("block"):
+ return self.getChild("block").hasChildren()
+
+ return False
+
+
+ def getChildPosition(self, searchedChild, ignoreComments = False):
+ if self.hasChildren() and searchedChild in self.children:
+ if ignoreComments:
+ counter = 0
+ for child in self.children:
+ if child == searchedChild:
+ return counter
+
+ if not child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ counter += 1
+
+ else:
+ return self.children.index(searchedChild)
+
+ return -1
+
+
+
+ def getChildByPosition(self, pos, mandatory = True, ignoreComments = False):
+ if self.hasChildren():
+ i = 0
+ for child in self.children:
+ if ignoreComments and child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ continue
+
+ if i == pos:
+ return child
+
+ i += 1
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no child as position %s" % pos, self)
+
+
+
+ def getChildByAttribute(self, key, value, mandatory = True):
+ if self.hasChildren():
+ for child in self.children:
+ if child.get(key) == value:
+ return child
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no child with attribute " + key + " = " + value, self)
+
+ def getChildByTypeAndAttribute(self, type, key, value, mandatory = True):
+ if self.hasChildren():
+ for child in self.children:
+ if child.type == type and child.get(key) == value:
+ return child
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no child with type " + type + " and attribute " + key + " = " + value, self)
+
+ def getFirstChild(self, mandatory = True, ignoreComments = False):
+ if self.hasChildren():
+ for child in self.children:
+ if ignoreComments and child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ continue
+
+ return child
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no children", self)
+
+ def getLastChild(self, mandatory = True, ignoreComments = False):
+ if self.hasChildren():
+ if not ignoreComments:
+ return self.children[-1]
+ else:
+ pos = len(self.children) - 1
+ while pos >= 0:
+ child = self.children[pos]
+
+ if ignoreComments and child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ pos -= 1
+ continue
+
+ return child
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no children", self)
+
+ def getPreviousSibling(self, mandatory = True, ignoreComments = False):
+ if self.hasParent():
+ prev = None
+ for child in self.parent.children:
+
+ if ignoreComments and child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ continue
+
+ if child == self:
+ if prev != None:
+ return prev
+ else:
+ break
+
+ prev = child
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no previous sibling", self)
+
+ def getFollowingSibling(self, mandatory = True, ignoreComments = False):
+ if self.hasParent():
+ prev = None
+
+ for child in self.parent.children:
+ if ignoreComments and child.type in [ "comment", "commentsBefore", "commentsAfter" ]:
+ continue
+
+ if prev != None:
+ return child
+
+ if child == self:
+ prev = child
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no following sibling", self)
+
+ def isFirstChild(self, ignoreComments = False):
+ if not self.hasParent():
+ return False
+
+ return self.parent.getFirstChild(False, ignoreComments) == self
+
+ def isLastChild(self, ignoreComments = False):
+ if not self.hasParent():
+ return False
+
+ return self.parent.getLastChild(False, ignoreComments) == self
+
+ def addListChild(self, listName, childNode):
+ listNode = self.getChild(listName, False)
+ if not listNode:
+ listNode = Node(listName)
+ self.addChild(listNode)
+ listNode.addChild(childNode)
+
+ def getListChildByAttribute(self, listName, key, value, mandatory = True):
+ listNode = self.getChild(listName, False)
+ if listNode:
+ return listNode.getChildByAttribute(key, value, mandatory)
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no child " + listName, self)
+
+ def getFirstListChild(self, listName, mandatory = True):
+ listNode = self.getChild(listName, False)
+ if listNode:
+ return listNode.getFirstChild(mandatory)
+
+ if mandatory:
+ raise NodeAccessException("Node " + self.type + " has no child " + listName, self)
+
+ def getAllChildrenOfType(self, type):
+ return self._getAllChildrenOfType(type, [])
+
+ def _getAllChildrenOfType(self, type, found=[]):
+ if self.hasChildren():
+ for child in self.children:
+ if child.type == type:
+ found.append(child)
+
+ child._getAllChildrenOfType(type, found)
+
+ return found
+
+
+
+
+def nodeToXmlString(node, prefix = "", childPrefix = " ", newLine="\n"):
+ hasText = False
+ asString = prefix + "<" + node.type
+ if node.hasAttributes():
+ for key in node.attributes:
+ if key == "text":
+ hasText = True
+ else:
+ asString += " " + key + "=\"" + escapeXmlChars(node.attributes[key], True) + "\""
+
+ if not node.hasChildren() and not hasText:
+ asString += "/>" + newLine
+ else:
+ asString += ">"
+
+ if hasText:
+ if node.hasChildren():
+ asString += newLine + prefix + childPrefix
+ else:
+ asString += newLine + prefix + childPrefix
+
+ asString += "<text>" + escapeXmlChars(node.attributes["text"], False) + "</text>" + newLine
+
+ if node.hasChildren():
+ asString += newLine
+ for child in node.children:
+ asString += nodeToXmlString(child, prefix + childPrefix, childPrefix, newLine)
+
+ asString += prefix + "</" + node.type + ">" + newLine
+
+ return asString
+
+
+
+def nodeToJsonString(node, prefix = "", childPrefix = " ", newLine="\n"):
+ asString = prefix + '{type:"' + escapeJsonChars(node.type) + '"'
+
+ if node.hasAttributes():
+ asString += ',attributes:{'
+ firstAttribute = True
+ for key in node.attributes:
+ if not firstAttribute:
+ asString += ','
+ asString += '"' + key + '":"' + escapeJsonChars(node.attributes[key]) + '"'
+ firstAttribute = False
+ asString += '}'
+
+ if node.hasChildren():
+ asString += ',children:[' + newLine
+
+ firstChild = True
+ prefix = prefix + childPrefix
+ for child in node.children:
+ asString += nodeToJsonString(child, prefix, childPrefix, newLine) + ',' + newLine
+ firstChild = False
+
+ # NOTE We remove the ',\n' of the last child
+ if newLine == "":
+ asString = asString[:-1] + prefix + ']'
+ else:
+ asString = asString[:-2] + newLine + prefix + ']'
+
+ asString += '}'
+
+ return asString
+
+
+
+def escapeXmlChars(text, inAttribute):
+ if isinstance(text, basestring):
+ text = text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
+ if inAttribute:
+ text = text.replace("\"", "&quot;")
+ elif isinstance(text, bool):
+ text = str(text).lower()
+ else:
+ text = str(text)
+
+ return text
+
+
+
+def escapeJsonChars(text):
+ if isinstance(text, basestring):
+ text = text.replace('"', '\\"').replace('\n', '\\n').replace('\r', '\\r')
+ elif isinstance(text, bool):
+ text = str(text).lower()
+ else:
+ text = str(text)
+
+ return text
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.pyc
new file mode 100644
index 0000000000..888c97c5e2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/tree.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.py
new file mode 100755
index 0000000000..d473520e80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.py
@@ -0,0 +1,1021 @@
+#!/usr/bin/env python
+
+import sys, optparse
+import tokenizer, tree, filetool, variableoptimizer
+
+
+SINGLE_LEFT_OPERATORS = [ "NOT", "BITNOT", "ADD", "SUB", "INC", "DEC" ]
+
+SINGLE_RIGHT_OPERATORS = [ "INC", "DEC" ]
+
+MULTI_TOKEN_OPERATORS = [ "HOOK", "ADD", "SUB", "MUL", "DIV", "MOD", \
+ "LT", "LE", "GT", "GE", "EQ", "NE", "SHEQ", "SHNE", \
+ "AND", "OR", "BITOR", "BITXOR", "BITAND", "POWEROF", \
+ "LSH", "RSH", "URSH" ]
+
+MULTI_PROTECTED_OPERATORS = [ "INSTANCEOF", "IN" ]
+
+ASSIGN_OPERATORS = [ "ASSIGN", "ASSIGN_ADD", "ASSIGN_SUB", "ASSIGN_MUL", \
+ "ASSIGN_DIV", "ASSIGN_MOD", "ASSIGN_BITOR", "ASSIGN_BITXOR", "ASSIGN_BITAND", \
+ "ASSIGN_LSH", "ASSIGN_RSH", "ASSIGN_URSH" ]
+
+LOOP_KEYWORDS = [ "WHILE", "IF", "FOR", "WITH" ]
+
+
+class TokenStream:
+ def __init__ (self, tokens):
+ self.tokens = tokens
+ self.commentsBefore = None
+ self.parsepos = -1
+ self.eolBefore = False
+
+ def curr (self):
+ """Returns the current token."""
+ return self.tokens[self.parsepos]
+
+ def currType (self):
+ return self.curr()["type"]
+
+ def currDetail (self):
+ return self.curr()["detail"]
+
+ def currSource (self):
+ return self.curr()["source"]
+
+ def currLine (self):
+ return self.curr()["line"]
+
+ def currColumn (self):
+ return self.curr()["column"]
+
+ def currMultiline (self):
+ return self.curr()["multiline"]
+
+ def currConnection (self):
+ return self.curr()["connection"]
+
+ def currIsType (self, tokenType, tokenDetail = None):
+ if self.currType() != tokenType:
+ return False
+ else:
+ if tokenDetail == None:
+ return True
+ elif type(tokenDetail) == list:
+ return self.currDetail() in tokenDetail
+ else:
+ return self.currDetail() == tokenDetail
+
+ def expectCurrType (self, tokenType, tokenDetail = None):
+ if not self.currIsType(tokenType, tokenDetail):
+ expectedDesc = tokenType
+ if type(tokenDetail) == str:
+ expectedDesc += "/" + tokenDetail
+ raiseSyntaxException(self.curr(), expectedDesc)
+
+ def finished (self):
+ # NOTE: the last token is end of file
+ return self.parsepos >= len(self.tokens) - 1
+
+ def next (self, item=None, after=False):
+ length = len(self.tokens)
+ self.eolBefore = False
+ self.breakBefore = False
+
+ token = None
+ while self.parsepos < length - 1:
+ self.parsepos += 1
+
+ token = self.tokens[self.parsepos]
+
+ if token["type"] == "eol":
+ if self.eolBefore:
+ self.breakBefore = True
+
+ self.eolBefore = True
+ # ignore end of line
+ pass
+
+ elif token["type"] == "comment":
+ # After current item
+ if token["connection"] == "after":
+ if not token.has_key("inserted") or not token["inserted"]:
+ if item:
+ commentNode = tree.Node("comment")
+ commentNode.set("line", token["line"])
+ commentNode.set("column", token["column"])
+ commentNode.set("text", token["source"])
+ commentNode.set("detail", token["detail"])
+ commentNode.set("multiline", token["multiline"])
+ commentNode.set("connection", token["connection"])
+ commentNode.set("begin", token["begin"])
+ commentNode.set("end", token["end"])
+
+ if after:
+ item.addListChild("commentsAfter", commentNode)
+ else:
+ item.addChild(commentNode)
+
+ self.eolBefore = False
+ self.breakBefore = False
+
+ else:
+ print "Found unresolved after comment in line %s, column %s" % (token["line"], token["column"])
+ print token["source"]
+ pass
+
+ # Documentation and Block comments of next item
+ else:
+ if not self.commentsBefore:
+ self.commentsBefore = []
+
+ commentNode = tree.Node("comment")
+ commentNode.set("line", token["line"])
+ commentNode.set("column", token["column"])
+ commentNode.set("text", token["source"])
+ commentNode.set("detail", token["detail"])
+ commentNode.set("multiline", token["multiline"])
+ commentNode.set("connection", token["connection"])
+ commentNode.set("begin", token["begin"])
+ commentNode.set("end", token["end"])
+
+ self.commentsBefore.append(commentNode)
+
+ self.eolBefore = False
+ self.breakBefore = False
+
+ else:
+ break
+
+ #print "next token: " + str(token)
+
+ if token == None:
+ # return end of file token
+ return self.tokens[length - 1]
+ else:
+ return token
+
+ # alternative to use, when we want to check if the next token
+ # is a comment, but are not able to use next() because if there is
+ # no comment we want to leave in our position
+ def comment (self, item, after=False):
+ length = len(self.tokens)
+
+ token = None
+ pos = self.parsepos
+
+ while pos < length - 1:
+ pos += 1
+ token = self.tokens[pos]
+
+ if token["type"] == "comment" and token["connection"] == "after" and (not token.has_key("inserted") or not token["inserted"]):
+ commentNode = tree.Node("comment")
+ commentNode.set("line", token["line"])
+ commentNode.set("column", token["column"])
+ commentNode.set("text", token["source"])
+ commentNode.set("detail", token["detail"])
+ commentNode.set("multiline", token["multiline"])
+ commentNode.set("connection", token["connection"])
+ commentNode.set("begin", token["begin"])
+ commentNode.set("end", token["end"])
+
+ token["inserted"] = True
+
+ if after:
+ item.addListChild("commentsAfter", commentNode)
+ else:
+ item.addChild(commentNode)
+
+ else:
+ break
+
+ def hadEolBefore(self):
+ return self.eolBefore
+
+ def hadBreakBefore(self):
+ return self.breakBefore
+
+ def clearCommentsBefore(self):
+ commentsBefore = self.commentsBefore
+ self.commentsBefore = None
+ return commentsBefore
+
+
+
+class SyntaxException (Exception):
+ pass
+
+
+
+def createItemNode(type, stream):
+ # print "CREATE %s" % type
+
+ node = tree.Node(type)
+ node.set("line", stream.currLine())
+ node.set("column", stream.currColumn())
+
+ commentsBefore = stream.clearCommentsBefore()
+ if commentsBefore:
+ for comment in commentsBefore:
+ node.addListChild("commentsBefore", comment)
+
+ return node
+
+
+
+def raiseSyntaxException (token, expectedDesc = None):
+ if expectedDesc:
+ msg = "Expected " + expectedDesc + " but found "
+ else:
+ msg = "Unexpected "
+
+ msg += token["type"]
+
+ if token["detail"]:
+ msg += "/" + token["detail"]
+
+ msg += ": '" + token["source"] + "'. file:" + \
+ token["id"] + ", line:" + str(token["line"]) + \
+ ", column:" + str(token["column"])
+
+ raise SyntaxException(msg)
+
+
+
+def createSyntaxTree (tokenArr):
+ """Creates a syntax tree from a token stream.
+
+ tokens: the token stream."""
+
+ stream = TokenStream(tokenArr)
+ stream.next()
+
+ rootBlock = tree.Node("file")
+ rootBlock.set("file", stream.curr()["id"])
+
+ while not stream.finished():
+ rootBlock.addChild(readStatement(stream))
+
+ return rootBlock
+
+
+
+def readExpression (stream):
+ return readStatement(stream, True)
+
+
+
+def readStatement (stream, expressionMode = False, overrunSemicolon = True, inStatementList = False):
+ item = None
+
+ eolBefore = stream.hadEolBefore()
+ breakBefore = stream.hadBreakBefore()
+
+ # print "PROGRESS: %s - %s (%s) [expr=%s]" % (stream.currType(), stream.currDetail(), stream.currLine(), expressionMode)
+
+ if currIsIdentifier(stream, True):
+ # statement starts with an identifier
+ variable = readVariable(stream, True)
+ variable = readObjectOperation(stream, variable)
+
+ if stream.currIsType("token", ASSIGN_OPERATORS):
+ # This is an assignment
+ item = createItemNode("assignment", stream)
+ item.set("operator", stream.currDetail())
+ stream.next(item)
+
+ item.addListChild("left", variable)
+ item.addListChild("right", readExpression(stream))
+ elif stream.currIsType("token", "COLON") and not expressionMode:
+ # This is a label
+ item = variable
+ item.type = "label"
+ stream.next(variable)
+ else:
+ # Something else comes after the variable -> It's a sole variable
+ item = variable
+
+ # Any comments found for the variable belong to the extracted item
+ commentsChild = variable.getChild("commentsBefore", False)
+ if item and commentsChild != None:
+ variable.removeChild(commentsChild)
+ item.addChild(commentsChild, 0)
+ elif stream.currIsType("protected", "FUNCTION"):
+ item = createItemNode("function", stream)
+ stream.next(item)
+
+ # Read optional function name
+ if stream.currIsType("name"):
+ item.set("name", stream.currSource())
+ stream.next(item)
+
+ readParamList(item, stream)
+ item.addListChild("body", readBlock(stream))
+
+ # Check for direct execution: function() {}()
+ if stream.currIsType("token", "LP"):
+ # The function is executed directly
+ functionItem = item
+ item = createItemNode("call", stream)
+ item.addListChild("operand", functionItem)
+ readParamList(item, stream)
+ item = readObjectOperation(stream, item)
+ elif stream.currIsType("protected", "VOID"):
+ stream.next(item)
+ item = createItemNode("void", stream)
+ stream.next(item)
+ item.addChild(readStatement(stream, expressionMode))
+ stream.expectCurrType("token", "RP")
+ stream.next(item, True)
+ item = readObjectOperation(stream, item)
+ elif stream.currIsType("token", "LP"):
+ igroup = createItemNode("group", stream)
+ stream.next(igroup)
+ igroup.addChild(readStatement(stream, expressionMode))
+ stream.expectCurrType("token", "RP")
+ stream.next(igroup, True)
+ oper = readObjectOperation(stream, igroup)
+
+ # supports e.g. (this.editor.object || this.editor.iframe).style.marginTop = null;
+ if stream.currIsType("token", ASSIGN_OPERATORS):
+ # This is an assignment
+ item = createItemNode("assignment", stream)
+ item.set("operator", stream.currDetail())
+ stream.next(item)
+
+ item.addListChild("left", oper)
+ item.addListChild("right", readExpression(stream))
+ else:
+ # Something else comes after the variable -> It's a sole variable
+ item = oper
+
+ elif stream.currIsType("string"):
+ item = createItemNode("constant", stream)
+ item.set("constantType", "string")
+ item.set("value", stream.currSource())
+ item.set("detail", stream.currDetail())
+ stream.next(item, True)
+ # This is a member accessor (E.g. "bla.blubb")
+ item = readObjectOperation(stream, item)
+ elif stream.currIsType("number"):
+ item = createItemNode("constant", stream)
+ item.set("constantType", "number")
+ item.set("value", stream.currSource())
+ item.set("detail", stream.currDetail())
+ stream.next(item, True)
+ # This is a member accessor (E.g. "bla.blubb")
+ item = readObjectOperation(stream, item)
+ elif stream.currIsType("regexp"):
+ item = createItemNode("constant", stream)
+ item.set("constantType", "regexp")
+ item.set("value", stream.currSource())
+ stream.next(item, True)
+ # This is a member accessor (E.g. "bla.blubb")
+ item = readObjectOperation(stream, item)
+ elif expressionMode and (stream.currIsType("protected", "TRUE") or stream.currIsType("protected", "FALSE")):
+ item = createItemNode("constant", stream)
+ item.set("constantType", "boolean")
+ item.set("value", stream.currSource())
+ stream.next(item, True)
+ elif expressionMode and stream.currIsType("protected", "NULL"):
+ item = createItemNode("constant", stream)
+ item.set("constantType", "null")
+ item.set("value", stream.currSource())
+ stream.next(item, True)
+ elif expressionMode and stream.currIsType("token", "LC"):
+ item = readMap(stream)
+ elif expressionMode and stream.currIsType("token", "LB"):
+ item = readArray(stream)
+ elif stream.currIsType("token", SINGLE_LEFT_OPERATORS):
+ item = createItemNode("operation", stream)
+ item.set("operator", stream.currDetail())
+ item.set("left", True)
+ stream.next(item)
+ item.addListChild("first", readExpression(stream))
+ elif stream.currIsType("protected", "TYPEOF"):
+ item = createItemNode("operation", stream)
+ item.set("operator", "TYPEOF")
+ item.set("left", True)
+ stream.next(item)
+ item.addListChild("first", readExpression(stream))
+ elif stream.currIsType("protected", "NEW"):
+ item = readInstantiation(stream)
+ item = readObjectOperation(stream, item)
+ elif not expressionMode and stream.currIsType("protected", "VAR"):
+ item = createItemNode("definitionList", stream)
+ stream.next(item)
+ finished = False
+ while not finished:
+ if not currIsIdentifier(stream, False):
+ raiseSyntaxException(stream.curr(), "identifier")
+
+ childitem = createItemNode("definition", stream)
+ childitem.set("identifier", stream.currSource())
+ stream.next(childitem)
+ if stream.currIsType("token", "ASSIGN"):
+ assign = createItemNode("assignment", stream)
+ childitem.addChild(assign)
+ stream.next(assign)
+ assign.addChild(readExpression(stream))
+
+ item.addChild(childitem)
+
+ # Check whether anothe definition follows, e.g. "var a, b=1, c=4"
+ if stream.currIsType("token", "COMMA"):
+ stream.next(item)
+ else:
+ finished = True
+
+ stream.comment(item, True)
+
+ elif not expressionMode and stream.currIsType("protected", LOOP_KEYWORDS):
+ item = readLoop(stream)
+ elif not expressionMode and stream.currIsType("protected", "DO"):
+ item = readDoWhile(stream)
+ elif not expressionMode and stream.currIsType("protected", "SWITCH"):
+ item = readSwitch(stream)
+ elif not expressionMode and stream.currIsType("protected", "TRY"):
+ item = readTryCatch(stream)
+ elif not expressionMode and stream.currIsType("token", "LC"):
+ item = readBlock(stream)
+ elif not expressionMode and stream.currIsType("protected", "RETURN"):
+ item = createItemNode("return", stream)
+ stream.next(item)
+ # NOTE: The expression after the return keyword is optional
+ if not stream.currIsType("token", "SEMICOLON") and not stream.currIsType("token", "RC"):
+ item.addListChild("expression", readExpression(stream))
+ stream.comment(item, True)
+ elif not expressionMode and stream.currIsType("protected", "THROW"):
+ item = createItemNode("throw", stream)
+ stream.next(item)
+ item.addListChild("expression", readExpression(stream))
+ stream.comment(item, True)
+ elif not expressionMode and stream.currIsType("protected", "DELETE"):
+ item = createItemNode("delete", stream)
+ stream.next(item)
+ item.addListChild("expression", readExpression(stream))
+ stream.comment(item, True)
+ elif not expressionMode and stream.currIsType("protected", "BREAK"):
+ item = createItemNode("break", stream)
+ stream.next(item)
+ # NOTE: The label after the break keyword is optional
+ if not stream.hadEolBefore() and stream.currIsType("name"):
+ item.set("label", stream.currSource())
+ # As the label is an attribute, we need to put following comments into after
+ # to differenciate between comments before and after the label
+ stream.next(item, True)
+ elif not expressionMode and stream.currIsType("protected", "CONTINUE"):
+ item = createItemNode("continue", stream)
+ stream.next(item)
+ # NOTE: The label after the continue keyword is optional
+ if not stream.hadEolBefore() and stream.currIsType("name"):
+ item.set("label", stream.currSource())
+ stream.next(item, True)
+
+ if not item:
+ if stream.currIsType("token", "SEMICOLON") and not expressionMode:
+ # This is an empty statement
+ item = createItemNode("emptyStatement", stream)
+ stream.next(item)
+ else:
+ if expressionMode:
+ expectedDesc = "expression"
+ else:
+ expectedDesc = "statement"
+ raiseSyntaxException(stream.curr(), expectedDesc)
+
+ # check whether this is an operation
+ if stream.currIsType("token", MULTI_TOKEN_OPERATORS) or stream.currIsType("protected", MULTI_PROTECTED_OPERATORS) or (stream.currIsType("token", SINGLE_RIGHT_OPERATORS) and not stream.hadEolBefore()):
+ # its an operation -> We've already parsed the first operand (in item)
+ parsedItem = item
+
+ oper = stream.currDetail()
+
+ item = createItemNode("operation", stream)
+ item.addListChild("first", parsedItem)
+ item.set("operator", oper)
+ stream.next(item)
+
+ if oper in MULTI_TOKEN_OPERATORS or oper in MULTI_PROTECTED_OPERATORS:
+ # It's a multi operator -> There must be a second argument
+ item.addListChild("second", readExpression(stream))
+ if oper == "HOOK":
+ # It's a "? :" operation -> There must be a third argument
+ stream.expectCurrType("token", "COLON")
+ stream.next(item)
+ item.addListChild("third", readExpression(stream))
+
+ # Deep scan on single right operators e.g. if(i-- > 4)
+ if oper in SINGLE_RIGHT_OPERATORS and stream.currIsType("token", MULTI_TOKEN_OPERATORS) and expressionMode:
+ paroper = stream.currDetail()
+
+ paritem = createItemNode("operation", stream)
+ paritem.addListChild("first", item)
+ paritem.set("operator", paroper)
+ stream.next(item)
+
+ if paroper in MULTI_TOKEN_OPERATORS or paroper in MULTI_PROTECTED_OPERATORS:
+ # It's a multi operator -> There must be a second argument
+ paritem.addListChild("second", readExpression(stream))
+ if paroper == "HOOK":
+ # It's a "? :" operation -> There must be a third argument
+ stream.expectCurrType("token", "COLON")
+ stream.next(item)
+ paritem.addListChild("third", readExpression(stream))
+
+ # return parent item
+ item = paritem
+
+
+
+ # check whether this is a combined statement, e.g. "bla(), i++"
+ if not expressionMode and not inStatementList and stream.currIsType("token", "COMMA"):
+ statementList = createItemNode("statementList", stream)
+ statementList.addChild(item)
+ while stream.currIsType("token", "COMMA"):
+ stream.next(statementList)
+ statementList.addChild(readStatement(stream, False, False, True))
+ item = statementList
+
+ # go over the optional semicolon
+ if not expressionMode and overrunSemicolon and stream.currIsType("token", "SEMICOLON"):
+ stream.next(item, True)
+
+
+ item.set("eolBefore", eolBefore)
+ item.set("breakBefore", breakBefore)
+
+ return item
+
+
+
+def currIsIdentifier (stream, allowThis):
+ det = stream.currDetail()
+ return stream.currIsType("name") or stream.currIsType("builtin") \
+ or (stream.currIsType("protected") and \
+ (det == "INFINITY" or det == "PROTOTYPE" or det == "CALL" or \
+ det == "APPLY" or (allowThis and det == "THIS")))
+
+
+
+def readVariable (stream, allowArrays):
+ # Note: keywords may be used as identifiers, too
+ item = createItemNode("variable", stream)
+
+ done = False
+ firstIdentifier = True
+ while not done:
+ if not currIsIdentifier(stream, firstIdentifier):
+ raiseSyntaxException(stream.curr(), "identifier")
+
+ identifier = createItemNode("identifier", stream)
+ identifier.set("name", stream.currSource())
+ stream.next(identifier)
+
+ if allowArrays:
+ while stream.currIsType("token", "LB"):
+ accessor = createItemNode("accessor", stream)
+ stream.next(accessor)
+ accessor.addListChild("identifier", identifier)
+ accessor.addListChild("key", readExpression(stream))
+
+ stream.expectCurrType("token", "RB")
+ stream.next(accessor, True)
+
+ identifier = accessor
+
+ item.addChild(identifier)
+
+ firstIdentifier = False
+
+ if stream.currIsType("token", "DOT"):
+ stream.next(item)
+ else:
+ done = True
+
+ return item
+
+
+
+def readObjectOperation(stream, operand, onlyAllowMemberAccess = False):
+ if stream.currIsType("token", "DOT"):
+ # This is a member accessor (E.g. "bla.blubb")
+ item = createItemNode("accessor", stream)
+ stream.next(item)
+ item.addListChild("left", operand)
+
+ # special mode for constants which should be assigned to an accessor first
+ if operand.type == "constant":
+ item.addListChild("right", readVariable(stream, False))
+ item = readObjectOperation(stream, item)
+ else:
+ item.addListChild("right", readObjectOperation(stream, readVariable(stream, False)))
+
+ elif stream.currIsType("token", "LP"):
+ # This is a function call (E.g. "bla(...)")
+ item = createItemNode("call", stream)
+ item.addListChild("operand", operand)
+ readParamList(item, stream)
+ item = readObjectOperation(stream, item)
+ elif stream.currIsType("token", "LB"):
+ # This is an array access (E.g. "bla[...]")
+ item = createItemNode("accessor", stream)
+ stream.next(item)
+ item.addListChild("identifier", operand)
+ item.addListChild("key", readExpression(stream))
+
+ stream.expectCurrType("token", "RB")
+ stream.next(item, True)
+ item = readObjectOperation(stream, item)
+ else:
+ item = operand
+
+ # Any comments found for the operand belong to the item
+ if operand != item:
+ commentsChild = operand.getChild("commentsBefore", False)
+ if commentsChild != None:
+ operand.removeChild(commentsChild)
+ item.addChild(commentsChild, 0)
+
+ return item
+
+
+
+def readParamList (node, stream):
+ stream.expectCurrType("token", "LP")
+
+ params = createItemNode("params", stream)
+ node.addChild(params)
+
+ stream.next(params)
+
+ firstParam = True
+ lastExpr = None
+ while not stream.currIsType("token", "RP"):
+ if firstParam:
+ firstParam = False
+ else:
+ stream.expectCurrType("token", "COMMA")
+ stream.next(lastExpr, True)
+
+ lastExpr = readExpression(stream)
+ params.addChild(lastExpr)
+
+ # Has an end defined by the loop above
+ # This means that all comments following are after item
+ stream.next(params, True)
+
+
+def readBlock(stream):
+ stream.expectCurrType("token", "LC")
+ item = createItemNode("block", stream)
+
+ # Iterate through children
+ stream.next(item)
+ while not stream.currIsType("token", "RC"):
+ item.addChild(readStatement(stream))
+
+ # Has an end defined by the loop above
+ # This means that all comments following are after item
+ stream.next(item, True)
+
+ return item
+
+
+def readMap(stream):
+ stream.expectCurrType("token", "LC")
+
+ item = createItemNode("map", stream)
+ stream.next(item)
+
+ # NOTE: We use our own flag for checking whether the array already has entries
+ # and not item.hasChildren(), because item.hasChildren() is also true
+ # when there are comments before the array
+ hasEntries = False
+
+ while not stream.currIsType("token", "RC"):
+ if hasEntries:
+ stream.expectCurrType("token", "COMMA")
+ stream.next(item)
+
+ if not currIsIdentifier(stream, True) and not stream.currIsType("string") and not stream.currIsType("number"):
+ raiseSyntaxException(stream.curr(), "map key (identifier, string or number)")
+
+ keyvalue = createItemNode("keyvalue", stream)
+ keyvalue.set("key", stream.currSource())
+
+ if stream.currIsType("string"):
+ keyvalue.set("quote", stream.currDetail())
+
+ stream.next(keyvalue)
+ stream.expectCurrType("token", "COLON")
+ stream.next(keyvalue, True)
+ keyvalue.addListChild("value", readExpression(stream))
+
+ item.addChild(keyvalue)
+
+ hasEntries = True
+
+ # Has an end defined by the loop above
+ # This means that all comments following are after item
+ stream.next(item, True)
+
+ return item
+
+
+
+def readArray(stream):
+ stream.expectCurrType("token", "LB")
+
+ item = createItemNode("array", stream)
+ stream.next(item)
+
+ # NOTE: We use our own flag for checking whether the array already has entries
+ # and not item.hasChildren(), because item.hasChildren() is also true
+ # when there are comments before the array
+ hasEntries = False
+ while not stream.currIsType("token", "RB"):
+ if hasEntries:
+ stream.expectCurrType("token", "COMMA")
+ stream.next(item)
+
+ item.addChild(readExpression(stream))
+ hasEntries = True
+
+ # Has an end defined by the loop above
+ # This means that all comments following are after item
+ stream.next(item, True)
+
+ # Support constructs like [ "foo", "bar" ].join("")
+ item = readObjectOperation(stream, item)
+
+ return item
+
+
+
+def readInstantiation(stream):
+ stream.expectCurrType("protected", "NEW")
+
+ item = createItemNode("instantiation", stream)
+ stream.next(item)
+
+ # Could be a simple variable or a just-in-time function declaration (closure)
+ # Read this as expression
+ stmnt = readStatement(stream, True, False)
+ item.addListChild("expression", stmnt)
+
+ return item
+
+
+
+def readLoop(stream):
+ stream.expectCurrType("protected", LOOP_KEYWORDS)
+
+ loopType = stream.currDetail()
+
+ item = createItemNode("loop", stream)
+ item.set("loopType", loopType)
+
+ stream.next(item)
+ stream.expectCurrType("token", "LP")
+
+ if loopType == "FOR":
+ stream.next(item)
+
+ if not stream.currIsType("token", "SEMICOLON"):
+ # Read the optional first statement
+ first = createItemNode("first", stream)
+ item.addChild(first)
+ first.addChild(readStatement(stream, False, False))
+ stream.comment(first, True)
+
+ if stream.currIsType("token", "SEMICOLON"):
+ # It's a for (;;) loop
+ item.set("forVariant", "iter")
+
+ stream.next(item)
+ if not stream.currIsType("token", "SEMICOLON"):
+ # Read the optional second expression
+ second = createItemNode("second", stream)
+ item.addChild(second)
+ second.addChild(readExpression(stream))
+ stream.comment(second, True)
+
+ stream.expectCurrType("token", "SEMICOLON")
+ stream.next(item)
+
+ if not stream.currIsType("token", "RP"):
+ # Read the optional third statement
+ third = createItemNode("third", stream)
+ item.addChild(third)
+ third.addChild(readStatement(stream, False, False))
+ stream.comment(third, True)
+
+ elif stream.currIsType("token", "RP"):
+ # It's a for ( in ) loop
+ item.set("forVariant", "in")
+ pass
+
+ else:
+ raiseSyntaxException(stream.curr(), "semicolon or in")
+
+ stream.expectCurrType("token", "RP")
+
+ else:
+ expr = createItemNode("expression", stream)
+ stream.next(expr)
+ expr.addChild(readExpression(stream))
+ item.addChild(expr)
+ stream.comment(expr, True)
+ stream.expectCurrType("token", "RP")
+
+ # comments should be already completed from the above code
+ stmnt = createItemNode("statement", stream)
+ item.addChild(stmnt)
+ stream.next()
+ stmnt.addChild(readStatement(stream))
+
+ if loopType == "IF" and stream.currIsType("protected", "ELSE"):
+ elseStmnt = createItemNode("elseStatement", stream)
+ item.addChild(elseStmnt)
+ stream.next(elseStmnt)
+ elseStmnt.addChild(readStatement(stream))
+
+ return item
+
+
+
+def readDoWhile(stream):
+ stream.expectCurrType("protected", "DO")
+
+ item = createItemNode("loop", stream)
+ item.set("loopType", "DO")
+ stream.next(item)
+
+ stmnt = createItemNode("statement", stream)
+ item.addChild(stmnt)
+ stmnt.addChild(readStatement(stream))
+
+ stream.expectCurrType("protected", "WHILE")
+ stream.next(item)
+
+ stream.expectCurrType("token", "LP")
+
+ expr = createItemNode("expression", stream)
+ item.addChild(expr)
+ stream.next(expr)
+
+ expr.addChild(readExpression(stream))
+
+ stream.expectCurrType("token", "RP")
+ stream.next(item, True)
+
+ return item
+
+
+def readSwitch(stream):
+ stream.expectCurrType("protected", "SWITCH")
+
+ item = createItemNode("switch", stream)
+ item.set("switchType", "case")
+
+ stream.next(item)
+ stream.expectCurrType("token", "LP")
+
+ expr = createItemNode("expression", stream)
+ stream.next(expr)
+ item.addChild(expr)
+ expr.addChild(readExpression(stream))
+
+ stream.expectCurrType("token", "RP")
+ stream.next(expr, True)
+
+ stream.expectCurrType("token", "LC")
+ stmnt = createItemNode("statement", stream)
+ item.addChild(stmnt)
+ stream.next(stmnt)
+
+ while not stream.currIsType("token", "RC"):
+ if stream.currIsType("protected", "CASE"):
+ caseItem = createItemNode("case", stream)
+ stream.next(caseItem)
+ caseItem.addListChild("expression", readExpression(stream))
+ stmnt.addChild(caseItem)
+
+ stream.expectCurrType("token", "COLON")
+ stream.next(caseItem, True)
+
+ elif stream.currIsType("protected", "DEFAULT"):
+ defaultItem = createItemNode("default", stream)
+ stmnt.addChild(defaultItem)
+ stream.next(defaultItem)
+
+ stream.expectCurrType("token", "COLON")
+ stream.next(defaultItem, True)
+
+ else:
+ raiseSyntaxException(stream.curr(), "case or default")
+
+ while not stream.currIsType("token", "RC") and not stream.currIsType("protected", "CASE") and not stream.currIsType("protected", "DEFAULT"):
+ stmnt.addChild(readStatement(stream))
+
+ stream.next(stmnt, True)
+
+ return item
+
+
+def readTryCatch(stream):
+ stream.expectCurrType("protected", "TRY")
+
+ item = createItemNode("switch", stream)
+ item.set("switchType", "catch")
+ stream.next(item)
+
+ item.addListChild("statement", readStatement(stream))
+
+ while stream.currIsType("protected", "CATCH"):
+ catchItem = createItemNode("catch", stream)
+ stream.next(catchItem)
+
+ stream.expectCurrType("token", "LP")
+
+ exprItem = createItemNode("expression", stream)
+ catchItem.addChild(exprItem)
+ stream.next(exprItem)
+ exprItem.addChild(readExpression(stream))
+
+ stream.expectCurrType("token", "RP")
+ stream.next(exprItem, True)
+
+ stmnt = createItemNode("statement", stream)
+ catchItem.addChild(stmnt)
+ stmnt.addChild(readStatement(stream))
+
+ item.addChild(catchItem)
+
+ if stream.currIsType("protected", "FINALLY"):
+ finallyItem = createItemNode("finally", stream)
+ stream.next(finallyItem)
+
+ stmnt = createItemNode("statement", stream)
+ finallyItem.addChild(stmnt)
+ stmnt.addChild(readStatement(stream))
+
+ item.addChild(finallyItem)
+
+ return item
+
+
+
+
+
+
+
+
+
+def main():
+ parser = optparse.OptionParser()
+
+ parser.add_option("-w", "--write", action="store_true", dest="write", default=False, help="Writes file to incoming fileName + EXTENSION.")
+ parser.add_option("-e", "--extension", dest="extension", metavar="EXTENSION", help="The EXTENSION to use", default=".compiled")
+ parser.add_option("--optimize-variables", action="store_true", dest="optimizeVariables", default=False, help="Optimize variables. Reducing size.")
+ parser.add_option("--encoding", dest="encoding", default="utf-8", metavar="ENCODING", help="Defines the encoding expected for input files.")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) == 0:
+ print "Needs one or more arguments (files) to compile!"
+ sys.exit(1)
+
+ for fileName in args:
+ if options.write:
+ print "Generating tree of %s => %s%s" % (fileName, fileName, options.extension)
+ else:
+ print "Generating tree of %s => stdout" % fileName
+
+ restree = createSyntaxTree(tokenizer.parseFile(fileName, "", options.encoding))
+
+ if options.optimizeVariables:
+ variableoptimizer.search(restree, [], 0, "$")
+
+ compiledString = tree.nodeToXmlString(restree)
+ if options.write:
+ filetool.save(fileName + options.extension, compiledString)
+
+ else:
+ try:
+ print compiledString
+
+ except UnicodeEncodeError:
+ print " * Could not encode result to ascii. Use '-w' instead."
+ sys.exit(1)
+
+
+
+if __name__ == '__main__':
+ try:
+ main()
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.pyc
new file mode 100644
index 0000000000..6e142ea91e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/treegenerator.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.py b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.py
new file mode 100755
index 0000000000..6fa148dd5d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.py
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+
+import tree, mapper
+
+def search(node, found, level=0, prefix="$", register=False, debug=False):
+ if node.type == "function":
+ if register:
+ name = node.get("name", False)
+ if name != None and not name in found:
+ # print "Name: %s" % funcName
+ found.append(name)
+
+ foundLen = len(found)
+ register = True
+
+ if debug:
+ print "\n%s<scope line='%s'>" % ((" " * level), node.get("line"))
+
+ # e.g. func(name1, name2);
+ elif register and node.type == "variable" and node.hasChildren() and len(node.children) == 1:
+ if node.parent.type == "params" and node.parent.parent.type != "call":
+ first = node.getFirstChild()
+
+ if first.type == "identifier":
+ name = first.get("name")
+
+ if not name in found:
+ found.append(name)
+
+ # e.g. var name1, name2 = "foo";
+ elif register and node.type == "definition":
+ name = node.get("identifier", False)
+
+ if name != None:
+ if not name in found:
+ found.append(name)
+
+ # Iterate over children
+ if node.hasChildren():
+ if node.type == "function":
+ for child in node.children:
+ search(child, found, level+1, prefix, register, debug)
+
+ else:
+ for child in node.children:
+ search(child, found, level, prefix, register, debug)
+
+ # Function closed
+ if node.type == "function":
+
+ # Debug
+ if debug:
+ for item in found:
+ print " %s<item>%s</item>" % ((" " * level), item)
+ print "%s</scope>" % (" " * level)
+
+ # Iterate over content
+ # Replace variables in current scope
+ update(node, found, prefix, debug)
+ del found[foundLen:]
+
+
+
+def update(node, found, prefix="$", debug=False):
+ # Handle all identifiers
+ if node.type == "identifier":
+
+ isFirstChild = False
+ isVariableMember = False
+
+ if node.parent.type == "variable":
+ isVariableMember = True
+ varParent = node.parent.parent
+
+ if not (varParent.type == "right" and varParent.parent.type == "accessor"):
+ isFirstChild = node.parent.getFirstChild(True, True) == node
+
+ elif node.parent.type == "identifier" and node.parent.parent.type == "accessor":
+ isVariableMember = True
+ accessor = node.parent.parent
+ isFirstChild = accessor.parent.getFirstChild(True, True) == accessor
+
+ # inside a variable parent only respect the first member
+ if not isVariableMember or isFirstChild:
+ idenName = node.get("name", False)
+
+ if idenName != None and idenName in found:
+ replName = "%s%s" % (prefix, mapper.convert(found.index(idenName)))
+ node.set("name", replName)
+
+ if debug:
+ print " - Replaced '%s' with '%s'" % (idenName, replName)
+
+ # Handle variable definition
+ elif node.type == "definition":
+ idenName = node.get("identifier", False)
+
+ if idenName != None and idenName in found:
+ replName = "%s%s" % (prefix, mapper.convert(found.index(idenName)))
+ node.set("identifier", replName)
+
+ if debug:
+ print " - Replaced '%s' with '%s'" % (idenName, replName)
+
+ # Handle function definition
+ elif node.type == "function":
+ idenName = node.get("name", False)
+
+ if idenName != None and idenName in found:
+ replName = "%s%s" % (prefix, mapper.convert(found.index(idenName)))
+ node.set("name", replName)
+
+ if debug:
+ print " - Replaced '%s' with '%s'" % (idenName, replName)
+
+ # Iterate over children
+ if node.hasChildren():
+ for child in node.children:
+ update(child, found, prefix, debug)
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.pyc b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.pyc
new file mode 100644
index 0000000000..5e31ca7bc0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/modules/variableoptimizer.pyc
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/core.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/core.dat
new file mode 100755
index 0000000000..df7843bece
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/core.dat
@@ -0,0 +1,12 @@
+###########################################################################
+#
+# Generates a compiled qooxdoo core JavaScript file
+#
+###########################################################################
+
+script-input = framework/source/class
+cache-directory = .cache
+include = core
+generate-compiled-script
+compiled-script-file = core.js
+optimize-strings
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/packages.dat b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/packages.dat
new file mode 100755
index 0000000000..3b60a78f80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/tool/presets/packages.dat
@@ -0,0 +1,25 @@
+###########################################################################
+#
+# Generates 3 JavaScript files with different include configuration
+#
+###########################################################################
+
+script-input = framework/source/class
+cache-directory = .cache
+generate-compiled-script
+optimize-strings
+
+package = core
+include = core
+compiled-script-file = pkg-core.js
+
+package = ui_core
+include = ui_core
+exclude = core
+compiled-script-file = pkg-ui_core.js
+
+package = ui_basic
+include = ui_basic
+exclude = core
+exclude = ui_core
+compiled-script-file = pkg-ui_basic.js
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample1.tar.gz b/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample1.tar.gz
new file mode 100644
index 0000000000..8a942965b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample1.tar.gz
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample2.tar.gz b/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample2.tar.gz
new file mode 100644
index 0000000000..b7a371e4ee
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample2.tar.gz
Binary files differ
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample3.tar.gz b/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample3.tar.gz
new file mode 100644
index 0000000000..4b05231d19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.3-sdk/frontend/skeleton/sample3.tar.gz
Binary files differ
diff --git a/webapps/scripting/client/call.js b/webapps/scripting/client/call.js
new file mode 100644
index 0000000000..2886471db2
--- /dev/null
+++ b/webapps/scripting/client/call.js
@@ -0,0 +1,118 @@
+/*
+ client side js functions for remote calls into the server
+
+ Copyright Andrew Tridgell 2005
+ released under the GNU GPL Version 2 or later
+*/
+
+var __call = new Object();
+
+/*
+ we can't use the qooxdoo portability layer for this, as it assumes
+ you are using an XML transport, so instead replicate the portability
+ code for remote calls here. Don't look too closely or you will go
+ blind.
+*/
+__call._activex = window.ActiveXObject && !(new QxClient).isOpera() ? true : false;
+__call._activexobj = null;
+__call._ok = QxXmlHttpLoader._http || QxXmlHttpLoader._activex;
+
+if (__call._activex) {
+ var servers = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
+ for (var i=0; i<servers.length; i++) {
+ try {
+ var o = new ActiveXObject(servers[i] + ".XMLHTTP");
+ __call._activexobj = servers[i];
+ o = null;
+ } catch(ex) {};
+ };
+};
+
+/*
+ return a http object ready for a remote call
+*/
+function __http_object() {
+ return __call._activex ?
+ new ActiveXObject(__call._activexobj + ".XMLHTTP") :
+ new XMLHttpRequest();
+}
+
+/*
+ usage:
+
+ vserver_call(url, func, callback, args);
+
+ 'func' is a function name to call on the server
+ any additional arguments are passed to func() on the server
+
+ The callback() function is called with the returned
+ object. 'callback' may be null.
+*/
+function vserver_call_url(url, func, callback, args) {
+ var args2 = new Object();
+ args2.length = args.length;
+ var i;
+ for (i=0;i<args.length;i++) {
+ args2[i] = args[i];
+ }
+ var req = __http_object();
+ req.open("POST", url, true);
+ req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+ req.send("ajaj_func=" + func + "&ajaj_args=" + encodeObject(args2));
+ req.onreadystatechange = function() {
+ if (4 == req.readyState && callback != null) {
+ var o = decodeObject(req.responseText);
+ callback(o.res);
+ }
+ }
+}
+
+
+/*
+ usage:
+
+ server_call_url(url, func, callback, ...);
+
+ 'func' is a function name to call on the server
+ any additional arguments are passed to func() on the server
+
+ The callback() function is called with the returned
+ object. 'callback' may be null.
+*/
+function server_call_url(url, func, callback) {
+ var args = new Object();
+ var i;
+ for (i=3;i<arguments.length;i++) {
+ args[i-3] = arguments[i];
+ }
+ args.length = i-3;
+ vserver_call_url(url, func, callback, args);
+}
+
+
+/*
+ call printf on the server
+*/
+function srv_printf() {
+ vserver_call_url('/scripting/general_calls.esp', 'srv_printf', null, arguments);
+}
+
+/*
+ usage:
+
+ server_call(func, callback, ...);
+
+ 'func' is a function name to call on the server
+ any additional arguments are passed to func() on the server
+
+ The callback() function is called with the returned
+ object. 'callback' may be null.
+*/
+function server_call(func, callback) {
+ var args = new Array(arguments.length-2);
+ var i;
+ for (i=0;i<args.length;i++) {
+ args[i] = arguments[i+1];
+ }
+ vserver_call_url("@request.REQUEST_URI", func, callback, args);
+}
diff --git a/webapps/scripting/client/desktop.js b/webapps/scripting/client/desktop.js
new file mode 100644
index 0000000000..9e1a342936
--- /dev/null
+++ b/webapps/scripting/client/desktop.js
@@ -0,0 +1,121 @@
+/*
+ Windows, tabs, and general widgetry for SWAT.
+
+ Copyright (C) Deryck Hodge 2005
+ released under the GNU GPL Version 2 or later
+*/
+
+/* Qooxdoo's browser sniffer doesn't distinguish IE version.
+We'll cover IE 6 for now, but these checks need to be
+revisited for fuller browser coverage. */
+var browser = QxClient().engine;
+
+// DocX/Y returns the width/height of the page in browser
+function docX()
+{
+ var x;
+ if (browser != "mshtml") {
+ x = window.innerWidth;
+ } else {
+ x = document.documentElement.clientWidth;
+ }
+ return x;
+}
+
+function docY()
+{
+ var y;
+ if (browser != "mshtml") {
+ y = window.innerHeight;
+ } else {
+ y = document.documentElement.clientHeight;
+ }
+ return y;
+}
+
+// If given a number, sizeX/Y returns in pixels a percentage of the browser
+// window. If given a Window object, sizeX/Y returns the size of that object.
+function sizeX(s)
+{
+ var sX;
+
+ if (typeof(s) == 'number') {
+ sX = Math.floor(docX() * s);
+ } else {
+ sX = s.getMinWidth();
+ }
+
+ return sX;
+}
+
+function sizeY(s)
+{
+ var sY;
+ if (typeof(s) == 'number') {
+ sY = Math.floor(docY() * s);
+ } else {
+ sY = s.getMinHeight();
+ }
+
+ return sY;
+}
+
+function getPosX(win)
+{
+ var y = Math.floor( (docY() - sizeY(win)) * Math.random() );
+ return y;
+}
+
+function getPosY(win)
+{
+ var x = Math.floor( (docX() - sizeX(win)) * Math.random() );
+ return x;
+}
+
+function openIn(e)
+{
+ var blank = new Window("New Menu");
+ e.add(blank);
+ blank.setVisible(true);
+}
+
+function Window(h, src, s)
+{
+ this.self = new QxWindow(h);
+
+ // Settings for all windows
+ if (s) {
+ this.self.setMinWidth(sizeX(s));
+ this.self.setMinHeight(sizeY(s));
+ }
+ this.self.setTop(getPosX(this.self));
+ this.self.setLeft(getPosY(this.self));
+
+ this.self.addEventListener("contextmenu", contextMenu);
+
+ return this.self;
+}
+
+function SmallWindow(h, src)
+{
+ this.self = new Window(h, src, .20);
+ return this.self;
+}
+
+function StandardWindow(h, src)
+{
+ this.self = new Window(h, src, .45);
+ return this.self;
+}
+
+function LargeWindow(h, src)
+{
+ this.self = new Window(h, src, .70);
+ return this.self;
+}
+
+Window.small = SmallWindow;
+Window.standard = StandardWindow;
+Window.large = LargeWindow;
+
+
diff --git a/webapps/scripting/client/encoder.js b/webapps/scripting/client/encoder.js
new file mode 100644
index 0000000000..4aa4cc0954
--- /dev/null
+++ b/webapps/scripting/client/encoder.js
@@ -0,0 +1,84 @@
+/*
+ client side js functions for encoding/decoding objects into linear strings
+
+ Copyright Andrew Tridgell 2005
+ released under the GNU GPL Version 2 or later
+*/
+/*
+ usage:
+
+ enc = encodeObject(obj);
+ obj = decodeObject(enc);
+
+ The encoded format of the object is a string that is safe to
+ use in URLs
+
+ Note that only data elements are encoded, not functions
+*/
+
+function count_members(o) {
+ var i, count = 0;
+ for (i in o) {
+ count++;
+ }
+ return count;
+}
+
+function encodeObject(o) {
+ var i, r = count_members(o) + ":";
+ for (i in o) {
+ var t = typeof(o[i]);
+ if (t == 'object') {
+ r = r + "" + i + ":" + t + ":" + encodeObject(o[i]);
+ } else if (t == 'string') {
+ var s = encodeURIComponent(o[i]).replace(/%/g,'#');
+ r = r + "" + i + ":" + t + ":" + s + ":";
+ } else if (t == 'boolean' || t == 'number') {
+ r = r + "" + i + ":" + t + ":" + o[i] + ":";
+ } else if (t == 'undefined' || t == 'null') {
+ r = r + "" + i + ":" + t + ":";
+ } else if (t != 'function') {
+ alert("Unable to encode type " + t);
+ }
+ }
+ return r;
+}
+
+function decodeObjectArray(a) {
+ var o = new Object();
+ var i, count = a[a.i]; a.i++;
+ for (i=0;i<count;i++) {
+ var name = a[a.i]; a.i++;
+ var type = a[a.i]; a.i++;
+ var value;
+ if (type == 'object') {
+ o[name] = decodeObjectArray(a);
+ } else if (type == "string") {
+ value = decodeURIComponent(a[a.i].replace(/#/g,'%')); a.i++;
+ o[name] = value;
+ } else if (type == "boolean") {
+ value = a[a.i]; a.i++;
+ if (value == 'true') {
+ o[name] = true;
+ } else {
+ o[name] = false;
+ }
+ } else if (type == "undefined") {
+ o[name] = undefined;
+ } else if (type == "null") {
+ o[name] = null;
+ } else if (type == "number") {
+ value = a[a.i]; a.i++;
+ o[name] = value * 1;
+ } else {
+ alert("Unable to delinearise type " + type);
+ }
+ }
+ return o;
+}
+
+function decodeObject(str) {
+ var a = str.split(':');
+ a.i = 0;
+ return decodeObjectArray(a);
+}
diff --git a/webapps/scripting/client/js_scripts.js b/webapps/scripting/client/js_scripts.js
new file mode 100644
index 0000000000..1c6e5806f4
--- /dev/null
+++ b/webapps/scripting/client/js_scripts.js
@@ -0,0 +1,60 @@
+/*
+ Beginnnigs of a script manager for SWAT.
+
+ Copyright (C) Deryck Hodge 2005
+ released under the GNU GPL Version 2 or later
+*/
+
+var head = document.getElementsByTagName('head')[0];
+var scripts = document.getElementsByTagName('script');
+
+function __has_js_script(file)
+{
+ var i;
+ for (i=0; i<scripts.length; i++) {
+ if (scripts[i].src.indexOf(file) > -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
+
+function __get_js_script(file)
+{
+ var i;
+ for (i=0; i<scripts.length; i++) {
+ if (scripts[i].src.indexOf(file) > -1) {
+ return scripts[i];
+ }
+ }
+}
+
+function __add_js_script(path)
+{
+ // Create a unique ID for this script
+ var srcID = new Date().getTime();
+
+ var script = document.createElement('script');
+ script.type = 'text/javascript';
+ script.id = srcID;
+
+ head.appendChild(script);
+
+ // IE works only with the path set after appending to the document
+ document.getElementById(srcID).src = path;
+}
+
+function __remove_js_script(path)
+{
+ var script = __get_js_script(path);
+ script.parentNode.removeChild(script);
+}
+
+document.js = new Object();
+document.js.scripts = scripts;
+document.js.hasScript = __has_js_script;
+document.js.getScript = __get_js_script;
+document.js.add = __add_js_script;
+document.js.remove = __remove_js_script;
+
diff --git a/webapps/scripting/client/regedit.js b/webapps/scripting/client/regedit.js
new file mode 100644
index 0000000000..9175017c2e
--- /dev/null
+++ b/webapps/scripting/client/regedit.js
@@ -0,0 +1,160 @@
+/*
+ client side js functions for registry editing
+
+ Copyright Andrew Tridgell 2005
+ released under the GNU GPL Version 2 or later
+*/
+
+
+/*
+ callback from the key enumeration call
+*/
+function __folder_keys(fParent, list)
+{
+ var i;
+ if (fParent.working == 1) {
+ fParent.working = 0;
+ fParent.removeAll();
+ }
+ for (i=0;i<list.length;i++) {
+ var fChild;
+ fChild = new QxTreeFolder(list[i]);
+ fParent.add(fChild);
+ fChild.binding = fParent.binding;
+ if (fParent.reg_path == '\\') {
+ fChild.reg_path = list[i];
+ } else {
+ fChild.reg_path = fParent.reg_path + '\\' + list[i];
+ }
+ fChild.working = 1;
+ fChild.add(new QxTreeFolder('Working ...'));
+ fChild.addEventListener("click", function() {
+ var el = this; __folder_click(el);
+ });
+ }
+ fParent.setOpen(1);
+}
+
+/*
+ callback from the key enumeration call
+*/
+function __folder_values(fParent, list)
+{
+ var i;
+ if (list.length == 0) {
+ return;
+ }
+ if (fParent.working == 1) {
+ fParent.working = 0;
+ fParent.removeAll();
+ }
+ for (i=0;i<list.length;i++) {
+ var fChild;
+ fChild = new QxTreeFile(list[i].name);
+ fChild.parent = fParent;
+ fChild.details = list[i];
+ fParent.add(fChild);
+ }
+ fParent.setOpen(1);
+}
+
+/*
+ called when someone clicks on a folder
+*/
+function __folder_click(node)
+{
+ if (!node.populated) {
+ node.populated = true;
+ server_call_url("/scripting/server/regedit.esp", 'enum_keys',
+ function(list) { __folder_keys(node, list); },
+ node.binding, node.reg_path);
+ server_call_url("/scripting/server/regedit.esp", 'enum_values',
+ function(list) { __folder_values(node, list); },
+ node.binding, node.reg_path);
+ }
+}
+
+/* return a registry tree for the given server */
+function __registry_tree(binding)
+{
+ var tree = new QxTree("registry: " + binding);
+ tree.binding = binding;
+ tree.reg_path = "\\";
+ tree.populated = false;
+ with(tree) {
+ setBackgroundColor(255);
+ setBorder(QxBorder.presets.inset);
+ setOverflow("scroll");
+ setStyleProperty("padding", "2px");
+ setWidth("50%");
+ setHeight("90%");
+ setTop("10%");
+ }
+ tree.addEventListener("click", function() {
+ var el = this; __folder_click(el);
+ });
+ return tree;
+}
+
+/*
+ the table of values
+*/
+function __values_table()
+{
+ var headings = new Array("Name", "Type", "Size", "Value");
+ var table = document.createElement('table');
+ table.border = "1";
+ var body = document.createElement('tbody');
+ table.appendChild(body);
+ var th = document.createElement('th');
+ for (var i=0;i<headings.length;i++) {
+ var td = document.createElement('td');
+ td.appendChild(document.createTextNode(headings[i]));
+ th.appendChild(td);
+ }
+ body.appendChild(th);
+ return table;
+}
+
+/*
+ create a registry editing widget and return it as a object
+*/
+function regedit_widget(binding)
+{
+ var fieldSet = new QxFieldSet();
+
+ fieldSet.binding = binding;
+
+ with(fieldSet) {
+ setWidth("100%");
+ setHeight("100%");
+ };
+
+ var gl = new QxGridLayout("auto,auto,auto,auto,auto", "50%,50%");
+ gl.setEdge(0);
+ gl.setCellPaddingTop(3);
+ gl.setCellPaddingBottom(3);
+
+ var t = __registry_tree(fieldSet.binding);
+
+ function change_binding(e) {
+ fieldSet.binding = e.getNewValue();
+ srv_printf("changed binding to %s\\n", fieldSet.binding);
+ gl.remove(t);
+ t = __registry_tree(fieldSet.binding);
+ gl.add(t, { row : 2, col : 1 });
+ }
+
+ var b = new QxTextField(fieldSet.binding);
+ b.addEventListener("changeText", change_binding);
+
+ var values = new __values_table();
+
+ gl.add(b, { row : 1, col : 1 });
+ gl.add(t, { row : 2, col : 1 });
+// gl.add(values, { row : 2, col : 2 });
+
+ fieldSet.add(gl);
+
+ return fieldSet;
+};
diff --git a/webapps/scripting/client/status.js b/webapps/scripting/client/status.js
new file mode 100644
index 0000000000..31ee31c43b
--- /dev/null
+++ b/webapps/scripting/client/status.js
@@ -0,0 +1,40 @@
+/*
+ server status library for SWAT
+
+ released under the GNU GPL Version 2 or later
+*/
+
+
+// Format for a server status table
+var s = [
+ { id : "server",
+ label : "Server",
+ content: "text",
+ defaultValue : "-",
+ width : 100
+ },
+
+ { id : "status",
+ label : "Status",
+ content: "text",
+ defaultValue : "-",
+ width: 100
+ }
+];
+
+function __load_status_table(info, container)
+{
+ var table = new QxListView(s);
+ var i;
+ for (i in info) {
+ table.addData( {server : i, status : info[i]} );
+ }
+ container.add(table);
+ container.setVisible(true);
+}
+
+function getServerStatus(container)
+{
+ server_call_url("/scripting/server/status.esp", 'serverInfo',
+ function(info) { __load_status_table(info, container); });
+}
diff --git a/webapps/scripting/common.js b/webapps/scripting/common.js
new file mode 100644
index 0000000000..fe25287a74
--- /dev/null
+++ b/webapps/scripting/common.js
@@ -0,0 +1,153 @@
+/*
+ js functions and code common to all pages
+*/
+
+/* define some global variables for this request */
+global.page = new Object();
+
+/* fill in some defaults */
+global.page.title = "Samba Web Administration Tool";
+
+libinclude("base.js");
+
+/* to cope with browsers that don't support cookies we append the sessionid
+ to the URI */
+global.SESSIONURI = "";
+if (request['COOKIE_SUPPORT'] != "True") {
+ global.SESSIONURI="?SwatSessionId=" + request['SESSION_ID'];
+}
+
+/*
+ possibly adjust a local URI to have the session id appended
+ used for browsers that don't support cookies
+*/
+function session_uri(uri) {
+ return uri + global.SESSIONURI;
+}
+
+/*
+ like printf, but to the web page
+*/
+function writef()
+{
+ write(vsprintf(arguments));
+}
+
+/*
+ like writef with a <br>
+*/
+function writefln()
+{
+ write(vsprintf(arguments));
+ write("<br/>\n");
+}
+
+
+/* if the browser was too dumb to set the HOST header, then
+ set it now */
+if (headers['HOST'] == undefined) {
+ headers['HOST'] = server['SERVER_HOST'] + ":" + server['SERVER_PORT'];
+}
+
+/*
+ show the page header. page types include "plain" and "column"
+*/
+function page_header(pagetype, title, menu) {
+ global.page.pagetype = pagetype;
+ global.page.title = title;
+ global.page.menu = menu;
+ include("/scripting/header_" + pagetype + ".esp");
+}
+
+/*
+ show the page footer, getting the page type from page.pagetype
+ set in page_header()
+*/
+function page_footer() {
+ include("/scripting/footer_" + global.page.pagetype + ".esp");
+}
+
+
+/*
+ check if a uri is one of the 'always allowed' pages, even when not logged in
+ This allows the login page to use the same style sheets and images
+*/
+function always_allowed(uri) {
+ var str = string_init();
+
+ /* allow jsonrpc-based applications to do their own authentication */
+ var s = str.split('/', uri);
+ if (s[0] == "" && s[1] == 'apps') {
+ return true;
+ }
+
+ var s = str.split('.', uri);
+ if (s.length < 2) {
+ return false;
+ }
+
+ var ext = s[s.length-1];
+ var allowed = new Array("ico", "gif", "png","css", "js");
+ for (i in allowed) {
+ if (allowed[i] == ext) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/*
+ display a table element
+*/
+function table_element(i, o) {
+ write("<tr><td>" + i + "</td><td>");
+ if (typeof(o[i]) == "object") {
+ var j, first;
+ first = true;
+ for (j in o[i]) {
+ if (first == false) {
+ write("<br />");
+ }
+ write(o[i][j]);
+ first = false;
+ }
+ } else {
+ write(o[i]);
+ }
+ write("</td></tr>\n");
+}
+
+/*
+ display a ejs object as a table. The header is optional
+*/
+function simple_table(v) {
+ if (v.length == 0) {
+ return;
+ }
+ write("<table class=\"data\">\n");
+ var r;
+ for (r in v) {
+ table_element(r, v);
+ }
+ write("</table>\n");
+}
+
+/*
+ display an array of objects, with the header for each element from the given
+ attribute
+*/
+function multi_table(array, header) {
+ var i, n;
+ write("<table class=\"data\">\n");
+ for (i=0;i<array.length;i++) {
+ var r, v = array[i];
+ write('<tr><th colspan="2">' + v[header] + "</th></tr>\n");
+ for (r in v) {
+ if (r != header) {
+ table_element(r, v);
+ }
+ }
+ }
+ write("</table>\n");
+}
+
diff --git a/webapps/scripting/footer_columns.esp b/webapps/scripting/footer_columns.esp
new file mode 100644
index 0000000000..7b5baaf0c8
--- /dev/null
+++ b/webapps/scripting/footer_columns.esp
@@ -0,0 +1,7 @@
+<%
+ /* footer for columns page type */
+%>
+</div>
+</div>
+</body>
+</html>
diff --git a/webapps/scripting/footer_desktop.esp b/webapps/scripting/footer_desktop.esp
new file mode 100644
index 0000000000..5e563dab88
--- /dev/null
+++ b/webapps/scripting/footer_desktop.esp
@@ -0,0 +1,6 @@
+<%
+ /* footer for desktop page type */
+%>
+
+</body>
+</html>
diff --git a/webapps/scripting/footer_plain.esp b/webapps/scripting/footer_plain.esp
new file mode 100644
index 0000000000..31ef8dd4ee
--- /dev/null
+++ b/webapps/scripting/footer_plain.esp
@@ -0,0 +1,7 @@
+<%
+ /* footer for plain page type */
+%>
+</div>
+</div>
+</body>
+</html>
diff --git a/webapps/scripting/forms.js b/webapps/scripting/forms.js
new file mode 100644
index 0000000000..2de9e34462
--- /dev/null
+++ b/webapps/scripting/forms.js
@@ -0,0 +1,112 @@
+/*
+ js functions for forms
+*/
+
+
+/*
+ display a simple form from a ejs Form object
+ caller should fill in
+ f.name = form name
+ f.action = action to be taken on submit (optional, defaults to current page)
+ f.class = css class (optional, defaults to 'form')
+ f.submit = an array of submit labels
+ f.add(name, label, [type], [value]) =
+ Add another element
+ f.element[i].label = element label
+ f.element[i].name = element name (defaults to label)
+ f.element[i].type = element type (defaults to text)
+ f.element[i].value = current value (optional, defaults to "")
+ */
+function form_display() {
+ var f = this;
+ var i, size = 20;
+ write('<form name="' + f.name +
+ '" method="post" action="' + f.action +
+ '" class="' + f.class + '">\n');
+ if (f.element.length > 0) {
+ write("<table>\n");
+ }
+ for (i in f.element) {
+ var e = f.element[i];
+ if (e.name == undefined) {
+ e.name = e.label;
+ }
+ if (e.value == undefined) {
+ e.value = "";
+ }
+ if (strlen(e.value) > size) {
+ size = strlen(e.value) + 4;
+ }
+ }
+ for (i in f.element) {
+ var e = f.element[i];
+ write("<tr>");
+ write("<td>" + e.label + "</td>");
+ if (e.type == "select") {
+ write('<td><select name="' + e.name + '">\n');
+ for (s in e.list) {
+ if (e.value == e.list[s]) {
+ write('<option selected=selected>' + e.list[s] + '</option>\n');
+ } else {
+ write('<option>' + e.list[s] + '</option>\n');
+ }
+ }
+ write('</select></td>\n');
+ } else {
+ var sizestr = "";
+ if (e.type == "text" || e.type == "password") {
+ sizestr = sprintf('size="%d"', size);
+ }
+ writef('<td><input name="%s" type="%s" value="%s" %s /></td>\n',
+ e.name, e.type, e.value, sizestr);
+ }
+ write("</tr>");
+ }
+ if (f.element.length > 0) {
+ write("</table>\n");
+ }
+ for (i in f.submit) {
+ write('<input name="submit" type="submit" value="' + f.submit[i] + '" />\n');
+ }
+ write("</form>\n");
+}
+
+function __addMethod(name, label)
+{
+ var f = this;
+ var i = f.element.length;
+ f.element[i] = new Object();
+ f.element[i].name = name;
+ f.element[i].label = label;
+ f.element[i].type = "text";
+ f.element[i].value = "";
+ if (arguments.length > 2) {
+ f.element[i].type = arguments[2];
+ }
+ if (arguments.length > 3) {
+ f.element[i].value = arguments[3];
+ }
+}
+
+/*
+ create a Form object with the defaults filled in, ready for display()
+ */
+function FormObj(name, num_elements, num_submits)
+{
+ var f = new Object();
+ f.name = name;
+ f.element = new Array(num_elements);
+ f.submit = new Array(num_submits);
+ f.action = session_uri(request.REQUEST_URI);
+ f.class = "defaultform";
+ f.add = __addMethod;
+ for (i in f.element) {
+ f.element[i] = new Object();
+ f.element[i].type = "text";
+ f.element[i].value = "";
+ }
+ f.display = form_display;
+
+ return f;
+}
+
diff --git a/webapps/scripting/general_calls.esp b/webapps/scripting/general_calls.esp
new file mode 100644
index 0000000000..f17c43205a
--- /dev/null
+++ b/webapps/scripting/general_calls.esp
@@ -0,0 +1,25 @@
+<%
+/*
+ used for general purpose calls
+*/
+libinclude("server_call.js");
+
+/* register a call for clients to make */
+var call = servCallObj();
+
+/*
+ a remote printf, for displaying stuff on smbd stdout
+*/
+function srv_printf()
+{
+ var s = string_init();
+ print(s.vsprintf(arguments));
+ return undefined;
+}
+
+/* add some basic calls */
+call.add('srv_printf', srv_printf);
+
+/* run the function that was asked for */
+call.run();
+%>
diff --git a/webapps/scripting/header_columns.esp b/webapps/scripting/header_columns.esp
new file mode 100644
index 0000000000..2fd57c400c
--- /dev/null
+++ b/webapps/scripting/header_columns.esp
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<script type="text/javascript" src="/style/qooxdoo/widgets/qooxdoo.js"></script>
+
+ <title>@@global.page.title</title>
+
+<link rel="stylesheet" href="/style/common.css" type="text/css" media="all" />
+<link rel="stylesheet" href="/style/columns.css" type="text/css" media="all" />
+<link rel="stylesheet" href="/style/swat.css" type="text/css" media="all" />
+<link rel="stylesheet" href="/style/qooxdoo/layouts/application.css" type="text/css" media="all" />
+<link rel="shortcut icon" href="/images/favicon.ico" />
+
+<!--[if gte IE 5.5]>
+ <style type="text/css">
+ /*<![CDATA[*/
+ .logo_hack {
+filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/logo.png',sizingMethod='scale');
+ }
+ /*]]>*/
+ </style>
+<![endif]-->
+
+<!--[if lte IE 5]>
+ <style type="text/css">
+ /*<![CDATA[*/
+ .logo_hack {
+ background-image:url(/images/logo.gif);
+ background-position:center;
+ background-repeat:no-repeat;
+ top:23.5px;
+ left:-10px;
+ }
+ /*]]>*/
+ </style>
+<![endif]-->
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="Content-Language" content="en-us" />
+
+</head>
+
+
+<body>
+
+<div id="banner">
+ <div class="stripe"></div>
+ <div class="logout">
+ <b>logged in as @@session.authinfo.username</b>
+ <form method="post" action="/logout.esp@@global.SESSIONURI">
+ <input type="submit" value="Logout" />
+ </form>
+ </div>
+</div>
+
+<div id="logo">
+ <div class="logo_hack"><a href="/@@global.SESSIONURI"><img src="/images/linkpad.gif" alt="SWAT" /></a></div>
+</div>
+
+<div class="slogan">
+ <h4>Samba Web Administration Tool</h4>
+</div>
+
+<div id="nav">
+ <%
+ include("/menu.js");
+ if (form['menu']) {
+ global.page.menu = form['menu'];
+ }
+ swat_menus[global.page.menu].display();
+ if (global.page.menu != "main") {
+ write('<a href="/">Main Menu</a>');
+ }
+ %>
+</div>
+
+<div id="links">
+ <% swat_menus.docs.display(); %>
+</div>
+
+
+<div id="content">
+ <div id="middle" class="center">
diff --git a/webapps/scripting/header_desktop.esp b/webapps/scripting/header_desktop.esp
new file mode 100644
index 0000000000..9d02ab323b
--- /dev/null
+++ b/webapps/scripting/header_desktop.esp
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="Content-Language" content="en-us" />
+
+ <title>@@global.page.title</title>
+
+<link rel="stylesheet" href="/style/qooxdoo/layouts/application.css" type="text/css" media="all" />
+<link rel="shortcut icon" href="/images/favicon.ico" />
+
+<script type="text/javascript" src="/style/qooxdoo/widgets/qooxdoo.js"></script>
+
+<style type="text/css" media="screen">
+body {
+ background-color:#3A6EA5;
+}
+</style>
+
+</head>
+
+<body>
+
diff --git a/webapps/scripting/header_plain.esp b/webapps/scripting/header_plain.esp
new file mode 100644
index 0000000000..8dd378910e
--- /dev/null
+++ b/webapps/scripting/header_plain.esp
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+ <title>@@global.page.title</title>
+
+<link rel="stylesheet" href="/style/common.css" type="text/css" media="all" />
+<link rel="stylesheet" href="/style/columns.css" type="text/css" media="all" />
+<link rel="stylesheet" href="/style/swat.css" type="text/css" media="all" />
+<link rel="shortcut icon" href="/images/favicon.ico" />
+
+<!--[if gte IE 5.5]>
+ <style type="text/css">
+ /*<![CDATA[*/
+ .logo_hack {
+filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/logo.png',sizingMethod='scale');
+ }
+ /*]]>*/
+ </style>
+<![endif]-->
+
+<!--[if lte IE 5]>
+ <style type="text/css">
+ /*<![CDATA[*/
+ .logo_hack {
+ background-image:url(/images/logo.gif);
+ background-position:center;
+ background-repeat:no-repeat;
+ top:23.5px;
+ left:-10px;
+ }
+ /*]]>*/
+ </style>
+<![endif]-->
+
+</head>
+
+
+<body>
+
+<div id="banner">
+ <div class="stripe"></div>
+</div>
+
+<div id="logo">
+ <div class="logo_hack"><a href="/"><img src="/images/linkpad.gif" alt="SWAT" /></a></div>
+</div>
+
+<div class="slogan">
+ <h4>Samba Web Administration Tool</h4>
+</div>
+
+<div id="content">
+ <div class="center">
diff --git a/webapps/scripting/menus.js b/webapps/scripting/menus.js
new file mode 100644
index 0000000000..ddd97c4ca3
--- /dev/null
+++ b/webapps/scripting/menus.js
@@ -0,0 +1,53 @@
+/*
+ menu object for SWAT
+*/
+
+/*
+ display a menu object. Currently only the "simple", "vertical" menu style
+ is supported
+*/
+function menu_display() {
+ var i, m = this;
+ assert(m.style == "simple" && m.orientation == "vertical");
+ write('<div class="' + m.class + '">\n');
+ write("<i>" + m.name + "</i><br /><ul>\n");
+ for (i = 0; i < m.element.length; i++) {
+ var e = m.element[i];
+ write("<li><a href=\"" + e.link + "\">" + e.label + "</a></li>\n");
+ }
+ write("</ul></div>\n");
+}
+
+
+/*
+ create a menu object with the defaults filled in, ready for display_menu()
+ */
+function MenuObj(name, num_elements)
+{
+ var i, o = new Object();
+ o.name = name;
+ o.class = "menu";
+ o.style = "simple";
+ o.orientation = "vertical"
+ o.element = new Array(num_elements);
+ for (i in o.element) {
+ o.element[i] = new Object();
+ }
+ o.display = menu_display;
+ return o;
+}
+
+/*
+ return a menu object created using a title, followed by
+ a set of label/link pairs
+*/
+function simple_menu() {
+ var i, m = MenuObj(arguments[0], (arguments.length-1)/2);
+ for (i=0;i<m.element.length;i++) {
+ var ndx = i*2;
+ m.element[i].label = arguments[ndx+1];
+ m.element[i].link = arguments[ndx+2];
+ }
+ return m;
+}
+
diff --git a/webapps/scripting/preauth.esp b/webapps/scripting/preauth.esp
new file mode 100644
index 0000000000..489f6b5004
--- /dev/null
+++ b/webapps/scripting/preauth.esp
@@ -0,0 +1,17 @@
+<%
+include("/scripting/common.js");
+
+/* this script is called on every web request. If it produces any
+ output at all then that output is returned and the requested page
+ is not given or processed.
+*/
+if (server['SERVER_PROTOCOL'] == "http" &&
+ server['TLS_SUPPORT'] == "True") {
+ write("redirect to https");
+ redirect("https://" + headers['HOST'] + request['REQUEST_URI']);
+} else if (always_allowed(request['REQUEST_URI']) != true &&
+ session['AUTHENTICATED'] == undefined) {
+ /* present the login page */
+ include("/login.esp");
+}
+%>
diff --git a/webapps/scripting/server/regedit.esp b/webapps/scripting/server/regedit.esp
new file mode 100644
index 0000000000..58ba695c47
--- /dev/null
+++ b/webapps/scripting/server/regedit.esp
@@ -0,0 +1,51 @@
+<%
+/*
+ server side AJAJ functions for registry editing. These go along
+ with scripting/client/regedit.js
+*/
+libinclude("base.js");
+libinclude("winreg.js");
+libinclude("server_call.js");
+
+/*
+ server side call to return a listing of keys in a winreg path
+*/
+function enum_keys(binding, path) {
+ printf("enum_keys(%s, %s)\n", binding, path);
+ var reg = winregObj();
+
+ reg.credentials = session.authinfo.credentials;
+
+ var status = reg.connect(binding);
+ if (status.is_ok != true) {
+ printVars(status);
+ return undefined;
+ }
+ return reg.enum_path(path);
+}
+
+/*
+ server side call to return a listing of values in a winreg path
+*/
+function enum_values(binding, path) {
+ printf("enum_values(%s, %s)\n", binding, path);
+ var reg = winregObj();
+
+ reg.credentials = session.authinfo.credentials;
+
+ var status = reg.connect(binding);
+ if (status.is_ok != true) {
+ printVars(status);
+ return undefined;
+ }
+ return reg.enum_values(path);
+}
+
+/* register a call for clients to make */
+var call = servCallObj();
+call.add('enum_keys', enum_keys);
+call.add('enum_values', enum_values);
+
+/* run the function that was asked for */
+call.run();
+%>
diff --git a/webapps/scripting/server/status.esp b/webapps/scripting/server/status.esp
new file mode 100644
index 0000000000..8ca2067d49
--- /dev/null
+++ b/webapps/scripting/server/status.esp
@@ -0,0 +1,27 @@
+<%
+
+libinclude("management.js");
+libinclude("server_call.js");
+
+function serverInfo()
+{
+ var info = new Object();
+ info["NBT Server"] = server_status("nbt");
+ info["WINS Server"] = server_status("wins");
+ info["CLDAP Server"] = server_status("cldap");
+ info["Kerberos Server"] = server_status("kdc");
+ info["SMB Server"] = stream_server_status("smb");
+ info["LDAP Server"] = stream_server_status("ldap");
+ info["RPC Server"] = stream_server_status("rpc");
+
+ return info;
+}
+
+/* register a call for clients to make */
+var call = servCallObj();
+call.add('serverInfo', serverInfo);
+
+/* run the function that was asked for */
+call.run();
+
+%>
diff --git a/webapps/scripting/test.ejs b/webapps/scripting/test.ejs
new file mode 100644
index 0000000000..8e7047f51c
--- /dev/null
+++ b/webapps/scripting/test.ejs
@@ -0,0 +1,10 @@
+
+/*
+ some test ejs code
+*/
+function showArray(name, array) {
+ write("<h3>Array: " + name + "</h3>\n");
+ for (v in array) {
+ write(name + "[" + v + "]=" + array[v] + "<br/>\n");
+ }
+}
diff --git a/webapps/scripting/test.esp b/webapps/scripting/test.esp
new file mode 100644
index 0000000000..614a42410c
--- /dev/null
+++ b/webapps/scripting/test.esp
@@ -0,0 +1,6 @@
+<h3>A esp include file</h3>
+<%
+ function testfn(test) {
+ return "the argument was " + test;
+ }
+%>
diff --git a/webapps/style/columns.css b/webapps/style/columns.css
new file mode 100644
index 0000000000..e78da9b3d7
--- /dev/null
+++ b/webapps/style/columns.css
@@ -0,0 +1,73 @@
+/*
+ columns.css
+ Copyright (C) 2004-2005 Deryck Hodge <deryck@samba.org>
+
+ Creates a puesdo-three-column view.
+
+ You may freely use and modify the styles here, but if you
+ intend to recreate the samba.org look exactly, please ask
+ permission first.
+*/
+
+
+/* Middle content column
+***********************************************************/
+#content {
+ position:absolute;
+ top:100px;
+ margin:0 20% 0 175px;
+ padding-top:30px;
+ padding-left:35px;
+ padding-bottom:50px;
+ padding-right:15px;
+ background-color:#FFF;
+ border-left:1px solid #FFFF64;
+ border-right:1px solid #FFFF64;
+}
+* html #content {
+ width:51%;
+ margin-right:0;
+}
+#content ul {
+ list-style-type:none;
+}
+
+
+/* Misc
+************************************************************/
+.headline {
+ margin-left:20px;
+ font-style:italic;
+}
+.plugs {
+ font-style:italic;
+ text-align:center;
+ border-top:2px groove #3878CD;
+ border-bottom:2px groove #3878CD;
+ padding:10px;
+ margin-top:100px;
+}
+.plugs p {
+ padding:30px;
+}
+.plugs img {
+ float:left;
+}
+.request {
+ margin-top:50px;
+ font-style:italic;
+ font-size:small;
+}
+#noswp img {
+ border:1px solid #3868CD;
+ width:370px;
+ height:90px;
+}
+#noswp a:hover {
+ background-color:transparent;
+}
+#noswp {
+ width:auto;
+ text-align:center;
+ margin:10px 0 25px 0;
+}
diff --git a/webapps/style/common.css b/webapps/style/common.css
new file mode 100644
index 0000000000..545ffe930c
--- /dev/null
+++ b/webapps/style/common.css
@@ -0,0 +1,266 @@
+/*
+ common.css
+ Copyright (C) 2004-2005 Deryck Hodge <deryck@samba.org>
+
+ Basic styles common to all of samba.org, including VirtualHosts
+ bugzilla.samba.org, build.samba.org, and news.samba.org.
+
+ You may freely use and modify the styles here, but if you
+ intend to recreate the samba.org look exactly, please ask
+ permission first.
+*/
+
+
+/* Base elements
+***********************************************************/
+body {
+ background:url(/images/stripes.png) repeat-x 0 0;
+ margin:0;
+ padding:0;
+ background-color:#E5E9F5;
+ font-family:Lucidasans, Helvetica, Verdana, sans-serif;
+ font-size:medium;
+ color:#000;
+}
+body#news {
+ background:none;
+ background-color:#FFF;
+}
+blockquote {
+ margin:35px;
+ padding:15px;
+ border-left:2px groove #CCC;
+ border-top:2px groove #CCC;
+}
+img {
+ border:0;
+}
+
+
+
+/* Headings
+***********************************************************/
+h1 {
+ font-size:x-large;
+}
+h2 {
+ text-align:left;
+ color:#FFFF64;
+ font-size:large;
+ background-color:#3878CD;
+ margin-top:60px;
+ margin-bottom:15px;
+ padding:2px;
+ padding-left:5px;
+}
+h3 {
+ font-size:medium;
+}
+h5 {
+ font-size:small;
+ text-align:right;
+ display:inline;
+}
+* html h5 {
+ padding-right:4px;
+}
+h6 {
+ font-size:small;
+ text-align:right;
+ text-align:right;
+}
+h6 a {
+ margin-right:3px;
+}
+
+
+/* Lists
+***********************************************************/
+ol li {
+ margin-bottom:12px;
+}
+
+
+/* Tables
+***********************************************************/
+table.real thead {
+ background-color: #E5E9F5;
+}
+table.real th,
+table.real td {
+ border: 1px solid #3878CD;
+ padding: 2px;
+}
+table.real {
+ border: 2px solid #3878CD;
+ background-color: #F5F8FF;
+}
+a:link:hover {
+ color:#CC0033;
+ background-color:#FFFF64;
+}
+
+
+/* Header (yellow and blue stripes)
+***********************************************************/
+#banner {
+ position:absolute;
+ top:0;
+ left:0;
+ height:95px;
+ width:100%;
+ padding-top:4px;
+ z-index:1;
+}
+.srch {
+ text-align:right;
+ margin:0 5px 0 0;
+}
+.srch form {
+ display:inline;
+}
+
+
+/* Slogan ("Opening windows to a wider world")
+***********************************************************/
+.slogan {
+ position:absolute;
+ left:187px;
+ z-index:1;
+}
+html>body .slogan { /**** Opera needs its own rule *********/
+ top:100px;
+}
+:root .slogan { /**** Undo the Opera rule for all other browsers ****/
+ top:80px;
+}
+* html .slogan { /** Then, give IE 5/6 its own rule ****** */
+ top:100px;
+}
+
+
+/* Logo (with hacks for PNG transparency across browsers)
+***********************************************************/
+#logo>.logo_hack {
+ background-image:url(/images/logo.png);
+ background-position:center;
+ background-repeat:no-repeat;
+}
+.logo_hack {
+ position:absolute;
+ top:25px;
+ left:0;
+ width:250px;
+ height:119px;
+ padding:0;
+ margin:0;
+ z-index:1;
+}
+.logo_hack a:hover {
+ background:transparent;
+}
+
+
+/* Nav menu
+***********************************************************/
+#nav {
+ position:absolute;
+ top:152px;
+ left:20px;
+ width:180px;
+ background-color:#F5F8FF;
+ border:2px groove #3878CD;
+ padding:0;
+ padding-bottom:5px;
+ margin:0;
+ z-index:1;
+}
+#nav ul {
+ list-style-type:none;
+ text-align:center;
+ padding:0;
+ margin:0;
+}
+#nav a,
+#nav a:link,
+#nav a:visited {
+ display:block;
+ height:20px;
+ font-size:small;
+ color:#2B5C9F;
+}
+#nav a:hover {
+ color:#FFF;
+ background-color:#3878CD;
+}
+#nav a:active {
+ color:#FFFF64;
+ background-color:#3878CD;
+ font-size:14px;
+}
+#nav img {
+ padding:0;
+ margin:0;
+ width:180px;
+ height:30px;
+}
+
+
+/* links menu
+***********************************************************/
+#links {
+ position:absolute;
+ top:152px;
+ left:81%;
+ width:180px;
+ padding:0;
+ width:18%;
+ background-color:#F5F8FF;
+ border:2px groove #3878CD;
+ padding:0;
+ padding-bottom:5px;
+ margin:0;
+ z-index:1;
+}
+#links ul {
+ list-style-type:none;
+ text-align:center;
+ padding:0;
+ margin:0;
+}
+#links a,
+#links a:link,
+#links a:visited {
+ display:block;
+ height:20px;
+ font-size:small;
+ color:#2B5C9F;
+}
+#links a:hover {
+ color:#FFF;
+ background-color:#3878CD;
+}
+#links a:active {
+ color:#FFFF64;
+ background-color:#3878CD;
+ font-size:14px;
+}
+#links img {
+ padding:0;
+ margin:0;
+ width:180px;
+ height:30px;
+}
+
+
+/* Text and alignment formats
+***********************************************************/
+.punch {
+ font-weight:bold;
+}
+.tilt {
+ font-style:italic;
+}
+.colophon {
+ margin-left:20px;
+}
diff --git a/webapps/style/swat.css b/webapps/style/swat.css
new file mode 100644
index 0000000000..c41e4eaf10
--- /dev/null
+++ b/webapps/style/swat.css
@@ -0,0 +1,40 @@
+/*
+ swat.css
+
+ Styles added to the samba.org stylesheets
+ specifically for SWAT.
+*/
+
+
+/* Forms
+***********************************************************/
+.logout {
+ text-align:right;
+}
+.logout form {
+ display:inline;
+}
+
+
+/* Tables
+***********************************************************/
+table.data {
+ border: 2px;
+}
+table.data th {
+ margin-top:20px;
+ text-align:left;
+ background-color: #F5C915;
+}
+table.data tr {
+ background-color: #E5C995;
+ text-align:left;
+}
+
+/* Temp fix for content sections that don't span the window.
+ This is not cross-browser and won't be the final way I handle
+ this, but I can't stand looking at small boxes while I work. :-) */
+#content {
+ min-width:55%;
+ min-height:800px;
+}
diff --git a/webapps/style/wide.css b/webapps/style/wide.css
new file mode 100644
index 0000000000..0107b33698
--- /dev/null
+++ b/webapps/style/wide.css
@@ -0,0 +1,113 @@
+/*
+ wide.css
+ Copyright (C) 2004-2005 Deryck Hodge <deryck@samba.org>
+
+ An alternate two-column "wide" style for those pages
+ with lots and lots of text (download, devel, etc.)
+
+ You may freely use and modify the styles here, but if you
+ intend to recreate the samba.org look exactly, please ask
+ permission first.
+*/
+
+
+/* Primary content section
+***********************************************************/
+#content {
+ position:absolute;
+ top:100px;
+ clear:left;
+ margin:0 1% 0 175px;
+ padding-top:30px;
+ padding-left:35px;
+ padding-bottom:50px;
+ padding-right:15px;
+ background-color:#FFF;
+ border-left:1px solid #FFFF64;
+ border-right:1px solid #FFFF64;
+}
+* html #content {
+ width:70%;
+}
+#content h4 {
+ font-weight:bold;
+ margin:50px 10px 15px 0;
+}
+pre {
+ margin:15px 0 30px 5px;
+}
+
+
+/* Team section
+***********************************************************/
+.teampic {
+ text-align:center;
+}
+.teampic img {
+ width:431px;
+ height:300px;
+}
+
+
+/* Release history/Release notes
+***********************************************************/
+.notes {
+ position:absolute;
+ top:265px;
+ left:0;
+}
+.notes h6 {
+ text-align:left;
+ margin:10px 5px;
+}
+.notes ul {
+ list-style-type:none;
+ text-align:left;
+ padding-left:12px;
+ margin:0 0 0 10px;
+ font-size:10px;
+}
+.intro {
+ margin-top:30px;
+}
+.headline {
+ margin-left:20px;
+ font-style:italic;
+}
+.latest ul {
+ list-style-type:none;
+ margin-left:40px;
+}
+
+
+/* Support providers pages
+***********************************************************/
+#countries {
+ float:left;
+ margin:240px 0 0 5px;
+ padding:0;
+ background-color:#E5E9F5;
+}
+#countries ul {
+ list-style-type:none;
+}
+#countries a {
+ font-size:small;
+}
+#countries h4 {
+ margin-top:10px;
+ margin-left:1px;
+ font-size:small;
+}
+.disclaimer {
+ margin:30px;
+ font-style:italic;
+}
+.info {
+ margin:75px 15px 15px 15px;
+ padding:10px;
+ font-size:small;
+ border-top:1px dotted #3878CD;
+ border-bottom:1px dotted #3878CD;
+}
+
diff --git a/webapps/swat/Makefile b/webapps/swat/Makefile
new file mode 100644
index 0000000000..bf8af850ff
--- /dev/null
+++ b/webapps/swat/Makefile
@@ -0,0 +1,247 @@
+###################################################################################
+# PUBLIC VARIABLES
+###################################################################################
+
+QOOXDOO = ../qooxdoo-0.6.3-sdk
+SCRIPTNAME = swat.js
+APPCLASS = swat.main.Main
+INCLUDEALL = false
+OPTIMIZESTRINGS = false
+OPTIMIZEVARIABLES = false
+SOURCELOADER=
+NICE=10
+LOCALINSTALLDIR = /usr/local/samba/share/swat/apps/swat
+
+
+###################################################################################
+# PRIVATE VARIABLES
+###################################################################################
+
+FRONTEND = $(QOOXDOO)/frontend
+FRAMEWORK = $(FRONTEND)/framework
+API = $(FRONTEND)/api
+CACHE = $(FRAMEWORK)/.cache
+GENERATOR = $(FRAMEWORK)/tool/generator.py
+
+
+ifeq ($(INCLUDEALL),false)
+ INCLUDE = --include $(APPCLASS)
+else
+ INCLUDE =
+endif
+
+ifeq ($(OPTIMIZESTRINGS),true)
+ OPTIMIZESTR = --optimize-strings
+else
+ OPTIMIZESTR =
+endif
+
+ifeq ($(OPTIMIZEVARIABLES),true)
+ OPTIMIZEVAR = --optimize-variables
+else
+ OPTIMIZEVAR =
+endif
+
+ifneq ($(SOURCELOADER),)
+ SOURCELDR = --source-loader-type $(SOURCELOADER)
+else
+ SOURCELDR =
+endif
+
+
+###################################################################################
+# DEFAULT TARGET
+###################################################################################
+
+all: build
+
+
+
+###################################################################################
+# COMMON TARGETS
+###################################################################################
+
+source: info-source \
+ generate-script-source \
+ generate-api-data
+
+build: info-build \
+ generate-script-build \
+ generate-api-data \
+ copy-build-files \
+ fix-build-rights
+
+api: generate-api-build generate-api-data
+ @echo
+ @echo " CREATE COPY OF HTML FILE"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Copying file..."
+ @cp -f $(API)/source/index.html api/index.html
+
+pretty: generate-pretty
+fix: generate-fix
+
+
+
+###################################################################################
+# CLEANUP TARGETS
+###################################################################################
+
+clean:
+ @echo
+ @echo " CLEANUP OF GENERATED FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @rm -f source/script/$(SCRIPTNAME) build/script/$(SCRIPTNAME)
+
+realclean: clean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (REAL)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) rm -rf build
+
+distclean: realclean
+ @echo
+ @echo " CLEANUP OF GENERATED FILES (DIST)"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Deleting files..."
+ @nice -n $(NICE) find . -name "*~" -o -name "*.bak" -o -name "*.old" | xargs rm -rf
+ @nice -n $(NICE) rm -rf $(CACHE)
+
+
+
+###################################################################################
+# GENERATOR TARGETS
+###################################################################################
+
+generate-script-source:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --source-script-path ../$(FRAMEWORK)/source/class \
+ --script-input $(API)/source/class \
+ --source-script-path ../$(API)/source/class \
+ --script-input source/class \
+ --source-script-path class \
+ --generate-source-script $(SOURCELDR) \
+ $(INCLUDE) \
+ --source-script-file source/script/$(SCRIPTNAME) \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:../$(FRAMEWORK)/source/resource \
+ --cache-directory $(CACHE) \
+ --add-new-lines
+
+#
+# djl: --script-input begins a set for which --resource-input and
+# --resource-output apply. Since there is a --resource-input and a
+# --resource-output defined for one set, it must be defined for each set
+#
+generate-script-build:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --resource-input $(FRAMEWORK)/source/resource \
+ --resource-output build/resource \
+ --script-input $(API)/source/class \
+ --resource-input $(API)/source/resource \
+ --resource-output build/resource \
+ --script-input source/class \
+ --resource-input source/resource \
+ --resource-output build/resource \
+ --generate-compiled-script \
+ $(INCLUDE) $(OPTIMIZESTR) $(OPTIMIZEVAR) \
+ --compiled-script-file build/script/$(SCRIPTNAME) \
+ --copy-resources \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:./resource \
+ --cache-directory $(CACHE) \
+ --add-new-lines
+
+generate-api-build:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --resource-input $(FRAMEWORK)/source/resource \
+ --resource-output api/resource/qooxdoo \
+ --script-input $(API)/source/class \
+ --resource-input $(API)/source/resource \
+ --resource-output api/resource \
+ --include api \
+ $(OPTIMIZESTR) $(OPTIMIZEVAR) \
+ --generate-compiled-script \
+ --compiled-script-file api/script/api.js \
+ --define-runtime-setting qx.manager.object.AliasManager.resourceUri:resource/qooxdoo \
+ --define-runtime-setting api.Viewer.title:Swat \
+ --copy-resources \
+ --cache-directory $(CACHE)
+
+generate-api-data:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input $(FRAMEWORK)/source/class \
+ --script-input $(API)/source/class \
+ --script-input source/class \
+ --generate-api-documentation \
+ --api-documentation-json-file build/script/data.js \
+ --cache-directory $(CACHE)
+
+generate-pretty:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --script-input $(FRAMEWORK)/source/class \
+ --include-without-dependencies api.* \
+ --pretty-print \
+ --cache-directory $(CACHE)
+
+generate-fix:
+ @chmod u+x $(GENERATOR) && nice -n $(NICE) $(GENERATOR) \
+ --script-input source/class \
+ --script-input $(FRAMEWORK)/source/class \
+ --include-without-dependencies api.* \
+ --fix-source \
+ --cache-directory $(CACHE)
+
+
+
+###################################################################################
+# ADDITIONAL TARGETS
+###################################################################################
+
+copy-build-files:
+ @echo
+ @echo " CREATE COPY OF HTML FILE"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Copying file..."
+ @cp -f source/index.html build/index.html
+
+fix-build-rights:
+ @echo
+ @echo " FIX RIGHTS ON BUILD FILES"
+ @echo "----------------------------------------------------------------------------"
+ @echo " * Fixing file rights..."
+ @nice -n $(NICE) find build -type d | xargs chmod a+rx
+ @nice -n $(NICE) find build -type f | xargs chmod a+r
+
+
+
+
+
+###################################################################################
+# INFO TARGETS
+###################################################################################
+
+info-build:
+ @echo "****************************************************************************"
+ @echo " GENERATING SWAT WEB APPLICATION BUILD"
+ @echo "****************************************************************************"
+
+info-source:
+ @echo "****************************************************************************"
+ @echo " GENERATING SWAT WEB APPLICATION SOURCE"
+ @echo "****************************************************************************"
+
+###################################################################################
+# INSTALL TARGETS (for developer use only)
+###################################################################################
+
+install:
+ @echo "****************************************************************************"
+ @echo " INSTALLING SWAT"
+ @echo "****************************************************************************"
+ @echo " * Installing swat files..."
+ @rsync -av --exclude=crystalsvg --delete build/ $(LOCALINSTALLDIR)
diff --git a/webapps/swat/source/.ignore b/webapps/swat/source/.ignore
new file mode 100644
index 0000000000..84f7e31d99
--- /dev/null
+++ b/webapps/swat/source/.ignore
@@ -0,0 +1 @@
+script
diff --git a/webapps/swat/source/class/swat/main/Gui.js b/webapps/swat/source/class/swat/main/Gui.js
new file mode 100644
index 0000000000..8d18f5f38a
--- /dev/null
+++ b/webapps/swat/source/class/swat/main/Gui.js
@@ -0,0 +1,205 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * The graphical user interface for the main menu
+ */
+qx.OO.defineClass("swat.main.Gui");
+
+qx.Class.currentCanvas = null;
+
+qx.Class.buildGui = function(moduleList)
+{
+ var o;
+
+ // Header colors
+ var topColor = new qx.renderer.color.Color("#ffff64");
+ var bottomColor = new qx.renderer.color.Color("#3878cd");
+
+ // Create the yellow bar at the top
+ o = new qx.ui.basic.Terminator();
+ o.set({
+ top: 0,
+ left: 0,
+ right: 0,
+ height: 40
+ });
+ o.setBackgroundColor(topColor);
+ o.addToDocument();
+
+ // Create the tag line
+ var title = new qx.ui.basic.Label("Samba Web Administration Tool");
+ title.set({
+ top: 12,
+ left: 20
+ });
+ title.setBackgroundColor(topColor);
+ title.setFont("bold");
+ title.addToDocument();
+
+ // Create a small black separator between the yellow and blue bars
+ o = new qx.ui.basic.Terminator();
+ o.set({
+ top: 40,
+ left: 0,
+ right: 0,
+ height: 1
+ });
+ o.setBackgroundColor("black");
+ o.addToDocument();
+
+ // Create the yellow bar at the top
+ o = new qx.ui.basic.Terminator();
+ o.set({
+ top: 41,
+ left: 0,
+ right: 0,
+ height: 60
+ });
+ o.setBackgroundColor(bottomColor);
+ o.addToDocument();
+
+ // Create the "Samba" image
+ o = new qx.ui.basic.Image("../../../images/logo.png");
+ o.set({
+ top: 16,
+ right: 20
+ });
+ o.setZIndex(100000000);
+ o.addToDocument();
+
+ // Create a menu bar
+ var menubar = new qx.ui.toolbar.ToolBar();
+ menubar.set({
+ top: 100,
+ height: 20,
+ left: 0,
+ right: 0
+ });
+ menubar.addToDocument();
+
+ // Create a menu item for selecting the requested module
+ var menubutton = new qx.ui.toolbar.MenuButton("Modules");
+ menubar.add(menubutton);
+
+ // Create a Command to be executed upon any menu selection
+ var command = new qx.client.Command();
+ // command.addEventListener("execute", fsm.eventListener, fsm);
+
+ // Create a radio manager for selecting one of the modules
+ var moduleManager = new qx.manager.selection.RadioManager("main.gui.Module");
+
+ // Create a menu containing the subitems
+ var menu = new qx.ui.menu.Menu();
+
+ // We'll also track the current module's canvas in the modules object
+ swat.main.Gui.currentCanvas = null;
+
+ // For each menu item...
+ for (moduleName in moduleList)
+ {
+ // create a radio button menu item
+ o = new qx.ui.menu.RadioButton(moduleName, null, command);
+
+ // Associate this button menu item with the module list
+ o.moduleName = moduleName;
+
+ // Associate the menu item with the radio manager
+ moduleManager.add(o);
+
+ // Create this module's canvas
+ var canvas = new qx.ui.layout.CanvasLayout();
+ canvas.set({
+ top: 120,
+ bottom: 0,
+ left: 0,
+ right: 0
+ });
+ canvas.setBackgroundColor("white");
+ canvas.setDisplay(false); // initially not displayed
+
+ var fsm = moduleList[moduleName].fsm;
+ fsm.addObject("swat.module.canvas", canvas);
+ canvas.addEventListener("appear", fsm.eventListener, fsm);
+ canvas.addEventListener("disappear", fsm.eventListener, fsm);
+
+ // Save the canvas
+ moduleList[moduleName].canvas = canvas;
+
+ // Add the canvas to the document
+ canvas.addToDocument();
+
+ // When a Module menu item is selected:
+ o.addEventListener("changeChecked", function(e)
+ {
+ var canvas = moduleList[this.moduleName].canvas;
+
+ // If there's a current canvas, ...
+ if (swat.main.Gui.currentCanvas)
+ {
+ // ... then remove display of it.
+ swat.main.Gui.currentCanvas.setDisplay(false);
+
+ // Dispatch an event on the canvas to notify old
+ // module it's coming into disuse.
+ canvas.createDispatchEvent("disappear");
+ }
+
+ // If we are being selected...
+ if (e.getData())
+ {
+ // then display our canvas
+ var canvas = moduleList[this.moduleName].canvas;
+ canvas.setDisplay(true);
+
+ // Track the current canvas (now ours)
+ swat.main.Gui.currentCanvas = canvas;
+
+ // Dispatch an event on the canvas to notify new
+ // module it's coming into use.
+ canvas.createDispatchEvent("appear");
+
+ // Set the application title
+ title.setHtml("<span>" +
+ "Samba Web Administration Tool" +
+ " &raquo; " +
+ this.moduleName +
+ "</span>");
+
+ // Set the browser title as well
+ document.title =
+ "Swat: " + this.moduleName;
+
+ }
+ });
+
+ // Add the menu item to the menu
+ menu.add(o);
+ }
+
+ // We've built a complete menu. Add it to the document.
+ menu.addToDocument();
+
+ // Specify that the menu is to be displayed upon menu button selection
+ menubutton.setMenu(menu);
+
+ // Create a menu item for selecting debug options
+ var menubutton = new qx.ui.toolbar.MenuButton("Debug");
+ menubar.add(menubutton);
+
+ // Create a menu containing the subitems
+ var menu = new qx.ui.menu.Menu;
+ var menu_01 = new qx.ui.menu.Button("Show Debug Window", null, command);
+ menu.add(menu_01);
+ menu.addToDocument();
+
+ // Specify that the menu is to be displayed upon menu button selection
+ menubutton.setMenu(menu);
+
+};
diff --git a/webapps/swat/source/class/swat/main/Main.js b/webapps/swat/source/class/swat/main/Main.js
new file mode 100644
index 0000000000..dc3bbc031e
--- /dev/null
+++ b/webapps/swat/source/class/swat/main/Main.js
@@ -0,0 +1,94 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/*
+#require(swat.module.Module)
+#require(swat.module.AbstractModule)
+*/
+
+/**
+ * Swat main menu
+ */
+qx.OO.defineClass("swat.main.Main", qx.component.AbstractApplication,
+function()
+{
+ qx.component.AbstractApplication.call(this);
+});
+
+/*
+ * Register our supported modules
+ */
+
+//#require(swat.module.statistics.Statistics)
+new swat.module.Module("Statistics",
+ swat.module.statistics.Statistics);
+
+//#require(swat.module.ldbbrowse.LdbBrowse)
+new swat.module.Module("LDB Browser",
+ swat.module.ldbbrowse.LdbBrowse);
+
+//#require(swat.module.documentation.Documentation)
+//#require(api.Viewer)
+new swat.module.Module("API Documentation",
+ swat.module.documentation.Documentation);
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.initialize = function()
+{
+ // Set the resource URI
+ qx.Settings.setCustom("resourceUri", "./resource");
+
+ // Turn on JSON debugging for the time being
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ // For each module...
+ var moduleList = swat.module.Module.getList();
+ for (moduleName in moduleList)
+ {
+ // ... call the module's buildInitialFsm() function
+ var module = moduleList[moduleName]["class"].getInstance();
+ module.buildInitialFsm(moduleList[moduleName]);
+ }
+};
+
+
+qx.Proto.main = function()
+{
+ var moduleList = swat.module.Module.getList();
+
+ // Initialize the gui for the main menu
+ swat.main.Gui.buildGui(moduleList);
+
+ // Similarly, now that we have a canvas for each module, ...
+ for (moduleName in moduleList)
+ {
+ // ... call the module's buildInitialGui() function
+ var module = moduleList[moduleName]["class"].getInstance();
+ module.buildInitialGui(moduleList[moduleName]);
+ }
+};
+
+
+qx.Proto.finalize = function()
+{
+ // Call each module's finalization function
+ var moduleList = swat.module.Module.getList();
+ for (moduleName in moduleList)
+ {
+ var module = moduleList[moduleName]["class"].getInstance();
+ module.finalize(moduleList[moduleName]);
+ }
+};
+
diff --git a/webapps/swat/source/class/swat/module/AbstractModule.js b/webapps/swat/source/class/swat/module/AbstractModule.js
new file mode 100644
index 0000000000..19bcc88a13
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/AbstractModule.js
@@ -0,0 +1,172 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Abstract Module class. All modules should extend this class.
+ */
+qx.OO.defineClass("swat.module.AbstractModule", qx.core.Object,
+function()
+{
+ qx.core.Object.call(this);
+ this.debug("AbstractModule constructor");
+});
+
+
+/**
+ * Build the initial finite state machine.
+ *
+ * In order to prevent long load times, as minimal as possible of an initial
+ * FSM should be created. The FSM will receive an "appear" event when the
+ * module is first selected (and each subsequent time), and the FSM can use
+ * that event to build the complete FSM.
+ *
+ * @param module {swat.module.Module}
+ * The module descriptor for the module.
+ */
+qx.Proto.buildInitialFsm = function(module)
+{
+ // Create a new finite state machine
+ var fsm = new qx.util.fsm.FiniteStateMachine(module.name);
+
+ // For this simple example application, show all debug messages.
+ qx.Settings.setCustomOfClass(
+ "qx.util.fsm.FiniteStateMachine",
+ "debugFlags",
+ (qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.TRANSITIONS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.FUNCTION_DETAIL |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.OBJECT_NOT_FOUND));
+
+ /*
+ * State: Idle
+ *
+ * Transition on:
+ * "appear" on swat.module.canvas
+ */
+ var state = new qx.util.fsm.State(
+ "State_Idle",
+ {
+ "events" :
+ {
+ // When we get an appear event the first time, run the transition
+ // that will load the module's finite state machine and graphical
+ // user interface.
+ "appear" :
+ {
+ "swat.module.canvas" :
+ "Transition_Idle_to_Idle_Load_Gui"
+ }
+ }
+ });
+ fsm.addState(state);
+
+ /*
+ * Transition: Idle to (replaced) Idle
+ *
+ * Cause: "appear" on canvas for the first time
+ *
+ * Action:
+ * Load module's finite state machine and graphical user interface
+ */
+ var thisModule = this;
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_Idle_Load_Gui",
+ {
+ "nextState" :
+ qx.util.fsm.FiniteStateMachine.StateChange.CURRENT_STATE,
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Make the "Loading" message go away. (We need to learn how to
+ // remove it entirely. Just doing canvas.removeAll() leaves
+ // something in the widget queue and we get spurious error
+ // messages.)
+ var children = module.canvas.getVisibleChildren();
+ for (var child in children)
+ {
+ children[child].hide();
+ }
+
+ // Call the module's initialAppear function to build FSM and GUI.
+ // That function should *replace* this state, State_Idle, to which
+ // we'll transition.
+ thisModule.initialAppear(module);
+ }
+ });
+ state.addTransition(trans);
+
+ // Save the finite state machine for this module
+ module.fsm = fsm;
+
+ // Save the module descriptor in the finite state machine
+ fsm.addObject("swat.module.module", module);
+
+ // Create an RPC object for use by this module
+ module.rpc = new qx.io.remote.Rpc();
+ module.rpc.setUrl("/services/");
+ module.rpc.setTimeout(10000);
+ module.rpc.setCrossDomain(false);
+ module.rpc.addEventListener("completed", fsm.eventListener, fsm);
+ module.rpc.addEventListener("failed", fsm.eventListener, fsm);
+ module.rpc.addEventListener("timeout", fsm.eventListener, fsm);
+ module.rpc.addEventListener("aborted", fsm.eventListener, fsm);
+ fsm.addObject("swat.module.rpc", module.rpc);
+
+ // Start the finite state machine
+ fsm.start();
+};
+
+/**
+ * Build the initial graphical user interface.
+ *
+ * In order to prevent long load times, as minimal as possible of an initial
+ * GUI should be created. Generally, this is just a "Loading..." message.
+ *
+ * @param module {Object}
+ * An object containing at least the following properties:
+ * fsm -
+ * The finite state machine for this module. It should be filled in
+ * by this function.
+ * canvas -
+ * The canvas on which to create the gui for this module
+ * name -
+ * The name of this module
+ * class -
+ * The class for this module
+ *
+ */
+qx.Proto.buildInitialGui = function(module)
+{
+ // For now, just create the "Loading" text
+ var o = new qx.ui.basic.Label("Loading module '" + module.name + "'...");
+ o.set({
+ top: 12,
+ left: 20
+ });
+ o.setFont("bold");
+ module.canvas.add(o);
+};
+
+qx.Proto.finalize = function(module)
+{
+ this.debug("AbstractModule.finalize()");
+};
+
+
+/*
+---------------------------------------------------------------------------
+ DEFER SINGLETON INSTANCE
+---------------------------------------------------------------------------
+*/
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/AbstractModuleFsm.js b/webapps/swat/source/class/swat/module/AbstractModuleFsm.js
new file mode 100644
index 0000000000..57b8baaac9
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/AbstractModuleFsm.js
@@ -0,0 +1,211 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Common facilities for modules' finite state machines. Each module's FSM
+ * should extend this class.
+ */
+qx.OO.defineClass("swat.module.AbstractModuleFsm", qx.core.Object, function()
+{
+ qx.core.Object.call(this);
+});
+
+
+qx.Proto.buildFsm = function(module)
+{
+ throw new Error("Module must overload buildFsm() " +
+ "to build its custom finite state machine.");
+};
+
+qx.Proto.addAwaitRpcResultState = function(module)
+{
+ var fsm = module.fsm;
+
+ /*
+ * State: AwaitRpcResult
+ *
+ * Actions upon entry:
+ * - enable any objects in group "swat.module.fsmUtils.enable_during_rpc"
+ * - disable any objects in group "swat.module.fsmUtils.disable_during_rpc"
+ *
+ * Actions upon exit:
+ * - disable any objects in group "swat.module.fsmUtils.enable_during_rpc"
+ * - enable any objects in group "swat.module.fsmUtils.disable_during_rpc"
+ *
+ * Transition on:
+ * "completed" (on RPC)
+ * "failed" (on RPC)
+ * "execute" on swat.module.fsmUtils.abort_rpc
+ */
+ var state = new qx.util.fsm.State(
+ "State_AwaitRpcResult",
+ {
+ "autoActionsBeforeOnentry" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // We want to enable objects in the group
+ // swat.module.fsmUtils.enable_during_rpc
+ "parameters" : [ true ],
+
+ // Call this.getObject(<object>).setEnabled(true) on
+ // state entry, for each <object> in the group called
+ // "swat.module.fsmUtils.enable_during_rpc".
+ "groups" : [ "swat.module.fsmUtils.enable_during_rpc" ]
+ },
+
+ {
+ // We want to disable objects in the group
+ // swat.module.fsmUtils.disable_during_rpc
+ "parameters" : [ false ],
+
+ // Call this.getObject(<object>).setEnabled(false) on
+ // state entry, for each <object> in the group called
+ // "swat.module.fsmUtils.disable_during_rpc".
+ "groups" : [ "swat.module.fsmUtils.disable_during_rpc" ]
+ }
+ ]
+ },
+
+ "autoActionsBeforeOnexit" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // We want to re-disable objects we had enabled, in the group
+ // swat.module.fsmUtils.enable_during_rpc
+ "parameters" : [ false ],
+
+ // Call this.getObject(<object>).setEnabled(false) on
+ // state entry, for each <object> in the group called
+ // "swat.module.fsmUtils.enable_during_rpc".
+ "groups" : [ "swat.module.fsmUtils.enable_during_rpc" ]
+ },
+
+ {
+ // We want to re-enable objects we had disabled, in the group
+ // swat.module.fsmUtils.disable_during_rpc
+ "parameters" : [ true ],
+
+ // Call this.getObject(<object>).setEnabled(true) on
+ // state entry, for each <object> in the group called
+ // "swat.module.fsmUtils.disable_during_rpc".
+ "groups" : [ "swat.module.fsmUtils.disable_during_rpc" ]
+ }
+ ]
+ },
+
+ "onentry" :
+ function(fsm, state)
+ {
+ // If we're coming from some other start...
+ if (fsm.getPreviousState() != "State_AwaitRpcResult")
+ {
+ // ... then push the previous state onto the state stack
+ fsm.pushState(false);
+ }
+ },
+
+ "events" :
+ {
+ "execute" :
+ {
+ "swat.module.fsmUtils.abort_rpc" :
+ "Transition_AwaitRpcResult_to_AwaitRpcResult_via_button_abort"
+ },
+
+ "completed" :
+ "Transition_AwaitRpcResult_to_PopStack_via_complete",
+
+ "failed" :
+ "Transition_AwaitRpcResult_to_PopStack_via_failed"
+ }
+ });
+ fsm.addState(state);
+
+ /*
+ * Transition: AwaitRpcResult to AwaitRpcResult
+ *
+ * Cause: "execute" on swat.module.fsmUtils.abort_rpc
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_AwaitRpcResult_via_button_abort",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Get the request object
+ var request = fsm.getObject("swat.module.fsmUtils.request");
+
+ // Issue an abort for the pending request
+ request.abort();
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: AwaitRpcResult to PopStack
+ *
+ * Cause: "complete" (on RPC)
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_PopStack_via_complete",
+ {
+ "nextState" :
+ qx.util.fsm.FiniteStateMachine.StateChange.POP_STATE_STACK,
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Get the request object
+ var request = fsm.getObject("swat.module.fsmUtils.request");
+
+ // Generate the result for a completed request
+ request.setUserData("result",
+ {
+ type : "complete",
+ data : event.getData()
+ });
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: AwaitRpcResult to PopStack
+ *
+ * Cause: "failed" (on RPC)
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_PopStack_via_failed",
+ {
+ "nextState" :
+ qx.util.fsm.FiniteStateMachine.StateChange.POP_STATE_STACK,
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Get the request object
+ var request = fsm.getObject("swat.module.fsmUtils.request");
+
+ // Generate the result for a completed request
+ request.setUserData("result",
+ {
+ type : "failed",
+ data : event.getData()
+ });
+ }
+ });
+ state.addTransition(trans);
+};
diff --git a/webapps/swat/source/class/swat/module/Module.js b/webapps/swat/source/class/swat/module/Module.js
new file mode 100644
index 0000000000..e7180d2895
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/Module.js
@@ -0,0 +1,74 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * This class defines a module descriptor (the registration of a module) and
+ * maintains the list of modules that have been registered.
+ *
+ * A Module object contains the following public properties which may be
+ * accessed directly by name:
+ *
+ * fsm -
+ * The finite state machine for this module.
+ *
+ * canvas -
+ * The canvas on which to create the gui for this module
+ *
+ * name -
+ * The name of this module
+ *
+ * class -
+ * The class for this module
+ *
+ * @param moduleName {string}
+ * The name of the module being registered. This is the name that will
+ * appear in the Modules menu.
+ *
+ * @param class {class}
+ * The class which contains the module implementation. That class must
+ * extend swat.module.AbstractModule and implement a singleton interface
+ * that provides a public method called initialAppear() which takes this
+ * Module object as a parameter, and creates the finite state machine for
+ * the module (if applicable) and builds the graphical user interface for
+ * the module.
+ */
+qx.OO.defineClass("swat.module.Module", qx.core.Object,
+function(moduleName, class)
+{
+ qx.core.Object.call(this);
+
+ // Initialize commonly-used properties of a module
+ this.canvas = null;
+ this.fsm = null;
+ this.gui = null;
+
+ // Save the module name
+ this.name = moduleName;
+
+ // Save this class name
+ this.class = class;
+
+ // Add this new module to the module list.
+ swat.module.Module._list[moduleName] = this;
+});
+
+
+/**
+ * Return the list of modules
+ */
+qx.Class.getList = function()
+{
+ return swat.module.Module._list;
+};
+
+
+/**
+ * The list of modules which have been registered.
+ */
+qx.Class._list = { };
diff --git a/webapps/swat/source/class/swat/module/documentation/Documentation.js b/webapps/swat/source/class/swat/module/documentation/Documentation.js
new file mode 100644
index 0000000000..03191cacc2
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/documentation/Documentation.js
@@ -0,0 +1,59 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat statistics class
+ */
+qx.OO.defineClass("swat.module.documentation.Documentation",
+ swat.module.AbstractModule,
+function()
+{
+ swat.module.AbstractModule.call(this);
+});
+
+
+/**
+ * Load the documentation data
+ *
+ * This function is called the first time a module is actually selected to
+ * appear. Creation of the module's GUI has been deferred until it was
+ * actually needed (now), so we need to create it.
+ *
+ * @param module {swat.module.Module}
+ * The module descriptor for the module.
+ */
+qx.Proto.initialAppear = function(module)
+{
+ qx.manager.object.AliasManager.getInstance().add("api", "./resource/image");
+
+ // Include CSS file.
+ // (This is the hard way; I can't get qx.dom.StyleSheet.includeFile to load)
+ var el = document.createElement("link");
+ el.type = "text/css";
+ el.rel = "stylesheet";
+ el.href = "./resource/css/apiviewer.css";
+ var head = document.getElementsByTagName("head")[0];
+ head.appendChild(el);
+
+ // avoid redundant naming by api viewer
+ qx.Settings.setCustomOfClass("apiviewer.Viewer", "title", "");
+
+ var viewer = new api.Viewer();
+ module.canvas.add(viewer);
+ viewer.load("script/data.js");
+
+ // Replace the existing (temporary) finite state machine with a null one
+ swat.module.documentation.Fsm.getInstance().buildFsm(module);
+};
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/documentation/Fsm.js b/webapps/swat/source/class/swat/module/documentation/Fsm.js
new file mode 100644
index 0000000000..9df878b4f1
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/documentation/Fsm.js
@@ -0,0 +1,70 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat statistics class finite state machine
+ */
+qx.OO.defineClass("swat.module.documentation.Fsm",
+ swat.module.AbstractModuleFsm,
+function()
+{
+ swat.module.AbstractModuleFsm.call(this);
+});
+
+
+qx.Proto.buildFsm = function(module)
+{
+ var fsm = module.fsm;
+
+ /*
+ * State: Idle
+ *
+ * This is a null state to replace the one that loads the API viewer. The
+ * API viewer does not use the finite state machine.
+ */
+ var state = new qx.util.fsm.State(
+ "State_Idle",
+ {
+ "events" :
+ {
+ // We need at least one event listed due to FSM requirements
+ "appear" :
+ {
+ "swat.module.canvas" :
+ "Transition_Idle_to_Idle_via_appear"
+ }
+ }
+ });
+
+ // Replace the initial Idle state with this one
+ fsm.replaceState(state, true);
+
+ /*
+ * Transition: Idle to Idle
+ *
+ * Cause: "appear" on canvas
+ *
+ * Action:
+ * None.
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_Idle_via_appear",
+ {
+ "nextState" :
+ "State_Idle"
+ });
+ state.addTransition(trans);
+
+};
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js b/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js
new file mode 100644
index 0000000000..9362ef7687
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js
@@ -0,0 +1,383 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat LDB Browser class finite state machine
+ */
+qx.OO.defineClass("swat.module.ldbbrowse.Fsm", swat.module.AbstractModuleFsm,
+function()
+{
+ swat.module.AbstractModuleFsm.call(this);
+});
+
+
+qx.Proto.buildFsm = function(module)
+{
+ var fsm = module.fsm;
+
+ /*
+ * State: Idle
+ *
+ * Actions upon entry
+ * - if returning from RPC, display the result
+ *
+ * Transition on:
+ * "execute" on find button
+ * "treeopenwhileempty" on tree
+ * "changeselection" on tree
+ */
+ var state = new qx.util.fsm.State(
+ "State_Idle",
+ {
+ "onentry" :
+ function(fsm, state)
+ {
+ // Did we just return from an RPC request?
+ if (fsm.getPreviousState() == "State_AwaitRpcResult")
+ {
+ // Yup. Display the result. We need to get the request object
+ var request = fsm.getObject("swat.module.fsmUtils.request");
+
+ // We don't need the request object to be saved any more
+ fsm.removeObject("swat.module.fsmUtils.request");
+
+ // Display the result
+ var gui = swat.module.ldbbrowse.Gui.getInstance();
+ gui.displayData(module, request);
+
+ // Dispose of the request
+ request.dispose();
+ request = null;
+ }
+ },
+
+ "events" :
+ {
+ // If the find button is activated, issue a find request
+ "execute" :
+ {
+ "find" :
+ "Transition_Idle_to_AwaitRpcResult_via_find"
+ },
+
+ // If a previously unexpanded tree node is expanded, issue a request
+ // to retrieve its contents.
+ "treeOpenWhileEmpty":
+ {
+ "tree" :
+ "Transition_Idle_to_AwaitRpcResult_via_tree_open"
+ },
+
+ // If the selection changes, issue a request to retrieve contents to
+ // populate the attribute/value table.
+ "changeSelection":
+ {
+ "tree:manager" :
+ "Transition_Idle_to_AwaitRpcResult_via_tree_selection_changed",
+
+ "dbName":
+ "Transition_Idle_to_AwaitRpcResult_via_db_changed"
+ }
+ }
+ });
+
+ // Replace the initial Idle state with this one
+ fsm.replaceState(state, true);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "execute" on find button
+ *
+ * Action:
+ * Issue a search request
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_find",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Obtain the RPC object
+ var rpc = fsm.getObject("swat.module.rpc");
+
+ // Get our module descriptor
+ var module = fsm.getObject("swat.module.module");
+
+ // Retrieve the database handle
+ var dbHandle = module.dbHandle;
+
+ // Retrieve the search expression
+ var searchExpr = fsm.getObject("searchExpr").getValue();
+
+ // Retrieve the base DN
+ var baseDN = fsm.getObject("baseDN").getValue();
+
+ // Retrieve the selected scope
+ var scope = fsm.getObject("scope").getSelected().getValue();
+
+ // We want all attributes
+ var attributes = [ "*" ];
+
+ rpc.setServiceName("samba.ldb");
+ var request = rpc.callAsyncListeners(true, // coalesce failure events
+ "search",
+ dbHandle,
+ searchExpr,
+ baseDN,
+ scope,
+ attributes);
+
+ // When we get the result, we'll need to know what type of request
+ // we made.
+ request.setUserData("requestType", "find");
+
+ // Save the request object
+ fsm.addObject("swat.module.fsmUtils.request", request);
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "treeOpenWhileEmpty" on tree
+ *
+ * Action:
+ * Issue a search request
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_tree_open",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var parent = event.getData();
+ var hierarchy = parent.getHierarchy(new Array());
+
+ parent.debug("Requesting children...");
+
+ // Strip off the root node
+ hierarchy.shift();
+
+ // Get the tree object
+ var tree = fsm.getObject("tree");
+
+ // Determine the children. Differs depending on root or otherwise
+ var attributes;
+ var scope;
+ var baseDN;
+
+ // If parent is the root...
+ if (parent == tree)
+ {
+ // ... then we want the defaultNamingContext, ...
+ attributes = [ "defaultNamingContext" ];
+
+ // ... and we want only base scope
+ scope = "base";
+
+ // ... and an empty base DN
+ baseDN = "";
+ }
+ else
+ {
+ // otherwise, retrieve the DN,
+ attributes = [ "dn" ];
+
+ // ... and we want one level of scope
+ scope = "one";
+
+ // ... and base DN is the parent
+ baseDN = hierarchy.reverse().join(",");
+ }
+
+ // Build the search expression
+ var searchExpr = "(objectclass=*)";
+
+ // Obtain the RPC object
+ var rpc = fsm.getObject("swat.module.rpc");
+
+ // Get our module descriptor
+ var module = fsm.getObject("swat.module.module");
+
+ // Retrieve the database handle
+ var dbHandle = module.dbHandle;
+
+ rpc.setServiceName("samba.ldb");
+ var request = rpc.callAsyncListeners(true, // coalesce failure events
+ "search",
+ dbHandle,
+ searchExpr,
+ baseDN,
+ scope,
+ attributes);
+
+ // When we get the result, we'll need to know what type of request
+ // we made.
+ request.setUserData("requestType", "tree_open");
+
+ // We'll also need some of our parameters
+ request.setUserData("parent", parent);
+ request.setUserData("attributes", attributes);
+
+ // Save the request object
+ fsm.addObject("swat.module.fsmUtils.request", request);
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "changeSelection" on tree
+ *
+ * Action:
+ * Issue a search request
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_tree_selection_changed",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "predicate" :
+ function(fsm, event)
+ {
+ var element = event.getData()[0];
+ var hierarchy = element.getHierarchy(new Array());
+
+ // Strip off the root node
+ hierarchy.shift();
+
+ // Get the tree object
+ var tree = fsm.getObject("tree");
+
+ // If element is the root...
+ if (element == tree)
+ {
+ // ... then just clear out the attribute/value table.
+ var tableModel = fsm.getObject("tableModel:browse");
+ tableModel.setData([]);
+ return null; // don't search additional transitionis
+ }
+
+ return true;
+ },
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var element = event.getData()[0];
+ var hierarchy = element.getHierarchy(new Array());
+
+ // Strip off the root node
+ hierarchy.shift();
+
+ // Get the tree object
+ var tree = fsm.getObject("tree");
+
+ // Determine the children. Differs depending on root or otherwise
+ var attributes;
+ var scope;
+ var baseDN;
+
+ // We want all attributes
+ attributes = [ "*" ];
+
+ // We want the attributes only for the current element
+ scope = "base";
+
+ // Base DN is the current element
+ baseDN = hierarchy.reverse().join(",");
+
+ // Build the search expression
+ var searchExpr = "(objectclass=*)";
+
+ // Obtain the RPC object
+ var rpc = fsm.getObject("swat.module.rpc");
+
+ // Get our module descriptor
+ var module = fsm.getObject("swat.module.module");
+
+ // Retrieve the database handle
+ var dbHandle = module.dbHandle;
+
+ rpc.setServiceName("samba.ldb");
+ var request = rpc.callAsyncListeners(true, // coalesce failure events
+ "search",
+ dbHandle,
+ searchExpr,
+ baseDN,
+ scope,
+ attributes);
+
+ // When we get the result, we'll need to know what type of request
+ // we made.
+ request.setUserData("requestType", "tree_selection_changed");
+
+ // Save the request object
+ fsm.addObject("swat.module.fsmUtils.request", request);
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "changeSelection" on dbName
+ *
+ * Action:
+ * Issue a connect request
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_db_changed",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Obtain the RPC object
+ var rpc = fsm.getObject("swat.module.rpc");
+
+ // Obtain the name of the database to be connected to
+ var dbName = fsm.getObject("dbName").getValue();
+
+ rpc.setServiceName("samba.ldb");
+ var request = rpc.callAsyncListeners(true, // coalesce failure events
+ "connect",
+ dbName);
+
+ // When we get the result, we'll need to know what type of request
+ // we made.
+ request.setUserData("requestType", "database_name_changed");
+
+ // Save the request object
+ fsm.addObject("swat.module.fsmUtils.request", request);
+ }
+ });
+ state.addTransition(trans);
+
+ // Add the AwaitRpcResult state and all of its transitions
+ this.addAwaitRpcResultState(module);
+};
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js b/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js
new file mode 100644
index 0000000000..9e86be25e9
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js
@@ -0,0 +1,632 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat LDB Browser class graphical user interface
+ */
+qx.OO.defineClass("swat.module.ldbbrowse.Gui", qx.core.Object,
+function()
+{
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Build the raw graphical user interface.
+ */
+qx.Proto.buildGui = function(module)
+{
+ var o;
+ var fsm = module.fsm;
+
+ // We need a horizontal box layout for the database name
+ var hlayout = new qx.ui.layout.HorizontalBoxLayout();
+ hlayout.set({
+ top: 20,
+ left: 20,
+ right: 20,
+ height: 30
+ });
+
+ // Create a label for the database name
+ o = new qx.ui.basic.Atom("Database:");
+ o.setWidth(100);
+ o.setHorizontalChildrenAlign("right");
+
+ // Add the label to the horizontal layout
+ hlayout.add(o);
+
+ // Create a combo box for for the database name
+ o = new qx.ui.form.ComboBox();
+ o.getField().setWidth("100%");
+ o.setEditable(false);
+
+ // Add our global database name (the only option, for now)
+ var item = new qx.ui.form.ListItem(module.dbFile);
+ o.add(item);
+
+ // We want to be notified if the selection changes
+ o.addEventListener("changeSelection", fsm.eventListener, fsm);
+
+ // Save the database name object so we can react to changes
+ fsm.addObject("dbName", o);
+
+ // Add the combo box to the horizontal layout
+ hlayout.add(o);
+
+ // Add the database name selection to the canvas
+ module.canvas.add(hlayout);
+
+ // Create and position the tabview
+ var tabView_ = new qx.ui.pageview.tabview.TabView;
+ tabView_.set({
+ top: 60,
+ left: 20,
+ right: 20,
+ bottom: 20
+ });
+
+ // Create each of the tabs
+ var tabView_Search =
+ new qx.ui.pageview.tabview.Button("Search");
+ var tabView_Browse =
+ new qx.ui.pageview.tabview.Button("Browse");
+
+ // Specify the initially-selected tab
+ tabView_Search.setChecked(true);
+
+ // Add each of the tabs to the tabview
+ tabView_.getBar().add(tabView_Search, tabView_Browse);
+
+ // Create the pages to display when each tab is selected
+ var tabViewPage_Search =
+ new qx.ui.pageview.tabview.Page(tabView_Search);
+ var tabViewPage_Browse =
+ new qx.ui.pageview.tabview.Page(tabView_Browse);
+
+ // Build the search page
+ this._buildPageSearch(module, tabViewPage_Search);
+
+ // Build the browse page
+ this._buildPageBrowse(module, tabViewPage_Browse);
+
+ // Add the pages to the tabview
+ tabView_.getPane().add(tabViewPage_Search, tabViewPage_Browse);
+
+ // Add the tabview to our canvas
+ module.canvas.add(tabView_);
+};
+
+
+/**
+ * Populate the graphical user interface with the specified data
+ *
+ * @param module {swat.module.Module}
+ * The module descriptor for the module.
+ *
+ * @result {Object}
+ * The result returned by SAMBA to our request. We display the data
+ * provided by this result.
+ */
+qx.Proto.displayData = function(module, request)
+{
+ var gui = module.gui;
+ var fsm = module.fsm;
+ var result = request.getUserData("result")
+ var requestType = request.getUserData("requestType");
+
+ // Did the request fail?
+ if (result.type == "failed")
+ {
+ // Yup. We're not going to do anything particularly elegant...
+ alert("Async(" + result.id + ") exception: " + result.data);
+ return;
+ }
+
+ // Dispatch to the appropriate handler, depending on the request type
+ switch(requestType)
+ {
+ case "find":
+ this._displayFindResults(module, request);
+ break;
+
+ case "tree_open":
+ this._displayTreeOpenResults(module, request);
+ break;
+
+ case "tree_selection_changed":
+ this._displayTreeSelectionChangedResults(module, request);
+ break;
+
+ case "database_name_changed":
+ this._clearAllFields(module, request);
+ break;
+
+ default:
+ throw new Error("Unexpected request type: " + requestType);
+ }
+
+ // Force flushing of pending DOM updates. This is actually a
+ // work-around for a bug. Without this, occasionally, updates to the
+ // gui aren't displayed until some 'action' takes place, e.g. key
+ // press or mouse movement.
+ qx.ui.core.Widget.flushGlobalQueues();
+};
+
+
+qx.Proto._setAppearances = function()
+{
+ // Modify the default appearance of a ComboBox for use in Search tab:
+ // use more of the available width.
+ //
+ // If we had multiple uses, we'd create a new appearance which didn't
+ // contain a width. That way, we'd be able to assign a specific width to
+ // each ComboBox instance. Since we don't have multiple of them, we can
+ // just modify this default appearance.
+ //
+ // See http://qooxdoo.org/documentation/user_manual/appearance for an
+ // explanation of what's going on here. The missing significant point in
+ // the discussion is that in the current qooxdoo appearance
+ // implementation, it's not possible to override a specific widget's
+ // appearance with explicit settings just for that widget (stupid!). I
+ // expect that to change in a future version.
+ var appMgr = qx.manager.object.AppearanceManager.getInstance();
+ var theme = appMgr.getAppearanceTheme();
+ var appearance = theme._appearances["combo-box"];
+ if (! appearance)
+ {
+ return;
+ }
+ var oldInitial = appearance.initial;
+ appearance.initial = function(vTheme)
+ {
+ var res = oldInitial ? oldInitial.apply(this, arguments) : {};
+ res.width = "80%";
+ return res;
+ }
+};
+
+
+qx.Proto._buildPageSearch = function(module, page)
+{
+ var fsm = module.fsm;
+
+ // We need a vertical box layout for the various input fields
+ var vlayout = new qx.ui.layout.VerticalBoxLayout();
+ vlayout.setWidth("100%");
+
+ // We need a horizontal box layout for the search combo box and its label
+ var hlayout = new qx.ui.layout.HorizontalBoxLayout();
+ hlayout.setWidth("100%");
+ hlayout.setHeight(25);
+
+ // Create a label for the list of required attributes
+ var label = new qx.ui.basic.Atom("Search Expression:");
+ label.setWidth(100);
+ label.setHorizontalChildrenAlign("right");
+
+ // Add the label to the horizontal layout
+ hlayout.add(label);
+
+ // Create a combo box for entry of the search expression
+ var search = new qx.ui.form.ComboBox();
+ search.getField().setWidth("100%");
+ search.setEditable(true);
+ fsm.addObject("searchExpr", search);
+
+ // Add the combo box to the horizontal layout
+ hlayout.add(search);
+
+ // Add the horizontal layout to the vertical layout
+ vlayout.add(hlayout);
+
+ // We need a horizontal box layout for the base combo box and its label
+ hlayout = new qx.ui.layout.HorizontalBoxLayout();
+ hlayout.setWidth("100%");
+ hlayout.setHeight(25);
+
+ // Create a label for the list of required attributes
+ var label = new qx.ui.basic.Atom("Base:");
+ label.setWidth(100);
+ label.setHorizontalChildrenAlign("right");
+
+ // Add the label to the horizontal layout
+ hlayout.add(label);
+
+ // Create a combo box for entry of the search expression
+ var base = new qx.ui.form.ComboBox();
+ base.getField().setWidth("100%");
+ base.setEditable(true);
+ fsm.addObject("baseDN", base);
+
+ // Add the combo box to the horizontal layout
+ hlayout.add(base);
+
+ // Add the horizontal layout to the vertical layout
+ vlayout.add(hlayout);
+
+ // We need a horizontal box layout for scope radio buttons
+ hlayout = new qx.ui.layout.HorizontalBoxLayout();
+ hlayout.setWidth("100%");
+ hlayout.setHeight(25);
+
+ // Create a label for the list of required attributes
+ var label = new qx.ui.basic.Atom("Scope:");
+ label.setWidth(100);
+ label.setHorizontalChildrenAlign("right");
+
+ // Add the label to the horizontal layout
+ hlayout.add(label);
+
+ // Create a radio button for each scope
+ var rbDefault = new qx.ui.form.RadioButton("Default", "default");
+ var rbBase = new qx.ui.form.RadioButton("Base", "base");
+ var rbOne = new qx.ui.form.RadioButton("One Level", "one");
+ var rbSubtree = new qx.ui.form.RadioButton("Subtree", "subtree");
+
+ // Use a default of "Default"
+ rbBase.setChecked(true);
+
+ // Add the radio buttons to the horizontal layout
+ hlayout.add(rbDefault, rbBase, rbOne, rbSubtree);
+
+ // Group the radio buttons so only one in the group may be selected
+ var scope = new qx.manager.selection.RadioManager("scope",
+ [
+ rbDefault,
+ rbBase,
+ rbOne,
+ rbSubtree
+ ]);
+ fsm.addObject("scope", scope);
+
+ // Right-justify the 'Find' button
+ var spacer = new qx.ui.basic.HorizontalSpacer;
+ hlayout.add(spacer);
+
+ // Create the 'Find' button
+ var find = new qx.ui.form.Button('Find');
+ find.setWidth(100);
+ find.addEventListener("execute", fsm.eventListener, fsm);
+
+ // We'll be receiving events on the find object, so save its friendly name
+ fsm.addObject("find", find, "swat.module.fsmUtils.disable_during_rpc");
+
+ hlayout.add(find);
+
+ // Add the Find button line to the vertical layout
+ vlayout.add(hlayout);
+
+ // Add the horizontal box layout to the page
+ page.add(vlayout);
+
+ // Create a simple table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "Distinguished Name", "Attribute", "Value" ]);
+
+ tableModel.setColumnEditable(0, false);
+ tableModel.setColumnEditable(1, false);
+ tableModel.setColumnEditable(2, false);
+ fsm.addObject("tableModel:search", tableModel);
+
+ // Create a table
+ var table = new qx.ui.table.Table(tableModel);
+ table.set({
+ top: 80,
+ left: 0,
+ right: 0,
+ bottom: 10,
+ statusBarVisible: false,
+ columnVisibilityButtonVisible: false
+ });
+ table.setColumnWidth(0, 300);
+ table.setColumnWidth(1, 180);
+ table.setColumnWidth(2, 240);
+ table.setMetaColumnCounts([ 1, -1 ]);// h-scroll attribute and value together
+ fsm.addObject("table:search", table);
+
+ page.add(table);
+};
+
+qx.Proto._buildPageBrowse = function(module, page)
+{
+ var fsm = module.fsm;
+
+ // Create a vertical splitpane for tree (top) and table (bottom)
+ var splitpane = new qx.ui.splitpane.VerticalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+
+ // Create a tree row structure for the tree root
+ var trsInstance = qx.ui.treefullcontrol.TreeRowStructure.getInstance();
+ var trs = trsInstance.standard(module.dbFile);
+
+ // Create the tree and set its characteristics
+ var tree = new qx.ui.treefullcontrol.Tree(trs);
+ tree.set({
+ backgroundColor: 255,
+ border: qx.renderer.border.BorderPresets.getInstance().inset,
+ overflow: "auto",
+ height: null,
+ top: 10,
+ left: 0,
+ right: 0,
+ bottom: 10,
+ open: false,
+ alwaysShowPlusMinusSymbol: true
+ });
+
+ // All subtrees will use this root node's event listeners. Create an event
+ // listener for an open while empty.
+ tree.addEventListener("treeOpenWhileEmpty", fsm.eventListener, fsm);
+
+ // All subtrees will use this root node's event listeners. Create an event
+ // listener for selection changed, to populate attribute/value table
+ tree.getManager().addEventListener("changeSelection",
+ fsm.eventListener,
+ fsm);
+
+ // We'll be receiving events on the tree object, so save its friendly name
+ fsm.addObject("tree", tree);
+ fsm.addObject("tree:manager", tree.getManager());
+
+ // Add the tree to the page.
+ splitpane.addTop(tree);
+
+ // Create a simple table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "Attribute", "Value" ]);
+
+ tableModel.setColumnEditable(0, false);
+ tableModel.setColumnEditable(1, false);
+ fsm.addObject("tableModel:browse", tableModel);
+
+ // Create a table
+ var table = new qx.ui.table.Table(tableModel);
+ table.set({
+ top: 10,
+ left: 0,
+ right: 0,
+ bottom: 10,
+ statusBarVisible: false,
+ columnVisibilityButtonVisible: false
+ });
+ table.setColumnWidth(0, 200);
+ table.setColumnWidth(1, 440);
+ table.setMetaColumnCounts([1, -1]);
+ fsm.addObject("table:browse", table);
+
+ // Add the table to the bottom portion of the splitpane
+ splitpane.addBottom(table);
+
+ // Add the first splitpane to the page
+ page.add(splitpane);
+};
+
+
+qx.Proto._displayFindResults = function(module, request)
+{
+ var rowData = [];
+ var fsm = module.fsm;
+
+ // Track the maximum length of the attribute values
+ var maxLen = 0;
+
+ // Obtain the result object
+ result = request.getUserData("result").data;
+
+ if (result && result["length"])
+ {
+ len = result["length"];
+ for (var i = 0; i < result["length"]; i++)
+ {
+ var o = result[i];
+ if (typeof(o) != "object")
+ {
+ alert("Found unexpected result, type " +
+ typeof(o) +
+ ", " +
+ o +
+ "\n");
+ continue;
+ }
+ for (var field in o)
+ {
+ // skip dn and distinguishedName fields;
+ // they're shown in each row anyway.
+ if (field == "dn" || field == "distinguishedName")
+ {
+ continue;
+ }
+
+ // If it's multi-valued (type is an array)...
+ if (typeof(o[field]) == "object")
+ {
+ // ... then add each value with same name
+ var a = o[field];
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i].length > maxLen)
+ {
+ maxLen = a[i].length;
+ }
+ rowData.push( [
+ o["dn"],
+ field,
+ a[i]
+ ] );
+ }
+ }
+ else // single-valued
+ {
+ // ... add its name and value to the table
+ // dataset
+ if (o[field].length > maxLen)
+ {
+ maxLen = o[field].length;
+ }
+ rowData.push( [
+ o["dn"],
+ field,
+ o[field]
+ ] );
+ }
+ }
+
+ // Obtain the table and tableModel objects
+ var table = fsm.getObject("table:search");
+ var tableModel = fsm.getObject("tableModel:search");
+
+ // Adjust the width of the value column based on
+ // maxLen
+ table.setColumnWidth(2, maxLen * 7);
+
+ // Tell the table to use the new data
+ tableModel.setData(rowData);
+ }
+ }
+ else
+ {
+ alert("No rows returned.");
+ }
+};
+
+
+qx.Proto._displayTreeOpenResults = function(module, request)
+{
+ var t;
+ var trs;
+ var child;
+
+ // Obtain the result object
+ var result = request.getUserData("result").data;
+
+ // We also need some of the original parameters passed to the request
+ var parent = request.getUserData("parent");
+ var attributes = request.getUserData("attributes");
+
+ // Any children?
+ if (! result || result["length"] == 0)
+ {
+ // Nope. Allow parent's expand/contract button to be removed
+ parent.setAlwaysShowPlusMinusSymbol(false);
+ return;
+ }
+
+ for (var i = 0; i < result.length; i++)
+ {
+ var name;
+
+ child = result[i];
+
+ // Determine name for new tree row. If first level, use entire
+ // DN. Otherwise, strip off first additional component.
+ if (attributes == "defaultNamingContext")
+ {
+ name = child["defaultNamingContext"];
+ }
+ else
+ {
+ name = child["dn"].split(",")[0];
+ }
+
+ // Build a standard tree row
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard(name);
+
+ // This row is a "folder" (it can have children)
+ t = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.setAlwaysShowPlusMinusSymbol(true);
+
+ // Add this row to its parent
+ parent.add(t);
+ }
+};
+
+
+qx.Proto._displayTreeSelectionChangedResults = function(module, request)
+{
+ var fsm = module.fsm;
+
+ // Obtain the result object
+ var result = request.getUserData("result").data;
+
+ // If we received an empty list, ...
+ if (result == null)
+ {
+ // ... then just clear the attribute/value table.
+ tableModel.setData([ ]);
+ return;
+ }
+
+ // Start with an empty table dataset
+ var rowData = [ ];
+
+ // The result contains a single object: attributes
+ var attributes = result[0];
+
+ // Track the maximum length of the attribute values
+ var maxLen = 0;
+
+ // For each attribute we received...
+ for (var attr in attributes)
+ {
+ // If it's multi-valued (type is an array)...
+ if (typeof(attributes[attr]) == "object")
+ {
+ // ... then add each value with same name
+ var a = attributes[attr];
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i].length > maxLen)
+ {
+ maxLen = a[i].length;
+ }
+ rowData.push([ attr, a[i] ]);
+ }
+ }
+ else // single-valued
+ {
+ // ... add its name and value to the table dataset
+ if (attributes[attr].length > maxLen)
+ {
+ maxLen = attributes[attr].length;
+ }
+ rowData.push([ attr, attributes[attr] ]);
+ }
+ }
+
+ // Obtain the table and tableModel objects
+ var table = fsm.getObject("table:browse");
+ var tableModel = fsm.getObject("tableModel:browse");
+
+ // Adjust the width of the value column based on maxLen
+ table.setColumnWidth(1, maxLen * 7);
+
+ // Add the dataset to the table
+ tableModel.setData(rowData);
+};
+
+
+qx.Proto._clearAllFields = function(module, request)
+{
+ // Obtain the result object
+ var result = request.getUserData("result").data;
+
+ // Retrieve the database handle
+ module.dbHandle = result;
+
+ // In the future, when we support more than one database, we'll want to
+ // clear all fields here. For now, there's no need.
+};
+
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/ldbbrowse/LdbBrowse.js b/webapps/swat/source/class/swat/module/ldbbrowse/LdbBrowse.js
new file mode 100644
index 0000000000..45a4c48930
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/ldbbrowse/LdbBrowse.js
@@ -0,0 +1,52 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat LDB Browser class
+ */
+qx.OO.defineClass("swat.module.ldbbrowse.LdbBrowse",
+ swat.module.AbstractModule,
+function()
+{
+ swat.module.AbstractModule.call(this);
+});
+
+
+/**
+ * Create the module's finite state machine and graphical user interface.
+ *
+ * This function is called the first time a module is actually selected to
+ * appear. Creation of the module's actual FSM and GUI have been deferred
+ * until they were actually needed (now) so we need to create them.
+ *
+ * @param module {swat.module.Module}
+ * The module descriptor for the module.
+ */
+qx.Proto.initialAppear = function(module)
+{
+ // Initial database to open
+ module.dbFile = "sam.ldb";
+
+ // Replace the existing (temporary) finite state machine with the real one
+ swat.module.ldbbrowse.Fsm.getInstance().buildFsm(module);
+
+ // Create the real gui
+ swat.module.ldbbrowse.Gui.getInstance().buildGui(module);
+
+ // Force the global database to be opened
+ var dbName = module.fsm.getObject("dbName");
+ dbName.setSelected(dbName.getList().getFirstChild());
+ dbName.dispatchEvent(new qx.event.type.Event("changeSelection"), true);
+};
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/statistics/Fsm.js b/webapps/swat/source/class/swat/module/statistics/Fsm.js
new file mode 100644
index 0000000000..771044172e
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/statistics/Fsm.js
@@ -0,0 +1,209 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat statistics class finite state machine
+ */
+qx.OO.defineClass("swat.module.statistics.Fsm", swat.module.AbstractModuleFsm,
+function()
+{
+ swat.module.AbstractModuleFsm.call(this);
+});
+
+
+qx.Class._startTimer = function(fsm)
+{
+ // Create a timer instance to expire in a few seconds
+ var timer = new qx.client.Timer(5000);
+ timer.addEventListener("interval", fsm.eventListener, fsm);
+ fsm.addObject("timer", timer);
+ timer.start();
+};
+
+
+qx.Class._stopTimer = function(fsm)
+{
+ // ... then stop the timer. Get the timer object.
+ var timer = fsm.getObject("timer");
+
+ // If it still exists...
+ if (timer)
+ {
+ // ... then dispose of it.
+ timer.dispose();
+ fsm.removeObject("timer");
+ }
+};
+
+
+qx.Proto.buildFsm = function(module)
+{
+ var fsm = module.fsm;
+ var thisClass = this;
+
+ /*
+ * State: Idle
+ *
+ * Actions upon entry
+ * - if returning from RPC, display the result
+ * - start an interval timer to request statistics again in a while
+ *
+ * Transition on:
+ * "interval" on interval_timer
+ */
+ var state = new qx.util.fsm.State(
+ "State_Idle",
+ {
+ "onentry" :
+ function(fsm, state)
+ {
+ // Did we just return from an RPC request?
+ if (fsm.getPreviousState() == "State_AwaitRpcResult")
+ {
+ // Yup. Display the result. We need to get the request object
+ var request = fsm.getObject("swat.module.fsmUtils.request");
+
+ // We don't need the request object to be saved any more
+ fsm.removeObject("swat.module.fsmUtils.request");
+
+ // Display the result
+ var gui = swat.module.statistics.Gui.getInstance();
+ gui.displayData(module, request.getUserData("result"));
+
+ // Dispose of the request
+ request.dispose();
+ request = null;
+
+ // Restart the timer.
+ swat.module.statistics.Fsm._startTimer(fsm);
+ }
+ },
+
+ "onexit" :
+ function(fsm, state)
+ {
+ // If we're not coming right back into this state...
+ if (fsm.getNextState() != "State_Idle")
+ {
+ // ... then stop the timer.
+ swat.module.statistics.Fsm._stopTimer(fsm);
+ }
+ },
+
+ "events" :
+ {
+ // If the timer expires, send a new statistics request
+ "interval" :
+ {
+ "timer" :
+ "Transition_Idle_to_AwaitRpcResult_via_request_statistics"
+ },
+
+ // When we get an appear event, start our timer
+ "appear" :
+ {
+ "swat.module.canvas" :
+ "Transition_Idle_to_Idle_via_appear"
+ },
+
+ // When we get a disappear event, stop our timer
+ "disappear" :
+ {
+ "swat.module.canvas" :
+ "Transition_Idle_to_Idle_via_disappear"
+ }
+ }
+ });
+
+ // Replace the initial Idle state with this one
+ fsm.replaceState(state, true);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "interval" on timer
+ *
+ * Action:
+ * Issue a Get Statistics request
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_request_statistics",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var rpc = fsm.getObject("swat.module.rpc");
+
+ rpc.setServiceName("samba.management");
+ var request = rpc.callAsyncListeners(true, // coalesce failure events
+ "get_statistics",
+ true,
+ true);
+ // Make the request object available to the AwaitRpcResult state
+ fsm.addObject("swat.module.fsmUtils.request", request);
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: Idle to Idle
+ *
+ * Cause: "appear" on canvas
+ *
+ * Action:
+ * Start our timer
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_Idle_via_appear",
+ {
+ "nextState" :
+ "State_Idle",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ swat.module.statistics.Fsm._startTimer(fsm);
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: Idle to Idle
+ *
+ * Cause: "disappear" on canvas
+ *
+ * Action:
+ * Stop our timer
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_Idle_via_disappear",
+ {
+ "nextState" :
+ "State_Idle",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ swat.module.statistics.Fsm._stopTimer(fsm);
+ }
+ });
+ state.addTransition(trans);
+
+ // Add the AwaitRpcResult state and all of its transitions
+ this.addAwaitRpcResultState(module);
+};
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/statistics/Gui.js b/webapps/swat/source/class/swat/module/statistics/Gui.js
new file mode 100644
index 0000000000..777caa7328
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/statistics/Gui.js
@@ -0,0 +1,464 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat statistics class graphical user interface
+ */
+qx.OO.defineClass("swat.module.statistics.Gui", qx.core.Object,
+function()
+{
+ qx.core.Object.call(this);
+});
+
+
+/*
+ * The result of our request for statistics is in this form:
+ *
+ * rpc: Object
+ * status: INACTIVE
+ * smb: Object
+ * tcons: Array
+ * 0: Object
+ * share_name: tmp
+ * last_use_time: 1167186771
+ * client_ip: 127.0.0.1
+ * tid: 10928
+ * connect_time: 1167186757
+ * connections: 1
+ * sessions: Array
+ * 0: Object
+ * auth_time: 1167186757
+ * vuid: 24588
+ * last_use_time: 1167186771
+ * client_ip: 127.0.0.1
+ * connect_time: 1167186757
+ * account_name: Administrator
+ * domain_name: WORKGROUP
+ * status: RUNNING
+ * ldap: Object
+ * status: INACTIVE
+ * wins: Object
+ * status: DISABLED
+ * nbt: Object
+ * status: RUNNING
+ * statistics: Object
+ * total_received: 32
+ * total_sent: 4
+ * query_count: 0
+ * release_count: 0
+ * register_count: 0
+ * kdc: Object
+ * status: INACTIVE
+ * cldap: Object
+ * status: RUNNING
+ */
+
+/**
+ * Build the raw graphical user interface.
+ */
+qx.Proto.buildGui = function(module)
+{
+ var o;
+ var fsm = module.fsm;
+ var canvas = module.canvas;
+
+ canvas.setOverflow("auto");
+
+ // Create a gui object where we'll put each widget handle that has varying
+ // data to be displayed.
+ module.gui = { };
+
+ var addCaptionedText = function(caption, dest)
+ {
+ // Add a row to the destination grid
+ dest.addRow();
+ var row = dest.getRowCount() - 1;
+ dest.setRowHeight(row, 16);
+
+ // Add the caption
+ o = new qx.ui.basic.Label(caption);
+ dest.add(o, 0, row);
+
+ // Add the text field that will contain varying data
+ o = new qx.ui.basic.Label("");
+ dest.add(o, 1, row);
+
+ // Give 'em the varying data label
+ return o;
+ };
+
+ var addGroup = function(legend, top, height, width, left, right, dest)
+ {
+ // Add a groupbox
+ var group = new qx.ui.groupbox.GroupBox(legend);
+ group.setTop(top);
+ if (left >= 0)
+ {
+ group.setLeft(left);
+ }
+ if (right >= 0)
+ {
+ group.setRight(right);
+ }
+ if (height >= 0)
+ {
+ group.setHeight(height);
+ }
+ if (typeof(width) == "string" || width >= 0)
+ {
+ group.setWidth(width);
+ }
+ group.setBackgroundColor("white");
+ group.getLegendObject().setBackgroundColor("white");
+
+ var grid = new qx.ui.layout.GridLayout();
+ grid.setLocation(0, 0);
+ grid.setDimension("100%", "100%");
+ grid.setPadding(0, 0);
+ grid.setRowCount(0);
+ grid.setColumnCount(2);
+ grid.setColumnWidth(0, 100);
+ grid.setColumnWidth(1, 200);
+
+ group.add(grid);
+ dest.add(group);
+
+ return grid;
+ };
+
+ // Add the RPC Service group box and its status
+ var group = addGroup("RPC Service", 40, 60, "46%", 20, -1, canvas);
+ module.gui.rpc =
+ {
+ status : addCaptionedText("Status:", group)
+ };
+
+ // Add the KDC Service group box and its status
+ var group = addGroup("KDC Service", 40, 60, "46%", -1, 20, canvas);
+ module.gui.kdc =
+ {
+ status : addCaptionedText("Status:", group)
+ };
+
+ // Add the LDAP Service group box and its status
+ var group = addGroup("LDAP Service", 120, 60, "46%", 20, -1, canvas);
+ module.gui.ldap =
+ {
+ status : addCaptionedText("Status:", group)
+ };
+
+ // Add the CLDAP Service group box and its status
+ var group = addGroup("CLDAP Service", 120, 60, "46%", -1, 20, canvas);
+ module.gui.cldap =
+ {
+ status : addCaptionedText("Status:", group)
+ };
+
+ // Add the WINS Service group box and its status
+ var group = addGroup("WINS Service", 200, 60, "46%", 20, -1, canvas);
+ module.gui.wins =
+ {
+ status : addCaptionedText("Status:", group)
+ };
+
+ // Add the NBT Service group box and its status, and the statistics
+ var group = addGroup("NBT Service", 200, 140, "46%", -1, 20, canvas);
+ module.gui.nbt =
+ {
+ status : addCaptionedText("Status:", group),
+ total_received : addCaptionedText("Total received:", group),
+ total_sent : addCaptionedText("Total sent:", group),
+ query_count : addCaptionedText("Query count:", group),
+ release_count : addCaptionedText("Release count:", group),
+ register_count : addCaptionedText("Register count:", group)
+ };
+
+ // Add the SMB Service group box (sans grid) and its status
+ var group = new qx.ui.groupbox.GroupBox("SMB Service");
+ group.set({
+ top: 360,
+ height: 400,
+ left: 20,
+ right: 20
+ });
+ group.setBackgroundColor("white");
+ group.getLegendObject().setBackgroundColor("white");
+
+ // Create the Status block
+ o = new qx.ui.basic.Label("Status:");
+ o.set({
+ top : 0,
+ left : 0,
+ width : 100
+ });
+ group.add(o);
+
+ o = new qx.ui.basic.Label("");
+ o.set({
+ top : 0,
+ left : 100,
+ width : 200
+ });
+ group.add(o);
+
+ // Add the status and create the table models for sessions and connections
+ module.gui.smb =
+ {
+ status : o,
+ sessions : new qx.ui.table.SimpleTableModel(),
+ tcons : new qx.ui.table.SimpleTableModel()
+ };
+
+ // Begin the Sessions section
+ o = new qx.ui.basic.Label("Sessions");
+ o.set({
+ top : 20,
+ left : 20
+ });
+ group.add(o);
+
+ // Set column labels
+ var tableModel = module.gui.smb.sessions;
+ tableModel.setColumns([
+ "User",
+ "Client",
+ "Connected at",
+ "Authenticated at",
+ "Last used at",
+ "VUID"
+ ]);
+ tableModel.setData([ ]);
+
+ // Create the table for sessions
+ var table = new qx.ui.table.Table(tableModel);
+ table.set({
+ top : 40,
+ left : 20,
+ right : 20,
+ height : 160
+ });
+ table.setMetaColumnCounts([1, -1]);
+ table.setStatusBarVisible(false);
+ table.setColumnVisibilityButtonVisible(false);
+ table.setColumnWidth(0, 260);
+ table.setColumnWidth(1, 80);
+ table.setColumnWidth(2, 120);
+ table.setColumnWidth(3, 120);
+ table.setColumnWidth(4, 120);
+ table.setColumnWidth(5, 60);
+
+ // Add the table to the groupbox
+ group.add(table);
+ canvas.add(group);
+
+ // Begin the Connections section
+ o = new qx.ui.basic.Label("Connections");
+ o.set({
+ top : 220,
+ left : 20
+ });
+ group.add(o);
+
+ // Create the table model for tcons
+ var tableModel = module.gui.smb.tcons;
+ tableModel.setColumns([
+ "Share",
+ "Client",
+ "Connected at",
+ "Last used at",
+ "TID"
+ ]);
+ tableModel.setData([ ]);
+
+ // Create the table for sessions
+ var table = new qx.ui.table.Table(tableModel);
+ table.set({
+ top : 240,
+ left : 20,
+ right : 20,
+ bottom : 20
+ });
+ table.setMetaColumnCounts([1, -1]);
+ table.setStatusBarVisible(false);
+ table.setColumnVisibilityButtonVisible(false);
+ table.setColumnWidth(0, 260);
+ table.setColumnWidth(1, 80);
+ table.setColumnWidth(2, 120);
+ table.setColumnWidth(3, 120);
+ table.setColumnWidth(4, 60);
+
+ // Add the table to the groupbox
+ group.add(table);
+ canvas.add(group);
+
+};
+
+
+/**
+ * Populate the graphical user interface with the specified data
+ *
+ * @param module {swat.module.Module}
+ * The module descriptor for the module.
+ *
+ * @result {Object}
+ * The result returned by SAMBA to our request for statistics. We display
+ * the data provided by this result.
+ */
+qx.Proto.displayData = function(module, result)
+{
+ var gui = module.gui;
+
+ if (result.type == "failed")
+ {
+ // Have we already put up the FAILED message?
+ if (gui.failed)
+ {
+ // Yup.
+ gui.failed.setDisplay(true);
+ return;
+ }
+
+ // Create a semi-transparent layover o which to display a failure message
+ gui.failed = new qx.ui.layout.CanvasLayout();
+ gui.failed.set({
+ top: 0,
+ bottom: 0,
+ left: 0,
+ right: 0
+ });
+ gui.failed.setBackgroundColor("white");
+ gui.failed.setDisplay(true); // initially displayed
+ gui.failed.setOpacity(0.7); // semi-transparent
+
+ // Add the failure message
+ var style =
+ "color: red;" +
+ "font-size: large;" +
+ "font-weight: bold;";
+ var o = new qx.ui.basic.Label("<span style='" + style + "'>" +
+ "Communication with SAMBA failed!",
+ "</span>");
+ o.set({
+ top : 0,
+ left : 20
+ });
+ gui.failed.add(o);
+
+ // Add the failed layover to the canvas
+ module.canvas.add(gui.failed);
+
+ return;
+ }
+
+ // Successful RPC request.
+ // If the failure message was displayed, we no longer need it.
+ if (gui.failed)
+ {
+ gui.failed.setDisplay(false);
+ }
+
+ // Create a function for formatting dates
+ var dateFormat = function(unixepoch)
+ {
+ var d = new Date(unixepoch * 1000);
+ return (d.getFullYear() + "-" +
+ ("0" + (d.getMonth() + 1)).substr(-2) + "-" +
+ ("0" + d.getDate()).substr(-2) + " " +
+ ("0" + d.getHours()).substr(-2) + ":" +
+ ("0" + d.getMinutes()).substr(-2));
+ }
+
+ // Set the status values
+ gui.rpc.status.setHtml(result.data.rpc.status);
+ gui.kdc.status.setHtml(result.data.kdc.status);
+ gui.ldap.status.setHtml(result.data.ldap.status);
+ gui.cldap.status.setHtml(result.data.cldap.status);
+ gui.wins.status.setHtml(result.data.wins.status);
+ gui.nbt.status.setHtml(result.data.nbt.status);
+ gui.smb.status.setHtml(result.data.smb.status);
+
+ // If the NBT service is running...
+ if (result.data.nbt.status == "RUNNING")
+ {
+ // ... then output the statistics
+ gui.nbt.total_received.setHtml(
+ result.data.nbt.statistics.total_received.toString());
+ gui.nbt.total_sent.setHtml(
+ result.data.nbt.statistics.total_sent.toString());
+ gui.nbt.query_count.setHtml(
+ result.data.nbt.statistics.query_count.toString());
+ gui.nbt.release_count.setHtml(
+ result.data.nbt.statistics.release_count.toString());
+ gui.nbt.register_count.setHtml(
+ result.data.nbt.statistics.register_count.toString());
+ }
+ else
+ {
+ // otherwise, clear the statistics fields
+ gui.nbt.total_received.setHtml("");
+ gui.nbt.total_sent.setHtml("");
+ gui.nbt.query_count.setHtml("");
+ gui.nbt.release_count.setHtml("");
+ gui.nbt.register_count.setHtml("");
+ }
+
+ // Initialize data for sessions list
+ var rowData = [];
+
+ // If there are any sessions...
+ if (result.data.smb.sessions instanceof Array)
+ {
+ // ... then for each session...
+ for (var i = 0; i < result.data.smb.sessions.length; i++)
+ {
+ // ... add its info to the table data
+ var sess = result.data.smb.sessions[i];
+ rowData.push([
+ sess.account_name + "/" + sess.domain_name,
+ sess.client_ip,
+ dateFormat(sess.connect_time),
+ dateFormat(sess.auth_time),
+ dateFormat(sess.last_use_time),
+ sess.vuid.toString()
+ ]);
+ }
+ }
+
+ // Whether there were sessions or not, reset the session table data
+ gui.smb.sessions.setData(rowData);
+
+ // Initialize data for tcons list
+ var rowData = [];
+
+ // If there are any tcons...
+ if (result.data.smb.tcons instanceof Array)
+ {
+ // ... then for each tcon...
+ for (var i = 0; i < result.data.smb.tcons.length; i++)
+ {
+ // ... add its info to the table data
+ var conn = result.data.smb.tcons[i];
+ rowData.push([
+ conn.share_name,
+ conn.client_ip,
+ dateFormat(conn.connect_time),
+ dateFormat(conn.last_use_time),
+ conn.tid.toString()
+ ]);
+ }
+ }
+
+ // Whether there were tcons or not, reset the tcon table data
+ gui.smb.tcons.setData(rowData);
+};
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/class/swat/module/statistics/Statistics.js b/webapps/swat/source/class/swat/module/statistics/Statistics.js
new file mode 100644
index 0000000000..1618ab73c5
--- /dev/null
+++ b/webapps/swat/source/class/swat/module/statistics/Statistics.js
@@ -0,0 +1,44 @@
+/*
+ * Copyright:
+ * (C) 2006 by Derrell Lipman
+ * All rights reserved
+ *
+ * License:
+ * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+
+/**
+ * Swat statistics class
+ */
+qx.OO.defineClass("swat.module.statistics.Statistics",
+ swat.module.AbstractModule,
+function()
+{
+ swat.module.AbstractModule.call(this);
+});
+
+
+/**
+ * Create the module's finite state machine and graphical user interface.
+ *
+ * This function is called the first time a module is actually selected to
+ * appear. Creation of the module's actual FSM and GUI have been deferred
+ * until they were actually needed (now) so we need to create them.
+ *
+ * @param module {swat.module.Module}
+ * The module descriptor for the module.
+ */
+qx.Proto.initialAppear = function(module)
+{
+ // Replace the existing (temporary) finite state machine with the real one
+ swat.module.statistics.Fsm.getInstance().buildFsm(module);
+
+ // Create the real gui
+ swat.module.statistics.Gui.getInstance().buildGui(module);
+};
+
+
+/**
+ * Singleton Instance Getter
+ */
+qx.Class.getInstance = qx.util.Return.returnInstance;
diff --git a/webapps/swat/source/index.html b/webapps/swat/source/index.html
new file mode 100644
index 0000000000..ea7bcfe871
--- /dev/null
+++ b/webapps/swat/source/index.html
@@ -0,0 +1,14 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Swat</title>
+ <script type="text/javascript" src="script/swat.js"></script>
+ </head>
+ <body>
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().setApplication(swat.main.Main);
+
+ </script>
+ </body>
+</html>